Title: [114319] trunk/Source/WebCore
Revision
114319
Author
commit-qu...@webkit.org
Date
2012-04-16 16:50:37 -0700 (Mon, 16 Apr 2012)

Log Message

Add V8 code generation support for MessagePortArray attributes.
https://bugs.webkit.org/show_bug.cgi?id=83943

Patch by Greg Billock <gbill...@google.com> on 2012-04-16
Reviewed by Kentaro Hara.

* bindings/scripts/CodeGeneratorV8.pm:
(GenerateNormalAttrGetter):
* bindings/scripts/IDLAttributes.txt:
* bindings/scripts/test/CPP/WebDOMTestSerializedScriptValueInterface.cpp:
(WebDOMTestSerializedScriptValueInterface::ports):
* bindings/scripts/test/CPP/WebDOMTestSerializedScriptValueInterface.h:
(WebDOMTestSerializedScriptValueInterface):
* bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.cpp:
(webkit_dom_test_serialized_script_value_interface_get_property):
(webkit_dom_test_serialized_script_value_interface_class_init):
(webkit_dom_test_serialized_script_value_interface_get_ports):
* bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.h:
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore):
(WebCore::jsTestSerializedScriptValueInterfacePorts):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
(WebCore):
* bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.h:
* bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.mm:
(-[DOMTestSerializedScriptValueInterface ports]):
* bindings/scripts/test/TestSerializedScriptValueInterface.idl:
* bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp:
(WebCore::TestSerializedScriptValueInterfaceInternal::portsAttrGetter):
(TestSerializedScriptValueInterfaceInternal):
(WebCore):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (114318 => 114319)


--- trunk/Source/WebCore/ChangeLog	2012-04-16 23:45:21 UTC (rev 114318)
+++ trunk/Source/WebCore/ChangeLog	2012-04-16 23:50:37 UTC (rev 114319)
@@ -1,3 +1,36 @@
+2012-04-16  Greg Billock  <gbill...@google.com>
+
+        Add V8 code generation support for MessagePortArray attributes.
+        https://bugs.webkit.org/show_bug.cgi?id=83943
+
+        Reviewed by Kentaro Hara.
+
+        * bindings/scripts/CodeGeneratorV8.pm:
+        (GenerateNormalAttrGetter):
+        * bindings/scripts/IDLAttributes.txt:
+        * bindings/scripts/test/CPP/WebDOMTestSerializedScriptValueInterface.cpp:
+        (WebDOMTestSerializedScriptValueInterface::ports):
+        * bindings/scripts/test/CPP/WebDOMTestSerializedScriptValueInterface.h:
+        (WebDOMTestSerializedScriptValueInterface):
+        * bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.cpp:
+        (webkit_dom_test_serialized_script_value_interface_get_property):
+        (webkit_dom_test_serialized_script_value_interface_class_init):
+        (webkit_dom_test_serialized_script_value_interface_get_ports):
+        * bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.h:
+        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
+        (WebCore):
+        (WebCore::jsTestSerializedScriptValueInterfacePorts):
+        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
+        (WebCore):
+        * bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.h:
+        * bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.mm:
+        (-[DOMTestSerializedScriptValueInterface ports]):
+        * bindings/scripts/test/TestSerializedScriptValueInterface.idl:
+        * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp:
+        (WebCore::TestSerializedScriptValueInterfaceInternal::portsAttrGetter):
+        (TestSerializedScriptValueInterfaceInternal):
+        (WebCore):
+
 2012-04-16  Xiaomei Ji  <x...@chromium.org>
 
         platform/graphics/skia/GlyphPageTreeNodeSkia.cpp mis-use 'continue' for 'break'

Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm (114318 => 114319)


--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm	2012-04-16 23:45:21 UTC (rev 114318)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm	2012-04-16 23:50:37 UTC (rev 114319)
@@ -910,6 +910,7 @@
     # the newly created wrapper into an internal field of the holder object.
     if (!IsNodeSubType($dataNode) && $attrName ne "self" && (IsWrapperType($returnType) && ($attribute->type =~ /^readonly/ || $attribute->signature->extendedAttributes->{"Replaceable"})
         && $returnType ne "EventTarget" && $returnType ne "SerializedScriptValue" && $returnType ne "DOMWindow" 
+        && $returnType ne "MessagePortArray"
         && $returnType !~ /SVG/ && $returnType !~ /HTML/ && !IsDOMNodeType($returnType))) {
 
         my $arrayType = $codeGenerator->GetArrayType($returnType);
@@ -984,6 +985,20 @@
         } else {
             push(@implContentDecls, "    return toV8(WTF::getPtr(${tearOffType}::create($result)));\n");
         }
