Title: [208613] trunk
Revision
208613
Author
cdu...@apple.com
Date
2016-11-11 14:53:24 -0800 (Fri, 11 Nov 2016)

Log Message

WorkerGlobalScope's indexedDB property should be on the prototype, not the instance
https://bugs.webkit.org/show_bug.cgi?id=164644

Reviewed by Brady Eidson.

Source/WebCore:

WorkerGlobalScope's indexedDB property should be on the prototype, not the instance
as per:
- https://heycam.github.io/webidl/#es-attributes

This is because WorkerGlobalScope is not marked as [Global] or [PrimaryGlobal] in
the IDL:
- https://html.spec.whatwg.org/multipage/workers.html#the-workerglobalscope-common-interface

DedicatedWorkerGlobalScope is the one that is marked as [Global] and that should
have its attributes on the instance:
- https://html.spec.whatwg.org/multipage/workers.html#dedicated-workers-and-the-dedicatedworkerglobalscope-interface

We were getting this mostly right, except for runtime-enabled attributes / operations
which would end up on the instance instead of the prototype. This patch adds support
for [PrimaryGlobal] / [Global] IDL extended attributes which determine the location
of properties. It also improves support for runtime-enabled properties so that they
can now be on either the instance or the prototype, exactly as if they were not
runtimed-enabled.

This gives us 100% pass rate on:
- http://w3c-test.org/IndexedDB/interfaces.worker.html

No new tests, updated existing test.

* bindings/scripts/CodeGeneratorJS.pm:
(IsGlobalOrPrimaryGlobalInterface):
(InterfaceRequiresAttributesOnInstance):
(AttributeShouldBeOnInstance):
(OperationShouldBeOnInstance):
(GenerateHeader):
(GeneratePropertiesHashTable):
(GenerateImplementation):
* bindings/scripts/IDLAttributes.txt:
* bindings/scripts/test/JS/JSInterfaceName.cpp:
(WebCore::JSInterfaceName::finishCreation):
* bindings/scripts/test/JS/JSInterfaceName.h:
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
(WebCore::JSTestActiveDOMObject::finishCreation):
* bindings/scripts/test/JS/JSTestActiveDOMObject.h:
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
(WebCore::JSTestCEReactions::finishCreation):
* bindings/scripts/test/JS/JSTestCEReactions.h:
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
(WebCore::JSTestCEReactionsStringifier::finishCreation):
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.h:
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
(WebCore::JSTestClassWithJSBuiltinConstructor::finishCreation):
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
(WebCore::JSTestCustomConstructorWithNoInterfaceObject::finishCreation):
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h:
* bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
(WebCore::JSTestCustomNamedGetter::finishCreation):
* bindings/scripts/test/JS/JSTestCustomNamedGetter.h:
* bindings/scripts/test/JS/JSTestDOMJIT.cpp:
(WebCore::JSTestDOMJIT::finishCreation):
* bindings/scripts/test/JS/JSTestDOMJIT.h:
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
(WebCore::JSTestEventConstructor::finishCreation):
* bindings/scripts/test/JS/JSTestEventConstructor.h:
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
(WebCore::JSTestEventTarget::finishCreation):
* bindings/scripts/test/JS/JSTestEventTarget.h:
* bindings/scripts/test/JS/JSTestException.cpp:
(WebCore::JSTestException::finishCreation):
* bindings/scripts/test/JS/JSTestException.h:
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
(WebCore::JSTestGenerateIsReachable::finishCreation):
* bindings/scripts/test/JS/JSTestGenerateIsReachable.h:
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
(WebCore::JSTestGlobalObject::finishCreation):
* bindings/scripts/test/JS/JSTestGlobalObject.h:
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterface::finishCreation):
* bindings/scripts/test/JS/JSTestInterface.h:
* bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
(WebCore::JSTestInterfaceLeadingUnderscore::finishCreation):
* bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h:
* bindings/scripts/test/JS/JSTestIterable.cpp:
(WebCore::JSTestIterable::finishCreation):
* bindings/scripts/test/JS/JSTestIterable.h:
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
(WebCore::JSTestJSBuiltinConstructor::finishCreation):
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h:
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
(WebCore::JSTestMediaQueryListListener::finishCreation):
* bindings/scripts/test/JS/JSTestMediaQueryListListener.h:
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::JSTestNamedConstructor::finishCreation):
* bindings/scripts/test/JS/JSTestNamedConstructor.h:
* bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::JSTestNode::finishCreation):
* bindings/scripts/test/JS/JSTestNode.h:
* bindings/scripts/test/JS/JSTestNondeterministic.cpp:
(WebCore::JSTestNondeterministic::finishCreation):
* bindings/scripts/test/JS/JSTestNondeterministic.h:
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObj::finishCreation):
* bindings/scripts/test/JS/JSTestObj.h:
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::JSTestOverloadedConstructors::finishCreation):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.h:
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
(WebCore::JSTestOverloadedConstructorsWithSequence::finishCreation):
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h:
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
(WebCore::JSTestOverrideBuiltins::finishCreation):
* bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
* bindings/scripts/test/JS/JSTestSerialization.cpp:
(WebCore::JSTestSerialization::finishCreation):
* bindings/scripts/test/JS/JSTestSerialization.h:
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::JSTestSerializedScriptValueInterface::finishCreation):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefs::finishCreation):
* bindings/scripts/test/JS/JSTestTypedefs.h:
* bindings/scripts/test/TestGlobalObject.idl:
* page/DOMWindow.idl:
* workers/DedicatedWorkerGlobalScope.idl:

LayoutTests:

Extend layout test coverage to check that:
- WorkerGlobalScope.indexedDB is on the prototype.
- WorkerGlobalScope.IDBDatabase constructor is on the instance

Both are enabled at runtime properties.

* fast/workers/WorkerGlobalScope-properties-prototype-expected.txt:
* fast/workers/WorkerGlobalScope-properties-prototype.html:
* fast/workers/self-hasOwnProperty-expected.txt:
* fast/workers/self-hasOwnProperty.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (208612 => 208613)


