[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

rjw rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 08:16:22 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 5761adc0aa43cd47df80695a9dcc635ce6076b68
Author: rjw <rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Dec 5 01:05:49 2003 +0000

    JavaScriptCore:
    	LiveConnect:  Moved defaultValue into concrete implementation because
    	more intelligent conversion can be perform with knowledge
    	of the class of the original instance.
    
            Reviewed by Chris.
    
            * bindings/jni/jni_class.cpp:
            (JavaClass::isNumberClass):
            (JavaClass::isBooleanClass):
            (JavaClass::isStringClass):
            * bindings/jni/jni_class.h:
            * bindings/jni/jni_instance.cpp:
            (JavaInstance::defaultValue):
            (JavaInstance::valueOf):
            * bindings/jni/jni_instance.h:
            (Bindings::JavaInstance::javaInstance):
            * bindings/runtime.h:
            * bindings/runtime_object.cpp:
            (RuntimeObjectImp::defaultValue):
    
    Tests:
            Fixed incorrect log of boolean type.
    
            Reviewed by Chris.
    
            * LiveConnect/Blink/test.html:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@5701 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index 756f731..67b6c9d 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,5 +1,27 @@
 2003-12-04  Richard Williamson   <rjw at apple.com>
 
+	LiveConnect:  Moved defaultValue into concrete implementation because
+	more intelligent conversion can be perform with knowledge
+	of the class of the original instance.
+
+        Reviewed by Chris.
+
+        * bindings/jni/jni_class.cpp:
+        (JavaClass::isNumberClass):
+        (JavaClass::isBooleanClass):
+        (JavaClass::isStringClass):
+        * bindings/jni/jni_class.h:
+        * bindings/jni/jni_instance.cpp:
+        (JavaInstance::defaultValue):
+        (JavaInstance::valueOf):
+        * bindings/jni/jni_instance.h:
+        (Bindings::JavaInstance::javaInstance):
+        * bindings/runtime.h:
+        * bindings/runtime_object.cpp:
+        (RuntimeObjectImp::defaultValue):
+
+2003-12-04  Richard Williamson   <rjw at apple.com>
+
 	LiveConnect:  Added support for setting the value of Java
 	fields.
 
diff --git a/JavaScriptCore/bindings/jni/jni_class.cpp b/JavaScriptCore/bindings/jni/jni_class.cpp
index e0a9f17..34446c2 100644
--- a/JavaScriptCore/bindings/jni/jni_class.cpp
+++ b/JavaScriptCore/bindings/jni/jni_class.cpp
@@ -159,3 +159,22 @@ Field *JavaClass::fieldNamed(const char *name) const
     return aField;
 };
 
+bool JavaClass::isNumberClass() const
+{
+    return ((strcmp(_name, "java.lang.Byte") == 0 ||
+             strcmp(_name, "java.lang.Short") == 0 ||
+             strcmp(_name, "java.lang.Integer") == 0 ||
+             strcmp(_name, "java.lang.Long") == 0 ||
+             strcmp(_name, "java.lang.Float") == 0 ||
+             strcmp(_name, "java.lang.Double") == 0) );
+}
+
+bool JavaClass::isBooleanClass() const
+{
+    return strcmp(_name, "java.lang.Boolean") == 0;
+}
+
+bool JavaClass::isStringClass() const
+{
+    return strcmp(_name, "java.lang.String") == 0;
+}
diff --git a/JavaScriptCore/bindings/jni/jni_class.h b/JavaScriptCore/bindings/jni/jni_class.h
index 1932ad5..1c5147f 100644
--- a/JavaScriptCore/bindings/jni/jni_class.h
+++ b/JavaScriptCore/bindings/jni/jni_class.h
@@ -110,6 +110,9 @@ public:
     virtual long numConstructors() const { return _numConstructors; };
     
     void setClassName(const char *n);
+    bool isNumberClass() const;
+    bool isBooleanClass() const;
+    bool isStringClass() const;
     
 private:
     const char *_name;
diff --git a/JavaScriptCore/bindings/jni/jni_instance.cpp b/JavaScriptCore/bindings/jni/jni_instance.cpp
index 1b20f39..8d9d12c 100644
--- a/JavaScriptCore/bindings/jni/jni_instance.cpp
+++ b/JavaScriptCore/bindings/jni/jni_instance.cpp
@@ -172,6 +172,38 @@ Value JavaInstance::invokeMethod (KJS::ExecState *exec, const Method *method, co
 }
 
 
