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 */},
};