summaryrefslogtreecommitdiffstats
path: root/WebCore
diff options
context:
space:
mode:
authorKristian Monsen <kristianm@google.com>2011-02-17 16:43:20 +0000
committerKristian Monsen <kristianm@google.com>2011-03-08 13:54:10 +0000
commitdeb796f509e2ad13b4ef4c01b1a1e707b4e762ee (patch)
tree6a9931d7ea8297ecdc85324bd27b712d6e7ee34c /WebCore
parent24b320d351369a76f0bf7ac2bad37f5dfd4681cd (diff)
downloadexternal_webkit-deb796f509e2ad13b4ef4c01b1a1e707b4e762ee.zip
external_webkit-deb796f509e2ad13b4ef4c01b1a1e707b4e762ee.tar.gz
external_webkit-deb796f509e2ad13b4ef4c01b1a1e707b4e762ee.tar.bz2
Fix for bug 3324285 jsc::bindings::convertValueToNPVariant fails to findroot() and passes objects as npvariant_void
Also trying lexicalGlobalObject as root object, the comment for lexicalGlobalObject says: // Global object in which the currently executing code was defined. // Differs from dynamicGlobalObject() during function calls across web browser frames. I'm guessing that is the case here. Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=55216 Change-Id: I61b3df93261e3688f022cde058845b1e3dfedb38
Diffstat (limited to 'WebCore')
-rw-r--r--WebCore/bridge/c/c_utility.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/WebCore/bridge/c/c_utility.cpp b/WebCore/bridge/c/c_utility.cpp
index e786896..ea970eb 100644
--- a/WebCore/bridge/c/c_utility.cpp
+++ b/WebCore/bridge/c/c_utility.cpp
@@ -94,9 +94,15 @@ void convertValueToNPVariant(ExecState* exec, JSValue value, NPVariant* result)
OBJECT_TO_NPVARIANT(obj, *result);
}
} else {
+#ifdef ANDROID
+ RootObject* rootObject = findRootObject(exec->dynamicGlobalObject());
+ if (!rootObject)
+ rootObject = findRootObject(exec->lexicalGlobalObject());
+#else
JSGlobalObject* globalObject = exec->dynamicGlobalObject();
RootObject* rootObject = findRootObject(globalObject);
+#endif
if (rootObject) {
NPObject* npObject = _NPN_CreateScriptObject(0, object, rootObject);
OBJECT_TO_NPVARIANT(npObject, *result);