+KJS::Value JavaInstance::defaultValue (KJS::Type hint) const
+{
+    if (hint == StringType) {
+        return stringValue();
+    }
+    else if (hint == NumberType) {
+        return numberValue();
+    }
+    else if (hint == BooleanType) {
+        return booleanValue();
+    }
+    else if (hint == UnspecifiedType) {
+        JavaClass *aClass = static_cast<JavaClass*>(getClass());
+        if (aClass->isStringClass()) {
+            return stringValue();
+        }
+        else if (aClass->isNumberClass()) {
+            return numberValue();
+        }
+        else if (aClass->isBooleanClass()) {
+            return booleanValue();
+        }
+    }
+    
+    return valueOf();
+}
+
+KJS::Value JavaInstance::valueOf() const 
+{
+    return stringValue();
+};
+
 JObjectWrapper::JObjectWrapper(jobject instance)
 {
     _ref = 1;
diff --git a/JavaScriptCore/bindings/jni/jni_instance.h b/JavaScriptCore/bindings/jni/jni_instance.h
index b63659e..408c08e 100644
--- a/JavaScriptCore/bindings/jni/jni_instance.h
+++ b/JavaScriptCore/bindings/jni/jni_instance.h
@@ -83,13 +83,16 @@ public:
         return *this;
     };
 
-    virtual KJS::Value booleanValue() const;
-    virtual KJS::Value numberValue() const;
-    virtual KJS::Value stringValue() const;
-    
-    jobject javaInstance() const { return _instance->_instance; }
+    virtual KJS::Value valueOf() const;
+    virtual KJS::Value defaultValue (KJS::Type hint) const;
 
     virtual KJS::Value invokeMethod (KJS::ExecState *exec, const Method *method, const KJS::List &args);
+
+    jobject javaInstance() const { return _instance->_instance; }
+    
+    KJS::Value stringValue() const;
+    KJS::Value numberValue() const;
+    KJS::Value booleanValue() const;
     
 private:
     JObjectWrapper *_instance;
diff --git a/JavaScriptCore/bindings/runtime.h b/JavaScriptCore/bindings/runtime.h
index b6ef95c..a063d86 100644
--- a/JavaScriptCore/bindings/runtime.h
+++ b/JavaScriptCore/bindings/runtime.h
@@ -111,9 +111,8 @@ public:
     
     virtual KJS::Value invokeMethod (KJS::ExecState *exec, const Method *method, const KJS::List &args) = 0;
     
-    virtual KJS::Value booleanValue() const = 0;
-    virtual KJS::Value numberValue() const = 0;
-    virtual KJS::Value stringValue() const = 0;
+    virtual KJS::Value defaultValue (KJS::Type hint) const = 0;
+    
     virtual KJS::Value valueOf() const { return KJS::String(getClass()->name()); };
     
     virtual ~Instance() {};
diff --git a/JavaScriptCore/bindings/runtime_object.cpp b/JavaScriptCore/bindings/runtime_object.cpp
index c880648..708f0ee 100644
--- a/JavaScriptCore/bindings/runtime_object.cpp
+++ b/JavaScriptCore/bindings/runtime_object.cpp
@@ -115,21 +115,7 @@ bool RuntimeObjectImp::deleteProperty(ExecState *exec,
 
 Value RuntimeObjectImp::defaultValue(ExecState *exec, Type hint) const
 {
-    // FIXME:  Convert to appropriate type based on hint.
-    // If UnspecifiedType should only convert to string if
-    // native class is a string.  
-    // FIXME  defaultValue should move to Instance.
-    if (hint == StringType || hint == UnspecifiedType) {
-        return getInternalInstance()->stringValue();
-    }
-    else if (hint == NumberType) {
-        return getInternalInstance()->numberValue();
-    }
-    else if (hint == BooleanType) {
-        return getInternalInstance()->booleanValue();
-    }
-    
-    return getInternalInstance()->valueOf();
+    return getInternalInstance()->defaultValue(hint);
 }
     
 void RuntimeObjectImp::_initializeClassInfoFromInstance()

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list