ServiceWorkerGlobalScope prototype chain should be immutable
authorcdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 6 Dec 2017 04:47:00 +0000 (04:47 +0000)
committercdumez@apple.com <cdumez@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 6 Dec 2017 04:47:00 +0000 (04:47 +0000)
https://bugs.webkit.org/show_bug.cgi?id=180450

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline test that no longer times out.

* web-platform-tests/service-workers/service-worker/interfaces-sw.https-expected.txt:

Source/WebCore:

ServiceWorkerGlobalScope prototype chain should be immutable, similarly
to what we do for DOMWindow. This is covered by a web-platform-test
which was timing out because it was successfuly overwriting the
ServiceWorkerGlobalScope prototype.

No new tests, rebaselined existing test.

* workers/DedicatedWorkerGlobalScope.idl:
* workers/WorkerGlobalScope.idl:
* workers/service/ServiceWorkerGlobalScope.idl:

LayoutTests:

* TestExpectations:
Unskip test that no longer times out.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@225566 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/TestExpectations
LayoutTests/fast/workers/DedicatedWorkerGlobalScope-immutable-prototype-expected.txt [new file with mode: 0644]
LayoutTests/fast/workers/DedicatedWorkerGlobalScope-immutable-prototype.html [new file with mode: 0644]
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/interfaces-sw.https-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/workers/DedicatedWorkerGlobalScope.idl
Source/WebCore/workers/WorkerGlobalScope.idl
Source/WebCore/workers/service/ServiceWorkerGlobalScope.idl

index e7ec9d9..dac77a1 100644 (file)
@@ -1,3 +1,13 @@
+2017-12-05  Chris Dumez  <cdumez@apple.com>
+
+        ServiceWorkerGlobalScope prototype chain should be immutable
+        https://bugs.webkit.org/show_bug.cgi?id=180450
+
+        Reviewed by Youenn Fablet.
+
+        * TestExpectations:
+        Unskip test that no longer times out.
+
 2017-12-05  Brent Fulgham  <bfulgham@apple.com>
 
         Limit user agent versioning to an upper bound
index b3c5b6d..24da51b 100644 (file)
@@ -149,7 +149,6 @@ imported/w3c/web-platform-tests/service-workers/service-worker/detached-context.
 imported/w3c/web-platform-tests/service-workers/service-worker/extendable-event-waituntil.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-respond-with-partial-stream.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/http-to-https-redirect-and-register.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/service-worker/interfaces-sw.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/navigation-preload/broken-chunked-encoding.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/navigation-preload/chunked-encoding.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/navigation-preload/get-state.https.html [ Skip ]
diff --git a/LayoutTests/fast/workers/DedicatedWorkerGlobalScope-immutable-prototype-expected.txt b/LayoutTests/fast/workers/DedicatedWorkerGlobalScope-immutable-prototype-expected.txt
new file mode 100644 (file)
index 0000000..406c8cb
--- /dev/null
@@ -0,0 +1,10 @@
+Tests that DedicatedWorkerGlobalScope's prototype is immutable
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Object.setPrototypeOf(self, { }): TypeError: Cannot set prototype of immutable prototype object
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/workers/DedicatedWorkerGlobalScope-immutable-prototype.html b/LayoutTests/fast/workers/DedicatedWorkerGlobalScope-immutable-prototype.html
new file mode 100644 (file)
index 0000000..740791f
--- /dev/null
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<script src="../../resources/js-test-pre.js"></script>
+<script src="resources/worker-create-common.js"></script>
+<script>
+
+var jsTestIsAsync = true;
+
+description('Tests that DedicatedWorkerGlobalScope\'s prototype is immutable');
+
+var worker = createWorker();
+worker.postMessage("eval Object.setPrototypeOf(self, { })");
+worker.postMessage("eval DONE");
+
+worker.onmessage = function(evt) {
+    if (!/DONE/.test(evt.data))
+        debug(evt.data.replace(new RegExp("/.*LayoutTests"), "<...>"));
+    else
+        finishJSTest();
+};
+
+</script>
+<script src="../../resources/js-test-post.js"></script>
index bafe66b..02bd668 100644 (file)
@@ -1,3 +1,14 @@
+2017-12-05  Chris Dumez  <cdumez@apple.com>
+
+        ServiceWorkerGlobalScope prototype chain should be immutable
+        https://bugs.webkit.org/show_bug.cgi?id=180450
+
+        Reviewed by Youenn Fablet.
+
+        Rebaseline test that no longer times out.
+
+        * web-platform-tests/service-workers/service-worker/interfaces-sw.https-expected.txt:
+
 2017-12-05  Javier Fernandez  <jfernandez@igalia.com>
 
         [css-grid] Update imported Web Platform Tests