--- trunk/LayoutTests/ChangeLog	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/LayoutTests/ChangeLog	2016-11-11 22:53:24 UTC (rev 208613)
@@ -1,3 +1,21 @@
+2016-11-11  Chris Dumez  <cdu...@apple.com>
+
+        WorkerGlobalScope's indexedDB property should be on the prototype, not the instance
+        https://bugs.webkit.org/show_bug.cgi?id=164644
+
+        Reviewed by Brady Eidson.
+
+        Extend layout test coverage to check that:
+        - WorkerGlobalScope.indexedDB is on the prototype.
+        - WorkerGlobalScope.IDBDatabase constructor is on the instance
+
+        Both are enabled at runtime properties.
+
+        * fast/workers/WorkerGlobalScope-properties-prototype-expected.txt:
+        * fast/workers/WorkerGlobalScope-properties-prototype.html:
+        * fast/workers/self-hasOwnProperty-expected.txt:
+        * fast/workers/self-hasOwnProperty.html:
+
 2016-11-11  Antti Koivisto  <an...@apple.com>
 
         Shadow DOM: Toggling class in `.class ::slotted(*)` does not trigger style recalc

Modified: trunk/LayoutTests/fast/workers/WorkerGlobalScope-properties-prototype-expected.txt (208612 => 208613)


--- trunk/LayoutTests/fast/workers/WorkerGlobalScope-properties-prototype-expected.txt	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/LayoutTests/fast/workers/WorkerGlobalScope-properties-prototype-expected.txt	2016-11-11 22:53:24 UTC (rev 208613)
@@ -4,11 +4,14 @@
 
 
 self.__proto__.__proto__ === WorkerGlobalScope.prototype: true
+self.__proto__.__proto__.__proto__ === EventTarget.prototype: true
+self.__proto__.__proto__.__proto__.__proto__ === {}.__proto__: true
 self.__proto__.__proto__.hasOwnProperty('navigator') === true: true
 self.__proto__.__proto__.hasOwnProperty('self') === true: true
 self.__proto__.__proto__.hasOwnProperty('location') === true: true
 self.__proto__.__proto__.hasOwnProperty('close') === true: true
 self.__proto__.__proto__.hasOwnProperty('importScripts') === true: true
+self.__proto__.__proto__.hasOwnProperty('indexedDB') === true: true
 self.hasOwnProperty('navigator') === false: true
 self.hasOwnProperty('location') === false: true
 self.hasOwnProperty('close') === false: true

Modified: trunk/LayoutTests/fast/workers/WorkerGlobalScope-properties-prototype.html (208612 => 208613)


--- trunk/LayoutTests/fast/workers/WorkerGlobalScope-properties-prototype.html	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/LayoutTests/fast/workers/WorkerGlobalScope-properties-prototype.html	2016-11-11 22:53:24 UTC (rev 208613)
@@ -9,11 +9,14 @@
 
 var worker = createWorker();
 worker.postMessage("eval self.__proto__.__proto__ === WorkerGlobalScope.prototype");
+worker.postMessage("eval self.__proto__.__proto__.__proto__ === EventTarget.prototype");
+worker.postMessage("eval self.__proto__.__proto__.__proto__.__proto__ === {}.__proto__");
 worker.postMessage("eval self.__proto__.__proto__.hasOwnProperty('navigator') === true");
 worker.postMessage("eval self.__proto__.__proto__.hasOwnProperty('self') === true");
 worker.postMessage("eval self.__proto__.__proto__.hasOwnProperty('location') === true");
 worker.postMessage("eval self.__proto__.__proto__.hasOwnProperty('close') === true");
 worker.postMessage("eval self.__proto__.__proto__.hasOwnProperty('importScripts') === true");
+worker.postMessage("eval self.__proto__.__proto__.hasOwnProperty('indexedDB') === true");
 worker.postMessage("eval self.hasOwnProperty('navigator') === false");
 worker.postMessage("eval self.hasOwnProperty('location') === false");
 worker.postMessage("eval self.hasOwnProperty('close') === false");

Modified: trunk/LayoutTests/fast/workers/self-hasOwnProperty-expected.txt (208612 => 208613)


--- trunk/LayoutTests/fast/workers/self-hasOwnProperty-expected.txt	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/LayoutTests/fast/workers/self-hasOwnProperty-expected.txt	2016-11-11 22:53:24 UTC (rev 208613)
@@ -6,6 +6,7 @@
 self.hasOwnProperty('DedicatedWorkerGlobalScope'): true
 self.hasOwnProperty('WorkerGlobalScope'): true
 self.hasOwnProperty('postMessage'): true
+self.hasOwnProperty('IDBDatabase'): true
 PASS successfullyParsed is true
 
 TEST COMPLETE

Modified: trunk/LayoutTests/fast/workers/self-hasOwnProperty.html (208612 => 208613)


--- trunk/LayoutTests/fast/workers/self-hasOwnProperty.html	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/LayoutTests/fast/workers/self-hasOwnProperty.html	2016-11-11 22:53:24 UTC (rev 208613)
@@ -11,6 +11,7 @@
 worker.postMessage("eval self.hasOwnProperty('DedicatedWorkerGlobalScope')");
 worker.postMessage("eval self.hasOwnProperty('WorkerGlobalScope')");
 worker.postMessage("eval self.hasOwnProperty('postMessage')");
