Title: [225456] trunk
Revision
225456
Author
[email protected]
Date
2017-12-02 20:17:12 -0800 (Sat, 02 Dec 2017)

Log Message

Support container.register() / registration.unregister() /  inside service workers
https://bugs.webkit.org/show_bug.cgi?id=180326

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Rebaseline WPT test that now passes most checks.

* web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/unregister.https-expected.txt:

Source/WebCore:

Support container.register() / registration.unregister() /  inside service workers.
This is mostly about removing the is<Document>() checks and adding testing given
that most of the work was done in r225455.

Test: http/tests/workers/service/ServiceWorkerGlobalScope_register.html

* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::addRegistration):
* workers/service/ServiceWorkerRegistration.cpp:
(WebCore::ServiceWorkerRegistration::update):
(WebCore::ServiceWorkerRegistration::unregister):

LayoutTests:

* TestExpectations:
Unskip test for registration.unregister() that now passes.

* http/tests/workers/service/ServiceWorkerGlobalScope_register-expected.txt: Added.
* http/tests/workers/service/ServiceWorkerGlobalScope_register.html: Added.
* http/tests/workers/service/resources/ServiceWorkerGlobalScope_register-worker.js: Added.
Add test coverage for container.register().

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (225455 => 225456)


--- trunk/LayoutTests/ChangeLog	2017-12-03 02:32:42 UTC (rev 225455)
+++ trunk/LayoutTests/ChangeLog	2017-12-03 04:17:12 UTC (rev 225456)
@@ -1,5 +1,20 @@
 2017-12-02  Chris Dumez  <[email protected]>
 
+        Support container.register() / registration.unregister() /  inside service workers
+        https://bugs.webkit.org/show_bug.cgi?id=180326
+
+        Reviewed by Youenn Fablet.
+
+        * TestExpectations:
+        Unskip test for registration.unregister() that now passes.
+
+        * http/tests/workers/service/ServiceWorkerGlobalScope_register-expected.txt: Added.
+        * http/tests/workers/service/ServiceWorkerGlobalScope_register.html: Added.
+        * http/tests/workers/service/resources/ServiceWorkerGlobalScope_register-worker.js: Added.
+        Add test coverage for container.register().
+
+2017-12-02  Chris Dumez  <[email protected]>
+
         Support serviceWorkerRegistration.update() inside service workers
         https://bugs.webkit.org/show_bug.cgi?id=180215
 

Modified: trunk/LayoutTests/TestExpectations (225455 => 225456)


--- trunk/LayoutTests/TestExpectations	2017-12-03 02:32:42 UTC (rev 225455)
+++ trunk/LayoutTests/TestExpectations	2017-12-03 04:17:12 UTC (rev 225456)
@@ -146,7 +146,6 @@
 # Skip service worker tests that are timing out.
 imported/w3c/web-platform-tests/fetch/api/abort/general-serviceworker.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/extendable-message-event.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/unregister.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/clients-matchall-on-evaluation.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/detached-context.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/extendable-event-waituntil.https.html [ Skip ]

Added: trunk/LayoutTests/http/tests/workers/service/ServiceWorkerGlobalScope_register-expected.txt (0 => 225456)


--- trunk/LayoutTests/http/tests/workers/service/ServiceWorkerGlobalScope_register-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/http/tests/workers/service/ServiceWorkerGlobalScope_register-expected.txt	2017-12-03 04:17:12 UTC (rev 225456)
@@ -0,0 +1,7 @@
+* Tests that serviceWorker.register() inside service workers
+
+PASS: Registration succeeded
+PASS: registration object's scope is valid
+PASS: registration object's updateViaCache is valid
+PASS: service worker is now active
+

Added: trunk/LayoutTests/http/tests/workers/service/ServiceWorkerGlobalScope_register.html (0 => 225456)


--- trunk/LayoutTests/http/tests/workers/service/ServiceWorkerGlobalScope_register.html	                        (rev 0)
+++ trunk/LayoutTests/http/tests/workers/service/ServiceWorkerGlobalScope_register.html	2017-12-03 04:17:12 UTC (rev 225456)
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src=""
+<script>
+log("* Tests that serviceWorker.register() inside service workers");
+log("");
+
+navigator.serviceWorker.addEventListener("message", function(event) {
+    if (event.data ="" "DONE") {
+        finishSWTest();
+        return;
+    }
+    log(event.data);
+});
+
+navigator.serviceWorker.register("resources/ServiceWorkerGlobalScope_register-worker.js", { }).then(function(registration) {
+    registration.installing.postMessage("runTest");
+});
+</script>
+</body>
+</html>

Added: trunk/LayoutTests/http/tests/workers/service/resources/ServiceWorkerGlobalScope_register-worker.js (0 => 225456)


--- trunk/LayoutTests/http/tests/workers/service/resources/ServiceWorkerGlobalScope_register-worker.js	                        (rev 0)
+++ trunk/LayoutTests/http/tests/workers/service/resources/ServiceWorkerGlobalScope_register-worker.js	2017-12-03 04:17:12 UTC (rev 225456)
@@ -0,0 +1,40 @@
+let client = null;
+
+function log(msg)
+{
+    client.postMessage(msg);
+}
+
+async function runTest()
+{
+    try {
+        let r = await navigator.serviceWorker.register("empty-worker.js", { scope: "/test", updateViaCache: "none" });
+        log("PASS: Registration succeeded");
+
+        if (r.scope == "http://127.0.0.1:8000/test")
+            log("PASS: registration object's scope is valid");
+        else
+            log("FAIL: registration object's scope is invalid, got: " + r.scope);
+
+        if (r.updateViaCache == "none")
+            log("PASS: registration object's updateViaCache is valid");
+        else
+            log("FAIL: registration object's updateViaCache is invalid, got: " + r.updateViaCache);
+
+        worker = r.installing;
+        worker.addEventListener("statechange", function() {
+            if (worker.state === "activated") {
+                log("PASS: service worker is now active");
+                log("DONE");
+            }
+        });
+    } catch (e) {
+        log("FAIL: " + e);
+        log("DONE");
+    }
+}
+
+self.addEventListener("message", (event) => {
+    client = event.source;
+    runTest();
+});

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (225455 => 225456)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2017-12-03 02:32:42 UTC (rev 225455)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2017-12-03 04:17:12 UTC (rev 225456)
@@ -1,5 +1,16 @@
 2017-12-02  Chris Dumez  <[email protected]>
 