index f3bdc3d..4b8a7ad 100644 (file)
 
-Harness Error (TIMEOUT), message = null
-
 PASS Interfaces and attributes in ServiceWorkerGlobalScope 
-TIMEOUT test setup (cache creation) Test timed out
+PASS test setup (cache creation) 
 FAIL Event constructors assert_equals: Default FetchEvent.clientId should be null expected (object) null but got (string) ""
 PASS xhr is not exposed 
 PASS ServiceWorkerGlobalScope interface: existence and properties of interface object 
 PASS ServiceWorkerGlobalScope interface object length 
 PASS ServiceWorkerGlobalScope interface object name 
 PASS ServiceWorkerGlobalScope interface: existence and properties of interface prototype object 
-TIMEOUT ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via Object.setPrototypeOf should throw a TypeError Test timed out
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via Object.setPrototypeOf should throw a TypeError 
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via __proto__ should throw a TypeError 
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via Reflect.setPrototypeOf should return false 
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via Object.setPrototypeOf should not throw 
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via __proto__ should not throw 
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to its original value via Reflect.setPrototypeOf should return true 
+PASS ServiceWorkerGlobalScope interface: existence and properties of interface prototype object's "constructor" property 
+FAIL ServiceWorkerGlobalScope interface: attribute clients The ServiceWorkerGlobalScope.clients getter can only be used on instances of ServiceWorkerGlobalScope
+FAIL ServiceWorkerGlobalScope interface: attribute registration The ServiceWorkerGlobalScope.registration getter can only be used on instances of ServiceWorkerGlobalScope
+PASS ServiceWorkerGlobalScope interface: operation skipWaiting() 
+FAIL ServiceWorkerGlobalScope interface: attribute oninstall The ServiceWorkerGlobalScope.oninstall getter can only be used on instances of ServiceWorkerGlobalScope
+FAIL ServiceWorkerGlobalScope interface: attribute onactivate The ServiceWorkerGlobalScope.onactivate getter can only be used on instances of ServiceWorkerGlobalScope
+FAIL ServiceWorkerGlobalScope interface: attribute onfetch The ServiceWorkerGlobalScope.onfetch getter can only be used on instances of ServiceWorkerGlobalScope
+FAIL ServiceWorkerGlobalScope interface: attribute onmessage The ServiceWorkerGlobalScope.onmessage getter can only be used on instances of ServiceWorkerGlobalScope
+FAIL ServiceWorkerGlobalScope interface: attribute onmessageerror The ServiceWorkerGlobalScope.onmessageerror getter can only be used on instances of ServiceWorkerGlobalScope
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via Object.setPrototypeOf should throw a TypeError 
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via __proto__ should throw a TypeError 
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to a new value via Reflect.setPrototypeOf should return false 
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via Object.setPrototypeOf should not throw 
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via __proto__ should not throw 
+PASS ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of global platform object - setting to its original value via Reflect.setPrototypeOf should return true 
+PASS ServiceWorkerGlobalScope must be primary interface of self 
+PASS Stringification of self 
+PASS ServiceWorkerGlobalScope interface: self must inherit property "clients" with the proper type 
+PASS ServiceWorkerGlobalScope interface: self must inherit property "registration" with the proper type 
+PASS ServiceWorkerGlobalScope interface: self must inherit property "skipWaiting()" with the proper type 
+PASS ServiceWorkerGlobalScope interface: self must inherit property "oninstall" with the proper type 
+PASS ServiceWorkerGlobalScope interface: self must inherit property "onactivate" with the proper type 
+PASS ServiceWorkerGlobalScope interface: self must inherit property "onfetch" with the proper type 
+PASS ServiceWorkerGlobalScope interface: self must inherit property "onmessage" with the proper type 
+PASS ServiceWorkerGlobalScope interface: self must inherit property "onmessageerror" with the proper type 
+PASS Client interface: existence and properties of interface object 
+PASS Client interface object length 
+PASS Client interface object name 
+PASS Client interface: existence and properties of interface prototype object 
+PASS Client interface: existence and properties of interface prototype object's "constructor" property 
+PASS Client interface: attribute url 
+PASS Client interface: attribute id 
+PASS Client interface: attribute type 
+FAIL Client interface: attribute reserved assert_true: The prototype object must have a property "reserved" expected true got false
+PASS Client interface: operation postMessage(any, [object Object]) 
+PASS WindowClient interface: existence and properties of interface object 
+PASS WindowClient interface object length 
+PASS WindowClient interface object name 
+PASS WindowClient interface: existence and properties of interface prototype object 
+PASS WindowClient interface: existence and properties of interface prototype object's "constructor" property 
+PASS WindowClient interface: attribute visibilityState 
+PASS WindowClient interface: attribute focused 
+FAIL WindowClient interface: attribute ancestorOrigins assert_true: The prototype object must have a property "ancestorOrigins" expected true got false
+PASS WindowClient interface: operation focus() 
+PASS WindowClient interface: operation navigate(USVString) 
+PASS Clients interface: existence and properties of interface object 
+PASS Clients interface object length 
+PASS Clients interface object name 
+PASS Clients interface: existence and properties of interface prototype object 
+PASS Clients interface: existence and properties of interface prototype object's "constructor" property 
+PASS Clients interface: operation get(DOMString) 
+PASS Clients interface: operation matchAll(ClientQueryOptions) 
+PASS Clients interface: operation openWindow(USVString) 
+PASS Clients interface: operation claim() 
+PASS Clients must be primary interface of self.clients 
+PASS Stringification of self.clients 
+PASS Clients interface: self.clients must inherit property "get(DOMString)" with the proper type 
+PASS Clients interface: calling get(DOMString) on self.clients with too few arguments must throw TypeError 
+PASS Clients interface: self.clients must inherit property "matchAll(ClientQueryOptions)" with the proper type 
+PASS Clients interface: calling matchAll(ClientQueryOptions) on self.clients with too few arguments must throw TypeError 
+PASS Clients interface: self.clients must inherit property "openWindow(USVString)" with the proper type 
+PASS Clients interface: calling openWindow(USVString) on self.clients with too few arguments must throw TypeError 
+PASS Clients interface: self.clients must inherit property "claim()" with the proper type 
+PASS ServiceWorker interface: existence and properties of interface object 
+PASS ServiceWorker interface object length 
+PASS ServiceWorker interface object name 
+PASS ServiceWorker interface: existence and properties of interface prototype object 
+PASS ServiceWorker interface: existence and properties of interface prototype object's "constructor" property 
+PASS ServiceWorker interface: attribute scriptURL 
+PASS ServiceWorker interface: attribute state 
+PASS ServiceWorker interface: operation postMessage(any, [object Object]) 
+PASS ServiceWorker interface: attribute onstatechange 
+PASS ServiceWorkerRegistration interface: existence and properties of interface object 
+PASS ServiceWorkerRegistration interface object length 
+PASS ServiceWorkerRegistration interface object name 
+PASS ServiceWorkerRegistration interface: existence and properties of interface prototype object 
+PASS ServiceWorkerRegistration interface: existence and properties of interface prototype object's "constructor" property 
+PASS ServiceWorkerRegistration interface: attribute installing 
+PASS ServiceWorkerRegistration interface: attribute waiting 
+PASS ServiceWorkerRegistration interface: attribute active 
+FAIL ServiceWorkerRegistration interface: attribute navigationPreload assert_true: The prototype object must have a property "navigationPreload" expected true got false
+PASS ServiceWorkerRegistration interface: attribute scope 
+PASS ServiceWorkerRegistration interface: attribute updateViaCache 
+PASS ServiceWorkerRegistration interface: operation update() 
+PASS ServiceWorkerRegistration interface: operation unregister() 
+PASS ServiceWorkerRegistration interface: attribute onupdatefound 
+PASS ServiceWorkerRegistration must be primary interface of self.registration 
+PASS Stringification of self.registration 
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "installing" with the proper type 
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "waiting" with the proper type 
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "active" with the proper type 
+FAIL ServiceWorkerRegistration interface: self.registration must inherit property "navigationPreload" with the proper type assert_inherits: property "navigationPreload" not found in prototype chain
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "scope" with the proper type 
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "updateViaCache" with the proper type 
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "update()" with the proper type 
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "unregister()" with the proper type 
+PASS ServiceWorkerRegistration interface: self.registration must inherit property "onupdatefound" with the proper type 
+PASS EventTarget interface: self.registration must inherit property "addEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type 
+PASS EventTarget interface: calling addEventListener(DOMString, EventListener, [object Object],[object Object]) on self.registration with too few arguments must throw TypeError 
+PASS EventTarget interface: self.registration must inherit property "removeEventListener(DOMString, EventListener, [object Object],[object Object])" with the proper type 
+PASS EventTarget interface: calling removeEventListener(DOMString, EventListener, [object Object],[object Object]) on self.registration with too few arguments must throw TypeError 
+PASS EventTarget interface: self.registration must inherit property "dispatchEvent(Event)" with the proper type 
+PASS EventTarget interface: calling dispatchEvent(Event) on self.registration with too few arguments must throw TypeError 
+PASS EventTarget interface: existence and properties of interface object 
+PASS EventTarget interface object length 
+PASS EventTarget interface object name 
+PASS EventTarget interface: existence and properties of interface prototype object 
+PASS EventTarget interface: existence and properties of interface prototype object's "constructor" property 
+PASS EventTarget interface: operation addEventListener(DOMString, EventListener, [object Object],[object Object]) 
+PASS EventTarget interface: operation removeEventListener(DOMString, EventListener, [object Object],[object Object]) 
+PASS EventTarget interface: operation dispatchEvent(Event) 
+FAIL NavigationPreloadManager interface: existence and properties of interface object assert_own_property: self does not have own property "NavigationPreloadManager" expected property "NavigationPreloadManager" missing
+FAIL NavigationPreloadManager interface object length assert_own_property: self does not have own property "NavigationPreloadManager" expected property "NavigationPreloadManager" missing
+FAIL NavigationPreloadManager interface object name assert_own_property: self does not have own property "NavigationPreloadManager" expected property "NavigationPreloadManager" missing
+FAIL NavigationPreloadManager interface: existence and properties of interface prototype object assert_own_property: self does not have own property "NavigationPreloadManager" expected property "NavigationPreloadManager" missing
+FAIL NavigationPreloadManager interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "NavigationPreloadManager" expected property "NavigationPreloadManager" missing
+FAIL NavigationPreloadManager interface: operation enable() assert_own_property: self does not have own property "NavigationPreloadManager" expected property "NavigationPreloadManager" missing
+FAIL NavigationPreloadManager interface: operation disable() assert_own_property: self does not have own property "NavigationPreloadManager" expected property "NavigationPreloadManager" missing
+FAIL NavigationPreloadManager interface: operation setHeaderValue(ByteString) assert_own_property: self does not have own property "NavigationPreloadManager" expected property "NavigationPreloadManager" missing
+FAIL NavigationPreloadManager interface: operation getState() assert_own_property: self does not have own property "NavigationPreloadManager" expected property "NavigationPreloadManager" missing
+PASS Cache interface: existence and properties of interface object 
+PASS Cache interface object length 
+PASS Cache interface object name 
+PASS Cache interface: existence and properties of interface prototype object 
+PASS Cache interface: existence and properties of interface prototype object's "constructor" property 
+PASS Cache interface: operation match(RequestInfo, CacheQueryOptions) 
+PASS Cache interface: operation matchAll(RequestInfo, CacheQueryOptions) 
+PASS Cache interface: operation add(RequestInfo) 
+PASS Cache interface: operation addAll([object Object]) 
+PASS Cache interface: operation put(RequestInfo, Response) 
+PASS Cache interface: operation delete(RequestInfo, CacheQueryOptions) 
+PASS Cache interface: operation keys(RequestInfo, CacheQueryOptions) 
+PASS Cache must be primary interface of self.cacheInstance 
+PASS Stringification of self.cacheInstance 
+PASS Cache interface: self.cacheInstance must inherit property "match(RequestInfo, CacheQueryOptions)" with the proper type 
+PASS Cache interface: calling match(RequestInfo, CacheQueryOptions) on self.cacheInstance with too few arguments must throw TypeError 
+PASS Cache interface: self.cacheInstance must inherit property "matchAll(RequestInfo, CacheQueryOptions)" with the proper type 
+PASS Cache interface: calling matchAll(RequestInfo, CacheQueryOptions) on self.cacheInstance with too few arguments must throw TypeError 
+PASS Cache interface: self.cacheInstance must inherit property "add(RequestInfo)" with the proper type 
+PASS Cache interface: calling add(RequestInfo) on self.cacheInstance with too few arguments must throw TypeError 
+PASS Cache interface: self.cacheInstance must inherit property "addAll([object Object])" with the proper type 
+PASS Cache interface: calling addAll([object Object]) on self.cacheInstance with too few arguments must throw TypeError 
+PASS Cache interface: self.cacheInstance must inherit property "put(RequestInfo, Response)" with the proper type 
+PASS Cache interface: calling put(RequestInfo, Response) on self.cacheInstance with too few arguments must throw TypeError 
+PASS Cache interface: self.cacheInstance must inherit property "delete(RequestInfo, CacheQueryOptions)" with the proper type 
+PASS Cache interface: calling delete(RequestInfo, CacheQueryOptions) on self.cacheInstance with too few arguments must throw TypeError 
+PASS Cache interface: self.cacheInstance must inherit property "keys(RequestInfo, CacheQueryOptions)" with the proper type 
+PASS Cache interface: calling keys(RequestInfo, CacheQueryOptions) on self.cacheInstance with too few arguments must throw TypeError 
+PASS CacheStorage interface: existence and properties of interface object 
+PASS CacheStorage interface object length 
+PASS CacheStorage interface object name 
+PASS CacheStorage interface: existence and properties of interface prototype object 
+PASS CacheStorage interface: existence and properties of interface prototype object's "constructor" property 
+PASS CacheStorage interface: operation match(RequestInfo, CacheQueryOptions) 
+PASS CacheStorage interface: operation has(DOMString) 
+PASS CacheStorage interface: operation open(DOMString) 
+PASS CacheStorage interface: operation delete(DOMString) 
+PASS CacheStorage interface: operation keys() 
+PASS CacheStorage must be primary interface of self.caches 
+PASS Stringification of self.caches 
+PASS CacheStorage interface: self.caches must inherit property "match(RequestInfo, CacheQueryOptions)" with the proper type 
+PASS CacheStorage interface: calling match(RequestInfo, CacheQueryOptions) on self.caches with too few arguments must throw TypeError 
+PASS CacheStorage interface: self.caches must inherit property "has(DOMString)" with the proper type 
+PASS CacheStorage interface: calling has(DOMString) on self.caches with too few arguments must throw TypeError 
+PASS CacheStorage interface: self.caches must inherit property "open(DOMString)" with the proper type 
+PASS CacheStorage interface: calling open(DOMString) on self.caches with too few arguments must throw TypeError 
+PASS CacheStorage interface: self.caches must inherit property "delete(DOMString)" with the proper type 
+PASS CacheStorage interface: calling delete(DOMString) on self.caches with too few arguments must throw TypeError 
+PASS CacheStorage interface: self.caches must inherit property "keys()" with the proper type 
 