+worker.postMessage("eval self.hasOwnProperty('IDBDatabase')");
 worker.postMessage("eval DONE");
 
 worker._onmessage_ = function(evt) {

Modified: trunk/Source/WebCore/ChangeLog (208612 => 208613)


--- trunk/Source/WebCore/ChangeLog	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/ChangeLog	2016-11-11 22:53:24 UTC (rev 208613)
@@ -1,3 +1,131 @@
+2016-11-11  Chris Dumez  <cdu...@apple.com>
+
+        WorkerGlobalScope's indexedDB property should be on the prototype, not the instance
+        https://bugs.webkit.org/show_bug.cgi?id=164644
+
+        Reviewed by Brady Eidson.
+
+        WorkerGlobalScope's indexedDB property should be on the prototype, not the instance
+        as per:
+        - https://heycam.github.io/webidl/#es-attributes
+
+        This is because WorkerGlobalScope is not marked as [Global] or [PrimaryGlobal] in
+        the IDL:
+        - https://html.spec.whatwg.org/multipage/workers.html#the-workerglobalscope-common-interface
+
+        DedicatedWorkerGlobalScope is the one that is marked as [Global] and that should
+        have its attributes on the instance:
+        - https://html.spec.whatwg.org/multipage/workers.html#dedicated-workers-and-the-dedicatedworkerglobalscope-interface
+
+        We were getting this mostly right, except for runtime-enabled attributes / operations
+        which would end up on the instance instead of the prototype. This patch adds support
+        for [PrimaryGlobal] / [Global] IDL extended attributes which determine the location
+        of properties. It also improves support for runtime-enabled properties so that they
+        can now be on either the instance or the prototype, exactly as if they were not
+        runtimed-enabled.
+
+        This gives us 100% pass rate on:
+        - http://w3c-test.org/IndexedDB/interfaces.worker.html
+
+        No new tests, updated existing test.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (IsGlobalOrPrimaryGlobalInterface):
+        (InterfaceRequiresAttributesOnInstance):
+        (AttributeShouldBeOnInstance):
+        (OperationShouldBeOnInstance):
+        (GenerateHeader):
+        (GeneratePropertiesHashTable):
+        (GenerateImplementation):
+        * bindings/scripts/IDLAttributes.txt:
+        * bindings/scripts/test/JS/JSInterfaceName.cpp:
+        (WebCore::JSInterfaceName::finishCreation):
+        * bindings/scripts/test/JS/JSInterfaceName.h:
+        * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
+        (WebCore::JSTestActiveDOMObject::finishCreation):
+        * bindings/scripts/test/JS/JSTestActiveDOMObject.h:
+        * bindings/scripts/test/JS/JSTestCEReactions.cpp:
+        (WebCore::JSTestCEReactions::finishCreation):
+        * bindings/scripts/test/JS/JSTestCEReactions.h:
+        * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
+        (WebCore::JSTestCEReactionsStringifier::finishCreation):
+        * bindings/scripts/test/JS/JSTestCEReactionsStringifier.h:
+        * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
+        (WebCore::JSTestClassWithJSBuiltinConstructor::finishCreation):
+        * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:
+        * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
+        (WebCore::JSTestCustomConstructorWithNoInterfaceObject::finishCreation):
+        * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h:
+        * bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
+        (WebCore::JSTestCustomNamedGetter::finishCreation):
+        * bindings/scripts/test/JS/JSTestCustomNamedGetter.h:
+        * bindings/scripts/test/JS/JSTestDOMJIT.cpp:
+        (WebCore::JSTestDOMJIT::finishCreation):
+        * bindings/scripts/test/JS/JSTestDOMJIT.h:
+        * bindings/scripts/test/JS/JSTestEventConstructor.cpp:
+        (WebCore::JSTestEventConstructor::finishCreation):
+        * bindings/scripts/test/JS/JSTestEventConstructor.h:
+        * bindings/scripts/test/JS/JSTestEventTarget.cpp:
+        (WebCore::JSTestEventTarget::finishCreation):
+        * bindings/scripts/test/JS/JSTestEventTarget.h:
+        * bindings/scripts/test/JS/JSTestException.cpp:
+        (WebCore::JSTestException::finishCreation):
+        * bindings/scripts/test/JS/JSTestException.h:
+        * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
+        (WebCore::JSTestGenerateIsReachable::finishCreation):
+        * bindings/scripts/test/JS/JSTestGenerateIsReachable.h:
+        * bindings/scripts/test/JS/JSTestGlobalObject.cpp:
+        (WebCore::JSTestGlobalObject::finishCreation):
+        * bindings/scripts/test/JS/JSTestGlobalObject.h:
+        * bindings/scripts/test/JS/JSTestInterface.cpp:
+        (WebCore::JSTestInterface::finishCreation):
+        * bindings/scripts/test/JS/JSTestInterface.h:
+        * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
+        (WebCore::JSTestInterfaceLeadingUnderscore::finishCreation):
+        * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h:
+        * bindings/scripts/test/JS/JSTestIterable.cpp:
+        (WebCore::JSTestIterable::finishCreation):
+        * bindings/scripts/test/JS/JSTestIterable.h:
+        * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
+        (WebCore::JSTestJSBuiltinConstructor::finishCreation):
+        * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h:
+        * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
+        (WebCore::JSTestMediaQueryListListener::finishCreation):
+        * bindings/scripts/test/JS/JSTestMediaQueryListListener.h:
+        * bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
+        (WebCore::JSTestNamedConstructor::finishCreation):
+        * bindings/scripts/test/JS/JSTestNamedConstructor.h:
+        * bindings/scripts/test/JS/JSTestNode.cpp:
+        (WebCore::JSTestNode::finishCreation):
+        * bindings/scripts/test/JS/JSTestNode.h:
+        * bindings/scripts/test/JS/JSTestNondeterministic.cpp:
+        (WebCore::JSTestNondeterministic::finishCreation):
+        * bindings/scripts/test/JS/JSTestNondeterministic.h:
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        (WebCore::JSTestObj::finishCreation):
+        * bindings/scripts/test/JS/JSTestObj.h:
+        * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
+        (WebCore::JSTestOverloadedConstructors::finishCreation):
+        * bindings/scripts/test/JS/JSTestOverloadedConstructors.h:
+        * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
+        (WebCore::JSTestOverloadedConstructorsWithSequence::finishCreation):
+        * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h:
+        * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
+        (WebCore::JSTestOverrideBuiltins::finishCreation):
+        * bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
+        * bindings/scripts/test/JS/JSTestSerialization.cpp:
+        (WebCore::JSTestSerialization::finishCreation):
+        * bindings/scripts/test/JS/JSTestSerialization.h:
+        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
+        (WebCore::JSTestSerializedScriptValueInterface::finishCreation):
+        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
+        * bindings/scripts/test/JS/JSTestTypedefs.cpp:
+        (WebCore::JSTestTypedefs::finishCreation):
+        * bindings/scripts/test/JS/JSTestTypedefs.h:
+        * bindings/scripts/test/TestGlobalObject.idl:
+        * page/DOMWindow.idl:
+        * workers/DedicatedWorkerGlobalScope.idl:
+
 2016-11-11  Antti Koivisto  <an...@apple.com>
 
         Shadow DOM: Toggling class in `.class ::slotted(*)` does not trigger style recalc

Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm	2016-11-11 22:53:24 UTC (rev 208613)
@@ -648,6 +648,13 @@
         || InstanceOverridesGetOwnPropertySlot($interface);
 }
 