+        Support container.register() / registration.unregister() /  inside service workers
+        https://bugs.webkit.org/show_bug.cgi?id=180326
+
+        Reviewed by Youenn Fablet.
+
+        Rebaseline WPT test that now passes most checks.
+
+        * web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/unregister.https-expected.txt:
+
+2017-12-02  Chris Dumez  <[email protected]>
+
         Support serviceWorkerRegistration.update() inside service workers
         https://bugs.webkit.org/show_bug.cgi?id=180215
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/unregister.https-expected.txt (225455 => 225456)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/unregister.https-expected.txt	2017-12-03 02:32:42 UTC (rev 225455)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/unregister.https-expected.txt	2017-12-03 04:17:12 UTC (rev 225456)
@@ -1,8 +1,7 @@
 
-Harness Error (TIMEOUT), message = null
 
-TIMEOUT Unregister on script evaluation Test timed out
-NOTRUN Unregister on installing event 
-NOTRUN Unregister on activate event 
-NOTRUN Unregister controlling service worker 
+PASS Unregister on script evaluation 
+PASS Unregister on installing event 
+PASS Unregister on activate event 
+FAIL Unregister controlling service worker promise_test: Unhandled rejection with value: object "NotSupportedError: Passing MessagePort objects to postMessage is not yet supported"
 

Modified: trunk/Source/WebCore/ChangeLog (225455 => 225456)


--- trunk/Source/WebCore/ChangeLog	2017-12-03 02:32:42 UTC (rev 225455)
+++ trunk/Source/WebCore/ChangeLog	2017-12-03 04:17:12 UTC (rev 225456)
@@ -1,5 +1,24 @@
 2017-12-02  Chris Dumez  <[email protected]>
 
+        Support container.register() / registration.unregister() /  inside service workers
+        https://bugs.webkit.org/show_bug.cgi?id=180326
+
+        Reviewed by Youenn Fablet.
+
+        Support container.register() / registration.unregister() /  inside service workers.
+        This is mostly about removing the is<Document>() checks and adding testing given
+        that most of the work was done in r225455.
+
+        Test: http/tests/workers/service/ServiceWorkerGlobalScope_register.html
+
+        * workers/service/ServiceWorkerContainer.cpp:
+        (WebCore::ServiceWorkerContainer::addRegistration):
+        * workers/service/ServiceWorkerRegistration.cpp:
+        (WebCore::ServiceWorkerRegistration::update):
+        (WebCore::ServiceWorkerRegistration::unregister):
+
+2017-12-02  Chris Dumez  <[email protected]>
+
         Support serviceWorkerRegistration.update() inside service workers
         https://bugs.webkit.org/show_bug.cgi?id=180215
 

Modified: trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp (225455 => 225456)


--- trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp	2017-12-03 02:32:42 UTC (rev 225455)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp	2017-12-03 04:17:12 UTC (rev 225456)
@@ -94,12 +94,6 @@
         return;
     }
 
-    // FIXME: Add support in workers.
-    if (!is<Document>(*context)) {
-        promise->reject(Exception { NotSupportedError, ASCIILiteral("serviceWorker.register() is not yet supported in workers") });
-        return;
-    }
-
     if (relativeScriptURL.isEmpty()) {
         promise->reject(Exception { TypeError, ASCIILiteral("serviceWorker.register() cannot be called with an empty script URL") });
         return;

Modified: trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.cpp (225455 => 225456)


--- trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.cpp	2017-12-03 02:32:42 UTC (rev 225455)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.cpp	2017-12-03 04:17:12 UTC (rev 225456)
@@ -116,7 +116,6 @@
 {
     auto* context = scriptExecutionContext();
     if (!context) {
-        ASSERT_NOT_REACHED();
         promise->reject(Exception(InvalidStateError));
         return;
     }
@@ -135,24 +134,11 @@
 {
     auto* context = scriptExecutionContext();
     if (!context) {
-        ASSERT_NOT_REACHED();
         promise->reject(Exception(InvalidStateError));
         return;
     }
 
-    // FIXME: Add support in workers.
-    if (!is<Document>(*context)) {
-        promise->reject(Exception { NotSupportedError, ASCIILiteral("serviceWorkerRegistration.unregister() is not yet supported in workers") });
-        return;
-    }
-
-    auto* container = context->serviceWorkerContainer();
-    if (!container) {
-        promise->reject(Exception(InvalidStateError));
-        return;
-    }
-
-    container->removeRegistration(m_registrationData.scopeURL, WTFMove(promise));
+    m_container->removeRegistration(m_registrationData.scopeURL, WTFMove(promise));
 }
 
 void ServiceWorkerRegistration::updateStateFromServer(ServiceWorkerRegistrationState state, RefPtr<ServiceWorker>&& serviceWorker)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to