index 7afd702..f1b6847 100644 (file)
@@ -1,3 +1,21 @@
+2017-12-05  Chris Dumez  <cdumez@apple.com>
+
+        ServiceWorkerGlobalScope prototype chain should be immutable
+        https://bugs.webkit.org/show_bug.cgi?id=180450
+
+        Reviewed by Youenn Fablet.
+
+        ServiceWorkerGlobalScope prototype chain should be immutable, similarly
+        to what we do for DOMWindow. This is covered by a web-platform-test
+        which was timing out because it was successfuly overwriting the
+        ServiceWorkerGlobalScope prototype.
+
+        No new tests, rebaselined existing test.
+
+        * workers/DedicatedWorkerGlobalScope.idl:
+        * workers/WorkerGlobalScope.idl:
+        * workers/service/ServiceWorkerGlobalScope.idl:
+
 2017-12-05  Basuke Suzuki  <Basuke.Suzuki@sony.com>
 
         Fast binding generation by batching several files at once
index a080e68..27c7414 100644 (file)
@@ -33,6 +33,8 @@
     Exposed=DedicatedWorker,
     Global=(Worker,DedicatedWorker),
     JSGenerateToNativeObject,
+    IsImmutablePrototypeExoticObject,
+    IsImmutablePrototypeExoticObjectOnPrototype,
 ] interface DedicatedWorkerGlobalScope : WorkerGlobalScope {
     [CallWith=ScriptState, MayThrowException] void postMessage(any message, optional sequence<object> transfer = []);
 
index bd892b2..1e26cf5 100644 (file)
@@ -28,6 +28,8 @@
     Exposed=Worker,
     JSCustomMarkFunction,
     JSLegacyParent=JSWorkerGlobalScopeBase,
+    IsImmutablePrototypeExoticObject,
+    IsImmutablePrototypeExoticObjectOnPrototype,
 ] interface WorkerGlobalScope : EventTarget {
 
     readonly attribute WorkerGlobalScope self;
index 437f6b6..6c466a4 100644 (file)
@@ -30,6 +30,8 @@
     Conditional=SERVICE_WORKER,
     EnabledAtRuntime=ServiceWorker,
     JSCustomMarkFunction,
+    IsImmutablePrototypeExoticObject,
+    IsImmutablePrototypeExoticObjectOnPrototype,
 ] interface ServiceWorkerGlobalScope : WorkerGlobalScope {
     [SameObject] readonly attribute ServiceWorkerClients clients;
     [SameObject] readonly attribute ServiceWorkerRegistration registration;