+sub IsGlobalOrPrimaryGlobalInterface
+{
+    my $interface = shift;
+
+    return $interface->extendedAttributes->{Global} || $interface->extendedAttributes->{PrimaryGlobal};
+}
+
 sub InterfaceRequiresAttributesOnInstance
 {
     my $interface = shift;
@@ -660,8 +667,7 @@
     # FIXME: We should be able to drop this once <rdar://problem/24466097> is fixed.
     return 1 if $interface->isException;
 
-    # FIXME: Add support for [PrimaryGlobal] / [Global].
-    return 1 if IsDOMGlobalObject($interface) && $interface->type->name ne "WorkerGlobalScope";
+    return 1 if IsGlobalOrPrimaryGlobalInterface($interface);
 
     return 0;
 }
@@ -671,9 +677,6 @@
     my $interface = shift;
     my $attribute = shift;
 
-    # FIXME: The bindings generator does not support putting runtime-enabled attributes on the instance yet (except for global objects).
-    return 0 if $attribute->extendedAttributes->{EnabledAtRuntime} && !IsDOMGlobalObject($interface);
-
     return 1 if InterfaceRequiresAttributesOnInstance($interface);
     return 1 if $codeGenerator->IsConstructorType($attribute->type);
 
@@ -696,8 +699,7 @@
     my $interface = shift;
     my $function = shift;
 
-    # FIXME: Add support for [PrimaryGlobal] / [Global].
-    return 1 if IsDOMGlobalObject($interface) && $interface->type->name ne "WorkerGlobalScope";
+    return 1 if IsGlobalOrPrimaryGlobalInterface($interface);
 
     # FIXME: The bindings generator does not support putting runtime-enabled operations on the instance yet (except for global objects).
     return 0 if $function->extendedAttributes->{EnabledAtRuntime};
@@ -1674,19 +1676,14 @@
         push(@headerContent, "    $className(JSC::Structure*, JSDOMGlobalObject&);\n\n");
      } else {
         push(@headerContent, "    $className(JSC::Structure*, JSDOMGlobalObject&, Ref<$implType>&&);\n\n");
-        push(@headerContent, "    void finishCreation(JSC::VM& vm)\n");
-        push(@headerContent, "    {\n");
-        push(@headerContent, "        Base::finishCreation(vm);\n");
-        push(@headerContent, "        ASSERT(inherits(info()));\n");
-        push(@headerContent, "    }\n\n");
     }
 
-    if (IsDOMGlobalObject($interface)) {
-        if ($interfaceName eq "DOMWindow") {
-            push(@headerContent, "    void finishCreation(JSC::VM&, JSDOMWindowShell*);\n");
-        } else {
-            push(@headerContent, "    void finishCreation(JSC::VM&, JSC::JSProxy*);\n");
-        }
+    if ($interfaceName eq "DOMWindow") {
+        push(@headerContent, "    void finishCreation(JSC::VM&, JSDOMWindowShell*);\n");
+    } elsif ($codeGenerator->InheritsInterface($interface, "WorkerGlobalScope")) {
+        push(@headerContent, "    void finishCreation(JSC::VM&, JSC::JSProxy*);\n");
+    } else {
+        push(@headerContent, "    void finishCreation(JSC::VM&);\n");
     }
 
     push(@headerContent, "    void indexSetter(JSC::ExecState*, unsigned index, JSC::JSValue);\n") if $interface->extendedAttributes->{CustomIndexedSetter};
@@ -1885,7 +1882,7 @@
         next if AttributeShouldBeOnInstance($interface, $attribute) != $isInstance;
 
         # Global objects add RuntimeEnabled attributes after creation so do not add them to the static table.
-        if (IsDOMGlobalObject($interface) && $attribute->extendedAttributes->{EnabledAtRuntime}) {
+        if ($isInstance && $attribute->extendedAttributes->{EnabledAtRuntime}) {
             $propertyCount -= 1;
             next;
         }
@@ -1915,7 +1912,6 @@
         $conditionals->{$name} = $conditional if $conditional;
 
         if ($attribute->extendedAttributes->{EnabledAtRuntime}) {
-            die "We currently do not support [EnabledAtRuntime] attributes on the instance (except for global objects)." if $isInstance;
             push(@$runtimeEnabledAttributes, $attribute);
         }
     }
@@ -1931,7 +1927,7 @@
         next if $function->name eq "[Symbol.Iterator]";
 
         # Global objects add RuntimeEnabled operations after creation so do not add them to the static table.
-        if (IsDOMGlobalObject($interface) && $function->extendedAttributes->{EnabledAtRuntime}) {
+        if ($isInstance && $function->extendedAttributes->{EnabledAtRuntime}) {
             $propertyCount -= 1;
             next;
         }
@@ -1959,7 +1955,6 @@
         $conditionals->{$name} = $conditional if $conditional;
 
         if ($function->extendedAttributes->{EnabledAtRuntime}) {
-            die "We currently do not support [EnabledAtRuntime] operations on the instance (except for global objects)." if $isInstance;
             push(@$runtimeEnabledFunctions, $function);
         }
     }
@@ -2913,7 +2908,7 @@
         push(@implContent, "const ClassInfo ${className}Prototype::s_info = { \"${visibleInterfaceName}Prototype\", &Base::s_info, &${className}PrototypeTable, CREATE_METHOD_TABLE(${className}Prototype) };\n\n");
     }
 
