Reviewed by Darin.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 24 Mar 2006 07:15:40 +0000 (07:15 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 24 Mar 2006 07:15:40 +0000 (07:15 +0000)
        - JSObject in LiveConnect not working.
        http://bugzilla.opendarwin.org/show_bug.cgi?id=7917

        * bindings/jni_jsobject.cpp:
        (JavaJSObject::convertJObjectToValue): Was trying to retrieve the native pointer from the wrong base
        class, and the GetFieldID was using the wrong signature.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@13468 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/bindings/jni/jni_jsobject.cpp

index 50bb9ae79bf8cf985a7d2a9b41dade1723e51b65..becec0c48f3fb75c9e794266e706ad0705634f61 100644 (file)
@@ -1,3 +1,14 @@
+2006-03-23  David Carson <dacarson@gmail.com>
+
+        Reviewed by Darin.
+        
+        - JSObject in LiveConnect not working.
+        http://bugzilla.opendarwin.org/show_bug.cgi?id=7917
+
+        * bindings/jni_jsobject.cpp:
+        (JavaJSObject::convertJObjectToValue): Was trying to retrieve the native pointer from the wrong base
+        class, and the GetFieldID was using the wrong signature.
+
 2006-03-23  Darin Adler  <darin@apple.com>
 
         Reviewed by Maciej.
index 0b7283c14fed64d600ab73e227e99ac060c94f1d..d49e360900ab154f994281ad2d4e552c998e1dca 100644 (file)
@@ -405,12 +405,15 @@ JSValue *JavaJSObject::convertJObjectToValue (jobject theObject) const
     // figure 22-4.
     jobject classOfInstance = callJNIObjectMethod(theObject, "getClass", "()Ljava/lang/Class;");
     jstring className = (jstring)callJNIObjectMethod(classOfInstance, "getName", "()Ljava/lang/String;");
-        
-    if (strcmp(Bindings::JavaString(className).UTF8String(), "netscape.javascript.JSObject") == 0) {
+    
+    // Only the sun.plugin.javascript.webkit.JSObject has a member called nativeJSObject. This class is
+    // created above to wrap internal browser objects. The constructor of this class takes the native
+    // pointer and stores it in this object, so that it can be retrieved below.
+    if (strcmp(Bindings::JavaString(className).UTF8String(), "sun.plugin.javascript.webkit.JSObject") == 0) {
         // Pull the nativeJSObject value from the Java instance.  This is a
         // pointer to the JSObject.
         JNIEnv *env = getJNIEnv();
-        jfieldID fieldID = env->GetFieldID((jclass)classOfInstance, "nativeJSObject", "int");
+        jfieldID fieldID = env->GetFieldID((jclass)classOfInstance, "nativeJSObject", "J");
         if (fieldID == NULL) {
             return jsUndefined();
         }