+    } elsif ($attribute->signature->type eq "MessagePortArray") {
+        AddToImplIncludes("V8Array.h");
+        AddToImplIncludes("MessagePort.h");
+        my $getterFunc = $codeGenerator->WK_lcfirst($attribute->signature->name);
+        push(@implContentDecls, <<END);
+    MessagePortArray* ports = imp->${getterFunc}();
+    if (!ports)
+        return v8::Array::New(0);
+    MessagePortArray portsCopy(*ports);
+    v8::Local<v8::Array> portArray = v8::Array::New(portsCopy.size());
+    for (size_t i = 0; i < portsCopy.size(); ++i)
+        portArray->Set(v8::Integer::New(i), toV8(portsCopy[i].get()));
+    return portArray;
+END
     } else {
         if ($attribute->signature->type eq "SerializedScriptValue" && $attrExt->{"CachedAttribute"}) {
             my $getterFunc = $codeGenerator->WK_lcfirst($attribute->signature->name);

Modified: trunk/Source/WebCore/bindings/scripts/test/CPP/WebDOMTestSerializedScriptValueInterface.cpp (114318 => 114319)


--- trunk/Source/WebCore/bindings/scripts/test/CPP/WebDOMTestSerializedScriptValueInterface.cpp	2012-04-16 23:45:21 UTC (rev 114318)
+++ trunk/Source/WebCore/bindings/scripts/test/CPP/WebDOMTestSerializedScriptValueInterface.cpp	2012-04-16 23:50:37 UTC (rev 114319)
@@ -25,9 +25,11 @@
 #include "WebDOMTestSerializedScriptValueInterface.h"
 
 #include "Array.h"
+#include "MessagePortArray.h"
 #include "SerializedScriptValue.h"
 #include "TestSerializedScriptValueInterface.h"
 #include "WebDOMArray.h"
+#include "WebDOMMessagePortArray.h"
 #include "WebExceptionHandler.h"
 #include <wtf/GetPtr.h>
 #include <wtf/RefPtr.h>
@@ -117,6 +119,14 @@
     impl()->setCachedValue(WebCore::SerializedScriptValue::create(WTF::String(newCachedValue)));
 }
 
+WebDOMMessagePortArray WebDOMTestSerializedScriptValueInterface::ports() const
+{
+    if (!impl())
+        return WebDOMMessagePortArray();
+
+    return toWebKit(WTF::getPtr(impl()->ports()));
+}
+
 WebDOMString WebDOMTestSerializedScriptValueInterface::cachedReadonlyValue() const
 {
     if (!impl())

Modified: trunk/Source/WebCore/bindings/scripts/test/CPP/WebDOMTestSerializedScriptValueInterface.h (114318 => 114319)


--- trunk/Source/WebCore/bindings/scripts/test/CPP/WebDOMTestSerializedScriptValueInterface.h	2012-04-16 23:45:21 UTC (rev 114318)
+++ trunk/Source/WebCore/bindings/scripts/test/CPP/WebDOMTestSerializedScriptValueInterface.h	2012-04-16 23:50:37 UTC (rev 114319)
@@ -33,6 +33,7 @@
 };
 
 class WebDOMArray;
+class WebDOMMessagePortArray;
 class WebDOMString;
 
 class WebDOMTestSerializedScriptValueInterface : public WebDOMObject {
@@ -48,6 +49,7 @@
     WebDOMString readonlyValue() const;
     WebDOMString cachedValue() const;
     void setCachedValue(const WebDOMString&);
+    WebDOMMessagePortArray ports() const;
     WebDOMString cachedReadonlyValue() const;
 
     void acceptTransferList(const WebDOMString& data, const WebDOMArray& transferList);

Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.cpp (114318 => 114319)


--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.cpp	2012-04-16 23:45:21 UTC (rev 114318)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.cpp	2012-04-16 23:50:37 UTC (rev 114319)
@@ -26,12 +26,15 @@
 #include "DOMObjectCache.h"
 #include "ExceptionCode.h"
 #include "JSMainThreadExecState.h"
+#include "MessagePortArray.h"
 #include "SerializedScriptValue.h"
 #include "TestSerializedScriptValueInterface.h"
 #include "WebKitDOMBinding.h"
 #include "gobject/ConvertToUTF8String.h"
 #include "webkit/WebKitDOMArray.h"
 #include "webkit/WebKitDOMArrayPrivate.h"
+#include "webkit/WebKitDOMMessagePortArray.h"
+#include "webkit/WebKitDOMMessagePortArrayPrivate.h"
 #include "webkit/WebKitDOMSerializedScriptValue.h"
 #include "webkit/WebKitDOMSerializedScriptValuePrivate.h"
 #include "webkit/WebKitDOMTestSerializedScriptValueInterfacePrivate.h"
@@ -86,6 +89,7 @@
     PROP_VALUE,
     PROP_READONLY_VALUE,
     PROP_CACHED_VALUE,
+    PROP_PORTS,
     PROP_CACHED_READONLY_VALUE,
 };
 
@@ -139,6 +143,11 @@
         g_value_set_object(value, WebKit::kit(ptr.get()));
         break;
     }
