Changeset 114319 in webkit
- Timestamp:
- Apr 16, 2012, 4:50:37 PM (14 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 12 edited
-
ChangeLog (modified) (1 diff)
-
bindings/scripts/CodeGeneratorV8.pm (modified) (2 diffs)
-
bindings/scripts/test/CPP/WebDOMTestSerializedScriptValueInterface.cpp (modified) (2 diffs)
-
bindings/scripts/test/CPP/WebDOMTestSerializedScriptValueInterface.h (modified) (2 diffs)
-
bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.cpp (modified) (6 diffs)
-
bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.h (modified) (1 diff)
-
bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp (modified) (3 diffs)
-
bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h (modified) (1 diff)
-
bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.h (modified) (2 diffs)
-
bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.mm (modified) (3 diffs)
-
bindings/scripts/test/TestSerializedScriptValueInterface.idl (modified) (1 diff)
-
bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r114316 r114319 1 2012-04-16 Greg Billock <gbillock@google.com> 2 3 Add V8 code generation support for MessagePortArray attributes. 4 https://bugs.webkit.org/show_bug.cgi?id=83943 5 6 Reviewed by Kentaro Hara. 7 8 * bindings/scripts/CodeGeneratorV8.pm: 9 (GenerateNormalAttrGetter): 10 * bindings/scripts/IDLAttributes.txt: 11 * bindings/scripts/test/CPP/WebDOMTestSerializedScriptValueInterface.cpp: 12 (WebDOMTestSerializedScriptValueInterface::ports): 13 * bindings/scripts/test/CPP/WebDOMTestSerializedScriptValueInterface.h: 14 (WebDOMTestSerializedScriptValueInterface): 15 * bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.cpp: 16 (webkit_dom_test_serialized_script_value_interface_get_property): 17 (webkit_dom_test_serialized_script_value_interface_class_init): 18 (webkit_dom_test_serialized_script_value_interface_get_ports): 19 * bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.h: 20 * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: 21 (WebCore): 22 (WebCore::jsTestSerializedScriptValueInterfacePorts): 23 * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h: 24 (WebCore): 25 * bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.h: 26 * bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.mm: 27 (-[DOMTestSerializedScriptValueInterface ports]): 28 * bindings/scripts/test/TestSerializedScriptValueInterface.idl: 29 * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp: 30 (WebCore::TestSerializedScriptValueInterfaceInternal::portsAttrGetter): 31 (TestSerializedScriptValueInterfaceInternal): 32 (WebCore): 33 1 34 2012-04-16 Xiaomei Ji <xji@chromium.org> 2 35 -
trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm
r114298 r114319 911 911 if (!IsNodeSubType($dataNode) && $attrName ne "self" && (IsWrapperType($returnType) && ($attribute->type =~ /^readonly/ || $attribute->signature->extendedAttributes->{"Replaceable"}) 912 912 && $returnType ne "EventTarget" && $returnType ne "SerializedScriptValue" && $returnType ne "DOMWindow" 913 && $returnType ne "MessagePortArray" 913 914 && $returnType !~ /SVG/ && $returnType !~ /HTML/ && !IsDOMNodeType($returnType))) { 914 915 … … 985 986 push(@implContentDecls, " return toV8(WTF::getPtr(${tearOffType}::create($result)));\n"); 986 987 } 988 } elsif ($attribute->signature->type eq "MessagePortArray") { 989 AddToImplIncludes("V8Array.h"); 990 AddToImplIncludes("MessagePort.h"); 991 my $getterFunc = $codeGenerator->WK_lcfirst($attribute->signature->name); 992 push(@implContentDecls, <<END); 993 MessagePortArray* ports = imp->${getterFunc}(); 994 if (!ports) 995 return v8::Array::New(0); 996 MessagePortArray portsCopy(*ports); 997 v8::Local<v8::Array> portArray = v8::Array::New(portsCopy.size()); 998 for (size_t i = 0; i < portsCopy.size(); ++i) 999 portArray->Set(v8::Integer::New(i), toV8(portsCopy[i].get())); 1000 return portArray; 1001 END 987 1002 } else { 988 1003 if ($attribute->signature->type eq "SerializedScriptValue" && $attrExt->{"CachedAttribute"}) { -
trunk/Source/WebCore/bindings/scripts/test/CPP/WebDOMTestSerializedScriptValueInterface.cpp
r110972 r114319 26 26 27 27 #include "Array.h" 28 #include "MessagePortArray.h" 28 29 #include "SerializedScriptValue.h" 29 30 #include "TestSerializedScriptValueInterface.h" 30 31 #include "WebDOMArray.h" 32 #include "WebDOMMessagePortArray.h" 31 33 #include "WebExceptionHandler.h" 32 34 #include <wtf/GetPtr.h> … … 118 120 } 119 121 122 WebDOMMessagePortArray WebDOMTestSerializedScriptValueInterface::ports() const 123 { 124 if (!impl()) 125 return WebDOMMessagePortArray(); 126 127 return toWebKit(WTF::getPtr(impl()->ports())); 128 } 129 120 130 WebDOMString WebDOMTestSerializedScriptValueInterface::cachedReadonlyValue() const 121 131 { -
trunk/Source/WebCore/bindings/scripts/test/CPP/WebDOMTestSerializedScriptValueInterface.h
r110972 r114319 34 34 35 35 class WebDOMArray; 36 class WebDOMMessagePortArray; 36 37 class WebDOMString; 37 38 … … 49 50 WebDOMString cachedValue() const; 50 51 void setCachedValue(const WebDOMString&); 52 WebDOMMessagePortArray ports() const; 51 53 WebDOMString cachedReadonlyValue() const; 52 54 -
trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.cpp
r113450 r114319 27 27 #include "ExceptionCode.h" 28 28 #include "JSMainThreadExecState.h" 29 #include "MessagePortArray.h" 29 30 #include "SerializedScriptValue.h" 30 31 #include "TestSerializedScriptValueInterface.h" … … 33 34 #include "webkit/WebKitDOMArray.h" 34 35 #include "webkit/WebKitDOMArrayPrivate.h" 36 #include "webkit/WebKitDOMMessagePortArray.h" 37 #include "webkit/WebKitDOMMessagePortArrayPrivate.h" 35 38 #include "webkit/WebKitDOMSerializedScriptValue.h" 36 39 #include "webkit/WebKitDOMSerializedScriptValuePrivate.h" … … 87 90 PROP_READONLY_VALUE, 88 91 PROP_CACHED_VALUE, 92 PROP_PORTS, 89 93 PROP_CACHED_READONLY_VALUE, 90 94 }; … … 137 141 case PROP_CACHED_VALUE: { 138 142 RefPtr<WebCore::SerializedScriptValue> ptr = coreSelf->cachedValue(); 143 g_value_set_object(value, WebKit::kit(ptr.get())); 144 break; 145 } 146 case PROP_PORTS: { 147 RefPtr<WebCore::MessagePortArray> ptr = coreSelf->ports(); 139 148 g_value_set_object(value, WebKit::kit(ptr.get())); 140 149 break; … … 189 198 WEBKIT_PARAM_READWRITE)); 190 199 g_object_class_install_property(gobjectClass, 200 PROP_PORTS, 201 g_param_spec_object("ports", /* name */ 202 "test_serialized_script_value_interface_ports", /* short description */ 203 "read-only WebKitDOMMessagePortArray* TestSerializedScriptValueInterface.ports", /* longer - could do with some extra doc stuff here */ 204 WEBKIT_TYPE_DOM_MESSAGE_PORT_ARRAY, /* gobject type */ 205 WEBKIT_PARAM_READABLE)); 206 g_object_class_install_property(gobjectClass, 191 207 PROP_CACHED_READONLY_VALUE, 192 208 g_param_spec_object("cached-readonly-value", /* name */ … … 358 374 } 359 375 376 WebKitDOMMessagePortArray* 377 webkit_dom_test_serialized_script_value_interface_get_ports(WebKitDOMTestSerializedScriptValueInterface* self) 378 { 379 #if ENABLE(Condition1) || ENABLE(Condition2) 380 g_return_val_if_fail(self, 0); 381 WebCore::JSMainThreadNullState state; 382 WebCore::TestSerializedScriptValueInterface* item = WebKit::core(self); 383 RefPtr<WebCore::MessagePortArray> gobjectResult = WTF::getPtr(item->ports()); 384 WebKitDOMMessagePortArray* result = WebKit::kit(gobjectResult.get()); 385 return result; 386 #else 387 WEBKIT_WARN_FEATURE_NOT_PRESENT("Condition1") 388 WEBKIT_WARN_FEATURE_NOT_PRESENT("Condition2") 389 return 0; 390 #endif /* ENABLE(Condition1) || ENABLE(Condition2) */ 391 } 392 360 393 WebKitDOMSerializedScriptValue* 361 394 webkit_dom_test_serialized_script_value_interface_get_cached_readonly_value(WebKitDOMTestSerializedScriptValueInterface* self) -
trunk/Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestSerializedScriptValueInterface.h
r113450 r114319 125 125 126 126 /** 127 * webkit_dom_test_serialized_script_value_interface_get_ports: 128 * @self: A #WebKitDOMTestSerializedScriptValueInterface 129 * 130 * Returns: (transfer none): 131 * 132 **/ 133 WEBKIT_API WebKitDOMMessagePortArray* 134 webkit_dom_test_serialized_script_value_interface_get_ports(WebKitDOMTestSerializedScriptValueInterface* self); 135 136 /** 127 137 * webkit_dom_test_serialized_script_value_interface_get_cached_readonly_value: 128 138 * @self: A #WebKitDOMTestSerializedScriptValueInterface -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp
r113576 r114319 28 28 #include "JSArray.h" 29 29 #include "JSDOMBinding.h" 30 #include "JSMessagePortArray.h" 31 #include "MessagePortArray.h" 30 32 #include "SerializedScriptValue.h" 31 33 #include "TestSerializedScriptValueInterface.h" … … 45 47 { "readonlyValue", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceReadonlyValue), (intptr_t)0, NoIntrinsic }, 46 48 { "cachedValue", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceCachedValue), (intptr_t)setJSTestSerializedScriptValueInterfaceCachedValue, NoIntrinsic }, 49 { "ports", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfacePorts), (intptr_t)0, NoIntrinsic }, 47 50 { "cachedReadonlyValue", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceCachedReadonlyValue), (intptr_t)0, NoIntrinsic }, 48 51 { "constructor", DontEnum | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestSerializedScriptValueInterfaceConstructor), (intptr_t)0, NoIntrinsic }, … … 210 213 JSValue result = impl->cachedValue() ? impl->cachedValue()->deserialize(exec, castedThis->globalObject(), 0) : jsNull(); 211 214 castedThis->m_cachedValue.set(exec->globalData(), castedThis, result); 215 return result; 216 } 217 218 219 JSValue jsTestSerializedScriptValueInterfacePorts(ExecState* exec, JSValue slotBase, const Identifier&) 220 { 221 JSTestSerializedScriptValueInterface* castedThis = jsCast<JSTestSerializedScriptValueInterface*>(asObject(slotBase)); 222 UNUSED_PARAM(exec); 223 TestSerializedScriptValueInterface* impl = static_cast<TestSerializedScriptValueInterface*>(castedThis->impl()); 224 JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl->ports())); 212 225 return result; 213 226 } -
trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h
r110972 r114319 155 155 JSC::JSValue jsTestSerializedScriptValueInterfaceCachedValue(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); 156 156 void setJSTestSerializedScriptValueInterfaceCachedValue(JSC::ExecState*, JSC::JSObject*, JSC::JSValue); 157 JSC::JSValue jsTestSerializedScriptValueInterfacePorts(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); 157 158 JSC::JSValue jsTestSerializedScriptValueInterfaceCachedReadonlyValue(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); 158 159 JSC::JSValue jsTestSerializedScriptValueInterfaceConstructor(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&); -
trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.h
r110972 r114319 30 30 31 31 @class DOMArray; 32 @class DOMMessagePortArray; 32 33 @class NSString; 33 34 … … 38 39 - (NSString *)cachedValue; 39 40 - (void)setCachedValue:(NSString *)newCachedValue; 41 - (DOMMessagePortArray *)ports; 40 42 - (NSString *)cachedReadonlyValue; 41 43 - (void)acceptTransferList:(NSString *)data transferList:(DOMArray *)transferList; -
trunk/Source/WebCore/bindings/scripts/test/ObjC/DOMTestSerializedScriptValueInterface.mm
r110972 r114319 39 39 #import "DOMCSSValueInternal.h" 40 40 #import "DOMEventInternal.h" 41 #import "DOMMessagePortArrayInternal.h" 41 42 #import "DOMNodeInternal.h" 42 43 #import "DOMStyleSheetInternal.h" … … 44 45 #import "ExceptionHandlers.h" 45 46 #import "JSMainThreadExecState.h" 47 #import "MessagePortArray.h" 46 48 #import "SerializedScriptValue.h" 47 49 #import "TestSerializedScriptValueInterface.h" … … 106 108 } 107 109 110 - (DOMMessagePortArray *)ports 111 { 112 WebCore::JSMainThreadNullState state; 113 return kit(WTF::getPtr(IMPL->ports())); 114 } 115 108 116 - (NSString *)cachedReadonlyValue 109 117 { -
trunk/Source/WebCore/bindings/scripts/test/TestSerializedScriptValueInterface.idl
r111779 r114319 35 35 readonly attribute SerializedScriptValue readonlyValue; 36 36 attribute [CachedAttribute] SerializedScriptValue cachedValue; 37 readonly attribute MessagePortArray ports; 37 38 readonly attribute [CachedAttribute] SerializedScriptValue cachedReadonlyValue; 38 39 void acceptTransferList(in [TransferList=transferList] SerializedScriptValue data, in [Optional] Array transferList); -
trunk/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp
r114200 r114319 28 28 #include "RuntimeEnabledFeatures.h" 29 29 #include "SerializedScriptValue.h" 30 #include "V8Array.h" 30 31 #include "V8Binding.h" 31 32 #include "V8BindingMacros.h" … … 90 91 info.Holder()->DeleteHiddenValue(v8::String::NewSymbol("cachedValue")); // Invalidate the cached value. 91 92 return; 93 } 94 95 static v8::Handle<v8::Value> portsAttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) 96 { 97 INC_STATS("DOM.TestSerializedScriptValueInterface.ports._get"); 98 TestSerializedScriptValueInterface* imp = V8TestSerializedScriptValueInterface::toNative(info.Holder()); 99 MessagePortArray* ports = imp->ports(); 100 if (!ports) 101 return v8::Array::New(0); 102 MessagePortArray portsCopy(*ports); 103 v8::Local<v8::Array> portArray = v8::Array::New(portsCopy.size()); 104 for (size_t i = 0; i < portsCopy.size(); ++i) 105 portArray->Set(v8::Integer::New(i), toV8(portsCopy[i].get())); 106 return portArray; 92 107 } 93 108 … … 183 198 // Attribute 'cachedValue' (Type: 'attribute' ExtAttr: 'CachedAttribute') 184 199 {"cachedValue", TestSerializedScriptValueInterfaceV8Internal::cachedValueAttrGetter, TestSerializedScriptValueInterfaceV8Internal::cachedValueAttrSetter, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, 200 // Attribute 'ports' (Type: 'readonly attribute' ExtAttr: '') 201 {"ports", TestSerializedScriptValueInterfaceV8Internal::portsAttrGetter, 0, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */}, 185 202 // Attribute 'cachedReadonlyValue' (Type: 'readonly attribute' ExtAttr: 'CachedAttribute') 186 203 {"cachedReadonlyValue", TestSerializedScriptValueInterfaceV8Internal::cachedReadonlyValueAttrGetter, 0, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
Note:
See TracChangeset
for help on using the changeset viewer.