Title: [94277] trunk/Source/WebKit/chromium
Revision
94277
Author
[email protected]
Date
2011-09-01 00:00:02 -0700 (Thu, 01 Sep 2011)

Log Message

Add pass-throughs for NPObject/v8::Value marshalling to WebBindings
https://bugs.webkit.org/show_bug.cgi?id=67302

Patch by Greg Billock <[email protected]> on 2011-08-31
Reviewed by Darin Fisher.

* public/WebBindings.h:
* src/WebBindings.cpp:
(WebKit::WebBindings::toNPVariant):
(WebKit::WebBindings::toV8Value):
* src/WebSerializedScriptValue.cpp:
(WebKit::WebSerializedScriptValue::serialize):

Modified Paths

Diff

Modified: trunk/Source/WebKit/chromium/ChangeLog (94276 => 94277)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-09-01 06:29:37 UTC (rev 94276)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-09-01 07:00:02 UTC (rev 94277)
@@ -1,3 +1,17 @@
+2011-08-31  Greg Billock  <[email protected]>
+
+        Add pass-throughs for NPObject/v8::Value marshalling to WebBindings
+        https://bugs.webkit.org/show_bug.cgi?id=67302
+
+        Reviewed by Darin Fisher.
+
+        * public/WebBindings.h:
+        * src/WebBindings.cpp:
+        (WebKit::WebBindings::toNPVariant):
+        (WebKit::WebBindings::toV8Value):
+        * src/WebSerializedScriptValue.cpp:
+        (WebKit::WebSerializedScriptValue::serialize):
+
 2011-08-31  Adam Barth  <[email protected]>
 
         [Chromium] Rename PlatformBridge to PlatformSupport

Modified: trunk/Source/WebKit/chromium/public/WebBindings.h (94276 => 94277)


--- trunk/Source/WebKit/chromium/public/WebBindings.h	2011-09-01 06:29:37 UTC (rev 94276)
+++ trunk/Source/WebKit/chromium/public/WebBindings.h	2011-09-01 07:00:02 UTC (rev 94277)
@@ -36,6 +36,14 @@
 #include "WebVector.h"
 #include <bindings/npruntime.h>
 
+#if WEBKIT_USING_V8
+namespace v8 {
+class Value;
+template <class T> class Handle;
+template <class T> class Local;
+}
+#endif
+
 namespace WebKit {
 
 class WebArrayBufferView;
@@ -154,6 +162,12 @@
     // operating on a NPObject.
     WEBKIT_EXPORT static void pushExceptionHandler(ExceptionHandler, void* data);
     WEBKIT_EXPORT static void popExceptionHandler();
+
+#if WEBKIT_USING_V8
+    // Conversion utilities to/from V8 native objects and NPVariant wrappers.
+    WEBKIT_EXPORT static void toNPVariant(v8::Local<v8::Value>, NPObject* root, NPVariant* result);
+    WEBKIT_EXPORT static v8::Handle<v8::Value> toV8Value(const NPVariant*);
+#endif
 };
 
 } // namespace WebKit

Modified: trunk/Source/WebKit/chromium/src/WebBindings.cpp (94276 => 94277)


--- trunk/Source/WebKit/chromium/src/WebBindings.cpp	2011-09-01 06:29:37 UTC (rev 94276)
+++ trunk/Source/WebKit/chromium/src/WebBindings.cpp	2011-09-01 07:00:02 UTC (rev 94277)
@@ -36,6 +36,7 @@
 
 #if USE(V8)
 #include "ArrayBufferView.h"
+#include "DOMWindow.h"
 #include "NPV8Object.h"  // for PrivateIdentifier
 #include "Range.h"
 #include "V8ArrayBufferView.h"
@@ -332,4 +333,25 @@
     WebCore::popExceptionHandler();
 }
 
+#if WEBKIT_USING_V8
+void WebBindings::toNPVariant(v8::Local<v8::Value> object, NPObject* root, NPVariant* result)
+{
+    WebCore::convertV8ObjectToNPVariant(object, root, result);
+}
+
+v8::Handle<v8::Value> WebBindings::toV8Value(const NPVariant* variant)
+{
+    if (variant->type == NPVariantType_Object) {
+        NPObject* object = NPVARIANT_TO_OBJECT(*variant);
+        if (object->_class != npScriptObjectClass)
+            return v8::Undefined();
+        V8NPObject* v8Object = reinterpret_cast<V8NPObject*>(object);
+        return convertNPVariantToV8Object(variant, v8Object->rootObject->frame()->script()->windowScriptNPObject());
+    }
+    // Safe to pass 0 since we have checked the script object class to make sure the
+    // argument is a primitive v8 type.
+    return convertNPVariantToV8Object(variant, 0);
+}
+#endif
+
 } // namespace WebKit

Modified: trunk/Source/WebKit/chromium/src/WebSerializedScriptValue.cpp (94276 => 94277)


--- trunk/Source/WebKit/chromium/src/WebSerializedScriptValue.cpp	2011-09-01 06:29:37 UTC (rev 94276)
+++ trunk/Source/WebKit/chromium/src/WebSerializedScriptValue.cpp	2011-09-01 07:00:02 UTC (rev 94277)
@@ -47,10 +47,10 @@
 WebSerializedScriptValue WebSerializedScriptValue::serialize(v8::Handle<v8::Value> value)
 {
     bool didThrow;
-    WebSerializedScriptValue v = SerializedScriptValue::create(value, didThrow);
+    WebSerializedScriptValue serializedValue = SerializedScriptValue::create(value, didThrow);
     if (didThrow)
-      return createInvalid();
-    return v;
+        return createInvalid();
+    return serializedValue;
 }
 #endif
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to