+    case PROP_PORTS: {
+        RefPtr<WebCore::MessagePortArray> ptr = coreSelf->ports();
+        g_value_set_object(value, WebKit::kit(ptr.get()));
+        break;
+    }
     case PROP_CACHED_READONLY_VALUE: {
         RefPtr<WebCore::SerializedScriptValue> ptr = coreSelf->cachedReadonlyValue();
         g_value_set_object(value, WebKit::kit(ptr.get()));
@@ -188,6 +197,13 @@
                                                            WEBKIT_TYPE_DOM_SERIALIZED_SCRIPT_VALUE, /* gobject type */
                                                            WEBKIT_PARAM_READWRITE));
     g_object_class_install_property(gobjectClass,
+                                    PROP_PORTS,
+                                    g_param_spec_object("ports", /* name */
+                                                           "test_serialized_script_value_interface_ports", /* short description */
+                                                           "read-only  WebKitDOMMessagePortArray* TestSerializedScriptValueInterface.ports", /* longer - could do with some extra doc stuff here */
+                                                           WEBKIT_TYPE_DOM_MESSAGE_PORT_ARRAY, /* gobject type */
+                                                           WEBKIT_PARAM_READABLE));
+    g_object_class_install_property(gobjectClass,
                                     PROP_CACHED_READONLY_VALUE,
                                     g_param_spec_object("cached-readonly-value", /* name */
                                                            "test_serialized_script_value_interface_cached-readonly-value", /* short description */
@@ -357,6 +373,23 @@
 #endif /* ENABLE(Condition1) || ENABLE(Condition2) */
 }
 
+WebKitDOMMessagePortArray*
+webkit_dom_test_serialized_script_value_interface_get_ports(WebKitDOMTestSerializedScriptValueInterface* self)
+{
+#if ENABLE(Condition1) || ENABLE(Condition2)
+    g_return_val_if_fail(self, 0);
+    WebCore::JSMainThreadNullState state;
+    WebCore::TestSerializedScriptValueInterface* item = WebKit::core(self);
+    RefPtr<WebCore::MessagePortArray> gobjectResult = WTF::getPtr(item->ports());
+    WebKitDOMMessagePortArray* result = WebKit::kit(gobjectResult.get());
+    return result;
+#else
+    WEBKIT_WARN_FEATURE_NOT_PRESENT("Condition1")
+    WEBKIT_WARN_FEATURE_NOT_PRESENT("Condition2")
+    return 0;
+#endif /* ENABLE(Condition1) || ENABLE(Condition2) */
+}
+
 WebKitDOMSerializedScriptValue*
 webkit_dom_test_serialized_script_value_interface_get_cached_readonly_value(WebKitDOMTestSerializedScriptValueInterface* self)
 {

Modified: trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.h (114318 => 114319)


--- trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.h	2012-04-16 23:45:21 UTC (rev 114318)
+++ trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.h	2012-04-16 23:50:37 UTC (rev 114319)
@@ -124,6 +124,16 @@
 webkit_dom_test_serialized_script_value_interface_set_cached_value(WebKitDOMTestSerializedScriptValueInterface* self, WebKitDOMSerializedScriptValue* value);
 
 /**
+ * webkit_dom_test_serialized_script_value_interface_get_ports:
+ * @self: A #WebKitDOMTestSerializedScriptValueInterface
+ *
+ * Returns: (transfer none):
+ *
+**/
+WEBKIT_API WebKitDOMMessagePortArray*
+webkit_dom_test_serialized_script_value_interface_get_ports(WebKitDOMTestSerializedScriptValueInterface* self);
+
+/**
  * webkit_dom_test_serialized_script_value_interface_get_cached_readonly_value:
  * @self: A #WebKitDOMTestSerializedScriptValueInterface
  *

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp (114318 => 114319)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp	2012-04-16 23:45:21 UTC (rev 114318)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp	2012-04-16 23:50:37 UTC (rev 114319)
@@ -27,6 +27,8 @@
 #include "ExceptionCode.h"
 #include "JSArray.h"
 #include "JSDOMBinding.h"
+#include "JSMessagePortArray.h"
+#include "MessagePortArray.h"
 #include "SerializedScriptValue.h"
 #include "TestSerializedScriptValueInterface.h"
 #include <runtime/Error.h>
@@ -44,6 +46,7 @@
     { "value", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceValue), (intptr_t)setJSTestSerializedScriptValueInterfaceValue, NoIntrinsic },
     { "readonlyValue", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceReadonlyValue), (intptr_t)0, NoIntrinsic },
     { "cachedValue", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceCachedValue), (intptr_t)setJSTestSerializedScriptValueInterfaceCachedValue, NoIntrinsic },
+    { "ports", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfacePorts), (intptr_t)0, NoIntrinsic },
     { "cachedReadonlyValue", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceCachedReadonlyValue), (intptr_t)0, NoIntrinsic },
     { "constructor", DontEnum | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceConstructor), (intptr_t)0, NoIntrinsic },
     { 0, 0, 0, 0, NoIntrinsic }
@@ -213,6 +216,16 @@
 }
 
 
+JSValue jsTestSerializedScriptValueInterfacePorts(ExecState* exec, JSValue slotBase, const Identifier&)
+{
+    JSTestSerializedScriptValueInterface* castedThis = jsCast<JSTestSerializedScriptValueInterface*>(asObject(slotBase));
+    UNUSED_PARAM(exec);
+    TestSerializedScriptValueInterface* impl = static_cast<TestSerializedScriptValueInterface*>(castedThis->impl());
+    JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl->ports()));
+    return result;
+}
+
+
 JSValue jsTestSerializedScriptValueInterfaceCachedReadonlyValue(ExecState* exec, JSValue slotBase, const Identifier&)
 {
     JSTestSerializedScriptValueInterface* castedThis = jsCast<JSTestSerializedScriptValueInterface*>(asObject(slotBase));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h (114318 => 114319)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h	2012-04-16 23:45:21 UTC (rev 114318)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h	2012-04-16 23:50:37 UTC (rev 114319)
@@ -154,6 +154,7 @@
 JSC::JSValue jsTestSerializedScriptValueInterfaceReadonlyValue(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
 JSC::JSValue jsTestSerializedScriptValueInterfaceCachedValue(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
 void setJSTestSerializedScriptValueInterfaceCachedValue(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
+JSC::JSValue jsTestSerializedScriptValueInterfacePorts(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
 JSC::JSValue jsTestSerializedScriptValueInterfaceCachedReadonlyValue(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
 JSC::JSValue jsTestSerializedScriptValueInterfaceConstructor(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
 

Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.h (114318 => 114319)


--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.h	2012-04-16 23:45:21 UTC (rev 114318)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.h	2012-04-16 23:50:37 UTC (rev 114319)
@@ -29,6 +29,7 @@
 #if WEBKIT_VERSION_MAX_ALLOWED >= WEBKIT_VERSION_LATEST
 
 @class DOMArray;
+@class DOMMessagePortArray;
 @class NSString;
 
 @interface DOMTestSerializedScriptValueInterface : DOMObject
@@ -37,6 +38,7 @@
 - (NSString *)readonlyValue;
 - (NSString *)cachedValue;
 - (void)setCachedValue:(NSString *)newCachedValue;
+- (DOMMessagePortArray *)ports;
 - (NSString *)cachedReadonlyValue;
 - (void)acceptTransferList:(NSString *)data transferList:(DOMArray *)transferList;
 - (void)multiTransferList:(NSString *)first tx:(DOMArray *)tx second:(NSString *)second txx:(DOMArray *)txx;

Modified: trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.mm (114318 => 114319)


--- trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.mm	2012-04-16 23:45:21 UTC (rev 114318)
+++ trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.mm	2012-04-16 23:50:37 UTC (rev 114319)
@@ -38,11 +38,13 @@
 #import "DOMCSSRuleInternal.h"
 #import "DOMCSSValueInternal.h"
 #import "DOMEventInternal.h"
+#import "DOMMessagePortArrayInternal.h"
 #import "DOMNodeInternal.h"
 #import "DOMStyleSheetInternal.h"
 #import "DOMTestSerializedScriptValueInterfaceInternal.h"
 #import "ExceptionHandlers.h"
 #import "JSMainThreadExecState.h"
+#import "MessagePortArray.h"
 #import "SerializedScriptValue.h"
 #import "TestSerializedScriptValueInterface.h"
 #import "ThreadCheck.h"
@@ -105,6 +107,12 @@
     IMPL->setCachedValue(WebCore::SerializedScriptValue::create(WTF::String(newCachedValue)));
 }
 
+- (DOMMessagePortArray *)ports
+{
+    WebCore::JSMainThreadNullState state;
+    return kit(WTF::getPtr(IMPL->ports()));
+}
+
 - (NSString *)cachedReadonlyValue
 {
     WebCore::JSMainThreadNullState state;

Modified: trunk/Source/WebCore/bindings/scripts/test/TestSerializedScriptValueInterface.idl (114318 => 114319)


--- trunk/Source/WebCore/bindings/scripts/test/TestSerializedScriptValueInterface.idl	2012-04-16 23:45:21 UTC (rev 114318)
+++ trunk/Source/WebCore/bindings/scripts/test/TestSerializedScriptValueInterface.idl	2012-04-16 23:50:37 UTC (rev 114319)
@@ -34,6 +34,7 @@
         attribute SerializedScriptValue value;
         readonly attribute SerializedScriptValue readonlyValue;
         attribute [CachedAttribute] SerializedScriptValue cachedValue;
+        readonly attribute MessagePortArray ports;
         readonly attribute [CachedAttribute] SerializedScriptValue cachedReadonlyValue;
         void acceptTransferList(in [TransferList=transferList] SerializedScriptValue data, in [Optional] Array transferList);
         void multiTransferList(in [Optional, TransferList=tx] SerializedScriptValue first, in [Optional] Array tx, in [Optional, TransferList=txx] SerializedScriptValue second, in [Optional] Array txx);

Modified: trunk/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp (114318 => 114319)


--- trunk/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp	2012-04-16 23:45:21 UTC (rev 114318)
+++ trunk/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp	2012-04-16 23:50:37 UTC (rev 114319)
@@ -27,6 +27,7 @@
 #include "MessagePort.h"
 #include "RuntimeEnabledFeatures.h"
 #include "SerializedScriptValue.h"
+#include "V8Array.h"
 #include "V8Binding.h"
 #include "V8BindingMacros.h"
 #include "V8BindingState.h"
@@ -91,6 +92,20 @@
     return;
 }
 
+static v8::Handle<v8::Value> portsAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
+{
+    INC_STATS("DOM.TestSerializedScriptValueInterface.ports._get");
+    TestSerializedScriptValueInterface* imp = V8TestSerializedScriptValueInterface::toNative(info.Holder());
+    MessagePortArray* ports = imp->ports();
+    if (!ports)
+        return v8::Array::New(0);
+    MessagePortArray portsCopy(*ports);
+    v8::Local<v8::Array> portArray = v8::Array::New(portsCopy.size());
+    for (size_t i = 0; i < portsCopy.size(); ++i)
+        portArray->Set(v8::Integer::New(i), toV8(portsCopy[i].get()));
+    return portArray;
+}
+
 static v8::Handle<v8::Value> cachedReadonlyValueAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
 {
     INC_STATS("DOM.TestSerializedScriptValueInterface.cachedReadonlyValue._get");
@@ -182,6 +197,8 @@
     {"readonlyValue", TestSerializedScriptValueInterfaceV8Internal::readonlyValueAttrGetter, 0, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
     // Attribute 'cachedValue' (Type: 'attribute' ExtAttr: 'CachedAttribute')
     {"cachedValue", TestSerializedScriptValueInterfaceV8Internal::cachedValueAttrGetter, TestSerializedScriptValueInterfaceV8Internal::cachedValueAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
+    // Attribute 'ports' (Type: 'readonly attribute' ExtAttr: '')
+    {"ports", TestSerializedScriptValueInterfaceV8Internal::portsAttrGetter, 0, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
     // Attribute 'cachedReadonlyValue' (Type: 'readonly attribute' ExtAttr: 'CachedAttribute')
     {"cachedReadonlyValue", TestSerializedScriptValueInterfaceV8Internal::cachedReadonlyValueAttrGetter, 0, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
 };
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to