-    if (PrototypeHasStaticPropertyTable($interface) && !IsDOMGlobalObject($interface)) {
+    if (PrototypeHasStaticPropertyTable($interface) && !IsGlobalOrPrimaryGlobalInterface($interface)) {
         push(@implContent, "void ${className}Prototype::finishCreation(VM& vm)\n");
         push(@implContent, "{\n");
         push(@implContent, "    Base::finishCreation(vm);\n");
@@ -3002,75 +2997,82 @@
         push(@implContent, "}\n\n");
     }
 
-    if (IsDOMGlobalObject($interface)) {
-        if ($interfaceName eq "DOMWindow") {
-            push(@implContent, "void ${className}::finishCreation(VM& vm, JSDOMWindowShell* shell)\n");
-            push(@implContent, "{\n");
-            push(@implContent, "    Base::finishCreation(vm, shell);\n\n");
-        } else {
-            push(@implContent, "void ${className}::finishCreation(VM& vm, JSProxy* proxy)\n");
-            push(@implContent, "{\n");
-            push(@implContent, "    Base::finishCreation(vm, proxy);\n\n");
-        }
-        # Support for RuntimeEnabled attributes on global objects.
-        foreach my $attribute (@{$interface->attributes}) {
-            next unless $attribute->extendedAttributes->{EnabledAtRuntime};
+    if ($interfaceName eq "DOMWindow") {
+        push(@implContent, "void ${className}::finishCreation(VM& vm, JSDOMWindowShell* shell)\n");
+        push(@implContent, "{\n");
+        push(@implContent, "    Base::finishCreation(vm, shell);\n\n");
+    } elsif ($codeGenerator->InheritsInterface($interface, "WorkerGlobalScope")) {
+        push(@implContent, "void ${className}::finishCreation(VM& vm, JSProxy* proxy)\n");
+        push(@implContent, "{\n");
+        push(@implContent, "    Base::finishCreation(vm, proxy);\n\n");
+    } else {
+        push(@implContent, "void ${className}::finishCreation(VM& vm)\n");
+        push(@implContent, "{\n");
+        push(@implContent, "    Base::finishCreation(vm);\n");
+        push(@implContent, "    ASSERT(inherits(info()));\n\n");
+    }
 
-            AddToImplIncludes("RuntimeEnabledFeatures.h");
-            my $conditionalString = $codeGenerator->GenerateConditionalString($attribute);
-            push(@implContent, "#if ${conditionalString}\n") if $conditionalString;
-            my $enable_function = GetRuntimeEnableFunctionName($attribute);
-            my $attributeName = $attribute->name;
-            push(@implContent, "    if (${enable_function}()) {\n");
-            my $getter = GetAttributeGetterName($interface, $className, $attribute);
-            my $setter = IsReadonly($attribute) ? "nullptr" : GetAttributeSetterName($interface, $className, $attribute);
-            push(@implContent, "        auto* customGetterSetter = CustomGetterSetter::create(vm, $getter, $setter);\n");
-            my $jscAttributes = GetJSCAttributesForAttribute($interface, $attribute);
-            push(@implContent, "        putDirectCustomAccessor(vm, vm.propertyNames->$attributeName, customGetterSetter, attributesForStructure($jscAttributes));\n");
-            push(@implContent, "    }\n");
-            push(@implContent, "#endif\n") if $conditionalString;
-        }
+    # Support for RuntimeEnabled attributes on instances.
+    foreach my $attribute (@{$interface->attributes}) {
+        next unless $attribute->extendedAttributes->{EnabledAtRuntime};
+        next unless AttributeShouldBeOnInstance($interface, $attribute);
 
-        # Support PrivateIdentifier attributes on global objects
-        foreach my $attribute (@{$interface->attributes}) {
-            next unless $attribute->extendedAttributes->{PrivateIdentifier};
+        AddToImplIncludes("RuntimeEnabledFeatures.h");
+        my $conditionalString = $codeGenerator->GenerateConditionalString($attribute);
+        push(@implContent, "#if ${conditionalString}\n") if $conditionalString;
+        my $enable_function = GetRuntimeEnableFunctionName($attribute);
+        my $attributeName = $attribute->name;
+        push(@implContent, "    if (${enable_function}()) {\n");
+        my $getter = GetAttributeGetterName($interface, $className, $attribute);
+        my $setter = IsReadonly($attribute) ? "nullptr" : GetAttributeSetterName($interface, $className, $attribute);
+        push(@implContent, "        auto* customGetterSetter = CustomGetterSetter::create(vm, $getter, $setter);\n");
+        my $jscAttributes = GetJSCAttributesForAttribute($interface, $attribute);
+        push(@implContent, "        putDirectCustomAccessor(vm, vm.propertyNames->$attributeName, customGetterSetter, attributesForStructure($jscAttributes));\n");
+        push(@implContent, "    }\n");
+        push(@implContent, "#endif\n") if $conditionalString;
+    }
 
-            AddToImplIncludes("WebCoreJSClientData.h");
-            my $conditionalString = $codeGenerator->GenerateConditionalString($attribute);
-            my $attributeName = $attribute->name;
-            my $getter = GetAttributeGetterName($interface, $className, $attribute);
+    # Support PrivateIdentifier attributes on instances.
+    foreach my $attribute (@{$interface->attributes}) {
+        next unless $attribute->extendedAttributes->{PrivateIdentifier};
+        next unless AttributeShouldBeOnInstance($interface, $attribute);
 
-            push(@implContent, "#if ${conditionalString}\n") if $conditionalString;
-            push(@implContent, "    putDirectCustomAccessor(vm, static_cast<JSVMClientData*>(vm.clientData)->builtinNames()." . $attributeName . "PrivateName(), CustomGetterSetter::create(vm, $getter, nullptr), attributesForStructure(DontDelete | ReadOnly));\n");
-            push(@implContent, "#endif\n") if $conditionalString;
-        }
+        AddToImplIncludes("WebCoreJSClientData.h");
+        my $conditionalString = $codeGenerator->GenerateConditionalString($attribute);
+        my $attributeName = $attribute->name;
+        my $getter = GetAttributeGetterName($interface, $className, $attribute);
 
-        # Support for RuntimeEnabled operations on global objects.
-        foreach my $function (@{$interface->functions}) {
-            next unless $function->extendedAttributes->{EnabledAtRuntime};
-            next if $function->{overloadIndex} && $function->{overloadIndex} > 1;
+        push(@implContent, "#if ${conditionalString}\n") if $conditionalString;
+        push(@implContent, "    putDirectCustomAccessor(vm, static_cast<JSVMClientData*>(vm.clientData)->builtinNames()." . $attributeName . "PrivateName(), CustomGetterSetter::create(vm, $getter, nullptr), attributesForStructure(DontDelete | ReadOnly));\n");
+        push(@implContent, "#endif\n") if $conditionalString;
+    }
 
-            AddToImplIncludes("RuntimeEnabledFeatures.h");
-            my $conditionalString = $codeGenerator->GenerateConditionalString($function);
-            push(@implContent, "#if ${conditionalString}\n") if $conditionalString;
-            my $enable_function = GetRuntimeEnableFunctionName($function);
-            my $functionName = $function->name;
-            my $implementationFunction = GetFunctionName($interface, $className, $function);
-            my $functionLength = GetFunctionLength($function);
-            my $jsAttributes = ComputeFunctionSpecial($interface, $function);
-            push(@implContent, "    if (${enable_function}())\n");
+    # Support for RuntimeEnabled operations on instances.
+    foreach my $function (@{$interface->functions}) {
+        next unless $function->extendedAttributes->{EnabledAtRuntime};
+        next unless OperationShouldBeOnInstance($interface, $function);
+        next if $function->{overloadIndex} && $function->{overloadIndex} > 1;
 
-            my $propertyName = "vm.propertyNames->$functionName";
-            $propertyName = "static_cast<JSVMClientData*>(vm.clientData)->builtinNames()." . $functionName . "PrivateName()" if $function->extendedAttributes->{PrivateIdentifier};
-            if (IsJSBuiltin($interface, $function)) {
-                push(@implContent, "        putDirectBuiltinFunction(vm, this, $propertyName, $implementationFunction(vm), attributesForStructure($jsAttributes));\n");
-            } else {
-                push(@implContent, "        putDirectNativeFunction(vm, this, $propertyName, $functionLength, $implementationFunction, NoIntrinsic, attributesForStructure($jsAttributes));\n");
-            }
-            push(@implContent, "#endif\n") if $conditionalString;
+        AddToImplIncludes("RuntimeEnabledFeatures.h");
+        my $conditionalString = $codeGenerator->GenerateConditionalString($function);
+        push(@implContent, "#if ${conditionalString}\n") if $conditionalString;
+        my $enable_function = GetRuntimeEnableFunctionName($function);
+        my $functionName = $function->name;
+        my $implementationFunction = GetFunctionName($interface, $className, $function);
+        my $functionLength = GetFunctionLength($function);
+        my $jsAttributes = ComputeFunctionSpecial($interface, $function);
+        push(@implContent, "    if (${enable_function}())\n");
+
+        my $propertyName = "vm.propertyNames->$functionName";
+        $propertyName = "static_cast<JSVMClientData*>(vm.clientData)->builtinNames()." . $functionName . "PrivateName()" if $function->extendedAttributes->{PrivateIdentifier};
+        if (IsJSBuiltin($interface, $function)) {
+            push(@implContent, "        putDirectBuiltinFunction(vm, this, $propertyName, $implementationFunction(vm), attributesForStructure($jsAttributes));\n");
+        } else {
+            push(@implContent, "        putDirectNativeFunction(vm, this, $propertyName, $functionLength, $implementationFunction, NoIntrinsic, attributesForStructure($jsAttributes));\n");
         }
-        push(@implContent, "}\n\n");
+        push(@implContent, "#endif\n") if $conditionalString;
     }
+    push(@implContent, "}\n\n");
 
     unless (ShouldUseGlobalObjectPrototype($interface)) {
         push(@implContent, "JSObject* ${className}::createPrototype(VM& vm, JSGlobalObject* globalObject)\n");
@@ -5994,7 +5996,7 @@
     push(@$outputArray, "    }\n");
 
     if (PrototypeHasStaticPropertyTable($interface)) {
-        if (IsDOMGlobalObject($interface)) {
+        if (IsGlobalOrPrimaryGlobalInterface($interface)) {
             $structureFlags{"JSC::HasStaticPropertyTable"} = 1;
         } else {
             push(@$outputArray, "\n");

Modified: trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/IDLAttributes.txt	2016-11-11 22:53:24 UTC (rev 208613)
@@ -68,6 +68,7 @@
 GenerateIsReachable=|Impl|ImplWebGLRenderingContext|ImplDocument|ImplElementRoot|ImplFrame|ImplOwnerNodeRoot|ImplScriptExecutionContext
 GetterMayThrowException
 GetterMayThrowLegacyException
+Global=*
 Immutable
 ImplementedAs=*
 ImplementationLacksVTable
@@ -101,6 +102,7 @@
 NotEnumerable
 OverrideBuiltins
 PassContext
+PrimaryGlobal
 PrivateIdentifier
 PublicIdentifier
 PutForwards=*

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -99,6 +99,13 @@
 {
 }
 
+void JSInterfaceName::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSInterfaceName::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSInterfaceNamePrototype::create(vm, globalObject, JSInterfaceNamePrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -55,12 +55,7 @@
 protected:
     JSInterfaceName(JSC::Structure*, JSDOMGlobalObject&, Ref<InterfaceName>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSInterfaceNameOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -125,6 +125,13 @@
 {
 }
 
+void JSTestActiveDOMObject::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestActiveDOMObject::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestActiveDOMObjectPrototype::create(vm, globalObject, JSTestActiveDOMObjectPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -54,12 +54,7 @@
 protected:
     JSTestActiveDOMObject(JSC::Structure*, JSDOMGlobalObject&, Ref<TestActiveDOMObject>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestActiveDOMObjectOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -119,6 +119,13 @@
 {
 }
 
+void JSTestCEReactions::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestCEReactions::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestCEReactionsPrototype::create(vm, globalObject, JSTestCEReactionsPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -52,12 +52,7 @@
 protected:
     JSTestCEReactions(JSC::Structure*, JSDOMGlobalObject&, Ref<TestCEReactions>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestCEReactionsOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -111,6 +111,13 @@
 {
 }
 
+void JSTestCEReactionsStringifier::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestCEReactionsStringifier::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestCEReactionsStringifierPrototype::create(vm, globalObject, JSTestCEReactionsStringifierPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -52,12 +52,7 @@
 protected:
     JSTestCEReactionsStringifier(JSC::Structure*, JSDOMGlobalObject&, Ref<TestCEReactionsStringifier>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestCEReactionsStringifierOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -105,6 +105,13 @@
 {
 }
 
+void JSTestClassWithJSBuiltinConstructor::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestClassWithJSBuiltinConstructor::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestClassWithJSBuiltinConstructorPrototype::create(vm, globalObject, JSTestClassWithJSBuiltinConstructorPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -54,12 +54,7 @@
 protected:
     JSTestClassWithJSBuiltinConstructor(JSC::Structure*, JSDOMGlobalObject&, Ref<TestClassWithJSBuiltinConstructor>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestClassWithJSBuiltinConstructorOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -105,6 +105,13 @@
 {
 }
 
+void JSTestCustomConstructorWithNoInterfaceObject::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestCustomConstructorWithNoInterfaceObject::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestCustomConstructorWithNoInterfaceObjectPrototype::create(vm, globalObject, JSTestCustomConstructorWithNoInterfaceObjectPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -51,12 +51,7 @@
 protected:
     JSTestCustomConstructorWithNoInterfaceObject(JSC::Structure*, JSDOMGlobalObject&, Ref<TestCustomConstructorWithNoInterfaceObject>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestCustomConstructorWithNoInterfaceObjectOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -108,6 +108,13 @@
 {
 }
 
+void JSTestCustomNamedGetter::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestCustomNamedGetter::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestCustomNamedGetterPrototype::create(vm, globalObject, JSTestCustomNamedGetterPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -56,12 +56,7 @@
 protected:
     JSTestCustomNamedGetter(JSC::Structure*, JSDOMGlobalObject&, Ref<TestCustomNamedGetter>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 private:
     bool nameGetter(JSC::ExecState*, JSC::PropertyName, JSC::JSValue&);
 };

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -228,6 +228,13 @@
 {
 }
 
+void JSTestDOMJIT::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestDOMJIT::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestDOMJITPrototype::create(vm, globalObject, JSTestDOMJITPrototype::createStructure(vm, globalObject, JSNode::prototype(vm, globalObject)));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -57,12 +57,7 @@
 protected:
     JSTestDOMJIT(JSC::Structure*, JSDOMGlobalObject&, Ref<TestDOMJIT>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -176,6 +176,13 @@
 {
 }
 
+void JSTestEventConstructor::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestEventConstructor::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestEventConstructorPrototype::create(vm, globalObject, JSTestEventConstructorPrototype::createStructure(vm, globalObject, JSEvent::prototype(vm, globalObject)));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -55,12 +55,7 @@
 protected:
     JSTestEventConstructor(JSC::Structure*, JSDOMGlobalObject&, Ref<TestEventConstructor>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestEventConstructor&);

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -108,6 +108,13 @@
 {
 }
 
+void JSTestEventTarget::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestEventTarget::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestEventTargetPrototype::create(vm, globalObject, JSTestEventTargetPrototype::createStructure(vm, globalObject, JSEventTarget::prototype(vm, globalObject)));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -63,12 +63,7 @@
 protected:
     JSTestEventTarget(JSC::Structure*, JSDOMGlobalObject&, Ref<TestEventTarget>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 private:
     bool nameGetter(JSC::ExecState*, JSC::PropertyName, JSC::JSValue&);
 };

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -115,6 +115,13 @@
 {
 }
 
+void JSTestException::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestException::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestExceptionPrototype::create(vm, globalObject, JSTestExceptionPrototype::createStructure(vm, globalObject, globalObject->errorPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -55,12 +55,7 @@
 protected:
     JSTestException(JSC::Structure*, JSDOMGlobalObject&, Ref<TestException>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestExceptionOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -99,6 +99,13 @@
 {
 }
 
+void JSTestGenerateIsReachable::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestGenerateIsReachable::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestGenerateIsReachablePrototype::create(vm, globalObject, JSTestGenerateIsReachablePrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -52,12 +52,7 @@
 protected:
     JSTestGenerateIsReachable(JSC::Structure*, JSDOMGlobalObject&, Ref<TestGenerateIsReachable>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestGenerateIsReachableOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -141,9 +141,10 @@
 {
 }
 
-void JSTestGlobalObject::finishCreation(VM& vm, JSProxy* proxy)
+void JSTestGlobalObject::finishCreation(VM& vm)
 {
-    Base::finishCreation(vm, proxy);
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
 
 #if ENABLE(TEST_FEATURE)
     if (RuntimeEnabledFeatures::sharedFeatures().testFeatureEnabled()) {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -56,13 +56,7 @@
 protected:
     JSTestGlobalObject(JSC::Structure*, JSDOMGlobalObject&, Ref<TestGlobalObject>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
-    void finishCreation(JSC::VM&, JSC::JSProxy*);
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestGlobalObjectOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -381,6 +381,13 @@
 {
 }
 
+void JSTestInterface::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestInterface::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestInterfacePrototype::create(vm, globalObject, JSTestInterfacePrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -79,12 +79,7 @@
 protected:
     JSTestInterface(JSC::Structure*, JSDOMGlobalObject&, Ref<TestInterface>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestInterfaceOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -102,6 +102,13 @@
 {
 }
 
+void JSTestInterfaceLeadingUnderscore::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestInterfaceLeadingUnderscore::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestInterfaceLeadingUnderscorePrototype::create(vm, globalObject, JSTestInterfaceLeadingUnderscorePrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -52,12 +52,7 @@
 protected:
     JSTestInterfaceLeadingUnderscore(JSC::Structure*, JSDOMGlobalObject&, Ref<TestInterfaceLeadingUnderscore>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestInterfaceLeadingUnderscoreOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -113,6 +113,13 @@
 {
 }
 
+void JSTestIterable::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestIterable::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestIterablePrototype::create(vm, globalObject, JSTestIterablePrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -52,12 +52,7 @@
 protected:
     JSTestIterable(JSC::Structure*, JSDOMGlobalObject&, Ref<TestIterable>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestIterableOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -116,6 +116,13 @@
 JSTestJSBuiltinConstructor::JSTestJSBuiltinConstructor(Structure* structure, JSDOMGlobalObject& globalObject)
     : JSDOMObject(structure, globalObject) { }
 
+void JSTestJSBuiltinConstructor::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestJSBuiltinConstructor::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestJSBuiltinConstructorPrototype::create(vm, globalObject, JSTestJSBuiltinConstructorPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -59,6 +59,7 @@
 protected:
     JSTestJSBuiltinConstructor(JSC::Structure*, JSDOMGlobalObject&);
 
+    void finishCreation(JSC::VM&);
 };
 
 

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -107,6 +107,13 @@
 {
 }
 
+void JSTestMediaQueryListListener::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestMediaQueryListListener::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestMediaQueryListListenerPrototype::create(vm, globalObject, JSTestMediaQueryListListenerPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -52,12 +52,7 @@
 protected:
     JSTestMediaQueryListListener(JSC::Structure*, JSDOMGlobalObject&, Ref<TestMediaQueryListListener>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestMediaQueryListListenerOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -142,6 +142,13 @@
 {
 }
 
+void JSTestNamedConstructor::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestNamedConstructor::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestNamedConstructorPrototype::create(vm, globalObject, JSTestNamedConstructorPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -53,12 +53,7 @@
 protected:
     JSTestNamedConstructor(JSC::Structure*, JSDOMGlobalObject&, Ref<TestNamedConstructor>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestNamedConstructorOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -156,6 +156,13 @@
 {
 }
 
+void JSTestNode::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestNode::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestNodePrototype::create(vm, globalObject, JSTestNodePrototype::createStructure(vm, globalObject, JSNode::prototype(vm, globalObject)));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -56,12 +56,7 @@
 protected:
     JSTestNode(JSC::Structure*, JSDOMGlobalObject&, Ref<TestNode>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 WEBCORE_TESTSUPPORT_EXPORT JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TestNode&);

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -126,6 +126,13 @@
 {
 }
 
+void JSTestNondeterministic::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestNondeterministic::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestNondeterministicPrototype::create(vm, globalObject, JSTestNondeterministicPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -52,12 +52,7 @@
 protected:
     JSTestNondeterministic(JSC::Structure*, JSDOMGlobalObject&, Ref<TestNondeterministic>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestNondeterministicOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -1761,6 +1761,13 @@
 {
 }
 
+void JSTestObj::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestObj::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestObjPrototype::create(vm, globalObject, JSTestObjPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -72,12 +72,7 @@
 protected:
     JSTestObj(JSC::Structure*, JSDOMGlobalObject&, Ref<TestObj>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestObjOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -200,6 +200,13 @@
 {
 }
 
+void JSTestOverloadedConstructors::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestOverloadedConstructors::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestOverloadedConstructorsPrototype::create(vm, globalObject, JSTestOverloadedConstructorsPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -52,12 +52,7 @@
 protected:
     JSTestOverloadedConstructors(JSC::Structure*, JSDOMGlobalObject&, Ref<TestOverloadedConstructors>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestOverloadedConstructorsOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -151,6 +151,13 @@
 {
 }
 
+void JSTestOverloadedConstructorsWithSequence::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestOverloadedConstructorsWithSequence::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestOverloadedConstructorsWithSequencePrototype::create(vm, globalObject, JSTestOverloadedConstructorsWithSequencePrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -52,12 +52,7 @@
 protected:
     JSTestOverloadedConstructorsWithSequence(JSC::Structure*, JSDOMGlobalObject&, Ref<TestOverloadedConstructorsWithSequence>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestOverloadedConstructorsWithSequenceOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -109,6 +109,13 @@
 {
 }
 
+void JSTestOverrideBuiltins::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestOverrideBuiltins::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestOverrideBuiltinsPrototype::create(vm, globalObject, JSTestOverrideBuiltinsPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -57,12 +57,7 @@
 protected:
     JSTestOverrideBuiltins(JSC::Structure*, JSDOMGlobalObject&, Ref<TestOverrideBuiltins>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 private:
     bool nameGetter(JSC::ExecState*, JSC::PropertyName, JSC::JSValue&);
 };

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -122,6 +122,13 @@
 {
 }
 
+void JSTestSerialization::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestSerialization::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestSerializationPrototype::create(vm, globalObject, JSTestSerializationPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -52,12 +52,7 @@
 protected:
     JSTestSerialization(JSC::Structure*, JSDOMGlobalObject&, Ref<TestSerialization>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestSerializationOwner : public JSC::WeakHandleOwner {

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


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -118,6 +118,13 @@
 {
 }
 
+void JSTestSerializedScriptValueInterface::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestSerializedScriptValueInterface::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestSerializedScriptValueInterfacePrototype::create(vm, globalObject, JSTestSerializedScriptValueInterfacePrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

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


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -58,12 +58,7 @@
 protected:
     JSTestSerializedScriptValueInterface(JSC::Structure*, JSDOMGlobalObject&, Ref<TestSerializedScriptValueInterface>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestSerializedScriptValueInterfaceOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp	2016-11-11 22:53:24 UTC (rev 208613)
@@ -203,6 +203,13 @@
 {
 }
 
+void JSTestTypedefs::finishCreation(VM& vm)
+{
+    Base::finishCreation(vm);
+    ASSERT(inherits(info()));
+
+}
+
 JSObject* JSTestTypedefs::createPrototype(VM& vm, JSGlobalObject* globalObject)
 {
     return JSTestTypedefsPrototype::create(vm, globalObject, JSTestTypedefsPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));

Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h	2016-11-11 22:53:24 UTC (rev 208613)
@@ -54,12 +54,7 @@
 protected:
     JSTestTypedefs(JSC::Structure*, JSDOMGlobalObject&, Ref<TestTypedefs>&&);
 
-    void finishCreation(JSC::VM& vm)
-    {
-        Base::finishCreation(vm);
-        ASSERT(inherits(info()));
-    }
-
+    void finishCreation(JSC::VM&);
 };
 
 class JSTestTypedefsOwner : public JSC::WeakHandleOwner {

Modified: trunk/Source/WebCore/bindings/scripts/test/TestGlobalObject.idl (208612 => 208613)


--- trunk/Source/WebCore/bindings/scripts/test/TestGlobalObject.idl	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/bindings/scripts/test/TestGlobalObject.idl	2016-11-11 22:53:24 UTC (rev 208613)
@@ -24,7 +24,9 @@
  */
 
 // This interface is recognized as a global object by the bindings generator.
-interface TestGlobalObject {
+[
+    Global,
+] interface TestGlobalObject {
     attribute DOMString regularAttribute;
     [PrivateIdentifier, PublicIdentifier] attribute DOMString publicAndPrivateAttribute;
     [Conditional=TEST_FEATURE, PrivateIdentifier, PublicIdentifier] attribute DOMString publicAndPrivateConditionalAttribute;

Modified: trunk/Source/WebCore/page/DOMWindow.idl (208612 => 208613)


--- trunk/Source/WebCore/page/DOMWindow.idl	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/page/DOMWindow.idl	2016-11-11 22:53:24 UTC (rev 208613)
@@ -40,6 +40,7 @@
     JSCustomMarkFunction,
     JSCustomToNativeObject,
     JSLegacyParent=JSDOMWindowBase,
+    PrimaryGlobal,
 ] interface DOMWindow : EventTarget {
     [Replaceable] readonly attribute Screen screen;
     readonly attribute History history;

Modified: trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.idl (208612 => 208613)


--- trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.idl	2016-11-11 22:52:40 UTC (rev 208612)
+++ trunk/Source/WebCore/workers/DedicatedWorkerGlobalScope.idl	2016-11-11 22:53:24 UTC (rev 208613)
@@ -31,6 +31,7 @@
 [
     CustomProxyToJSObject,
     Exposed=DedicatedWorker,
+    Global=(Worker,DedicatedWorker),
     JSGenerateToNativeObject,
 ] interface DedicatedWorkerGlobalScope : WorkerGlobalScope {
     [Custom, MayThrowException] void postMessage(any message, optional Array messagePorts);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to