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