Title: [224876] trunk
Revision
224876
Author
[email protected]
Date
2017-11-15 08:24:31 -0800 (Wed, 15 Nov 2017)

Log Message

Remove service worker selection based on registration
https://bugs.webkit.org/show_bug.cgi?id=179705

Patch by Youenn Fablet <[email protected]> on 2017-11-15
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/controller-on-reload.https-expected.txt:

Source/WebCore:

Covered by updated tests.

Selection is now handled at navigation time.
We can remove the selection/unselection of worker based on registration.

* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::jobResolvedWithUnregistrationResult):
* workers/service/ServiceWorkerRegistration.cpp:
(WebCore::ServiceWorkerRegistration::ServiceWorkerRegistration):

LayoutTests:

Updating tests to use actual selected frames.

* http/tests/inspector/network/resource-response-service-worker.html:
* http/tests/inspector/network/resources/fetch-service-worker.js:
* http/tests/workers/service/ServiceWorkerGlobalScope-properties.html:
* http/tests/workers/service/basic-fetch.https-expected.txt:
* http/tests/workers/service/cors-image-fetch-expected.txt:
* http/tests/workers/service/cors-image-fetch.html:
* http/tests/workers/service/image-fetch-expected.txt:
* http/tests/workers/service/resources/basic-ServiceWorker-postMessage.js:
(then):
* http/tests/workers/service/resources/basic-fetch-worker.js:
* http/tests/workers/service/resources/basic-fetch.js:
(async.test):
* http/tests/workers/service/resources/cors-image-fetch.js:
(async.test):
(async.loadedImage): Deleted.
(async.erroredImage): Deleted.
(async.logStatus): Deleted.
* http/tests/workers/service/resources/cors-image-fetch-iframe.html: Added.
* http/tests/workers/service/resources/image-fetch.js:
(async.test):
(done): Deleted.
(async.loadedImage): Deleted.
(async.erroredImage): Deleted.
(async.logStatus): Deleted.
* http/tests/workers/service/resources/service-worker-crossorigin-fetch.js:
(async.test):
(done): Deleted.
(async.logStatus): Deleted.
* http/tests/workers/service/resources/service-worker-fetch.js:
(async.test):
(done): Deleted.
(async.logStatus): Deleted.
* http/tests/workers/service/resources/service-worker-importScript.js:
(async.test):
(async.logStatus): Deleted.
* http/tests/workers/service/resources/sw-test-pre.js:
(async.interceptedFrame):
* http/tests/workers/service/resources/tainted-image-fetch.js:
(async.test):
(async.loadedImage): Deleted.
(async.erroredImage): Deleted.
(async.logStatus): Deleted.
* http/tests/workers/service/service-worker-fetch.https-expected.txt:
* http/tests/workers/service/tainted-image-fetch-expected.txt:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (224875 => 224876)


--- trunk/LayoutTests/ChangeLog	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/ChangeLog	2017-11-15 16:24:31 UTC (rev 224876)
@@ -1,3 +1,57 @@
+2017-11-15  Youenn Fablet  <[email protected]>
+
+        Remove service worker selection based on registration
+        https://bugs.webkit.org/show_bug.cgi?id=179705
+
+        Reviewed by Alex Christensen.
+
+        Updating tests to use actual selected frames.
+
+        * http/tests/inspector/network/resource-response-service-worker.html:
+        * http/tests/inspector/network/resources/fetch-service-worker.js:
+        * http/tests/workers/service/ServiceWorkerGlobalScope-properties.html:
+        * http/tests/workers/service/basic-fetch.https-expected.txt:
+        * http/tests/workers/service/cors-image-fetch-expected.txt:
+        * http/tests/workers/service/cors-image-fetch.html:
+        * http/tests/workers/service/image-fetch-expected.txt:
+        * http/tests/workers/service/resources/basic-ServiceWorker-postMessage.js:
+        (then):
+        * http/tests/workers/service/resources/basic-fetch-worker.js:
+        * http/tests/workers/service/resources/basic-fetch.js:
+        (async.test):
+        * http/tests/workers/service/resources/cors-image-fetch.js:
+        (async.test):
+        (async.loadedImage): Deleted.
+        (async.erroredImage): Deleted.
+        (async.logStatus): Deleted.
+        * http/tests/workers/service/resources/cors-image-fetch-iframe.html: Added.
+        * http/tests/workers/service/resources/image-fetch.js:
+        (async.test):
+        (done): Deleted.
+        (async.loadedImage): Deleted.
+        (async.erroredImage): Deleted.
+        (async.logStatus): Deleted.
+        * http/tests/workers/service/resources/service-worker-crossorigin-fetch.js:
+        (async.test):
+        (done): Deleted.
+        (async.logStatus): Deleted.
+        * http/tests/workers/service/resources/service-worker-fetch.js:
+        (async.test):
+        (done): Deleted.
+        (async.logStatus): Deleted.
+        * http/tests/workers/service/resources/service-worker-importScript.js:
+        (async.test):
+        (async.logStatus): Deleted.
+        * http/tests/workers/service/resources/sw-test-pre.js:
+        (async.interceptedFrame):
+        * http/tests/workers/service/resources/tainted-image-fetch.js:
+        (async.test):
+        (async.loadedImage): Deleted.
+        (async.erroredImage): Deleted.
+        (async.logStatus): Deleted.
+        * http/tests/workers/service/service-worker-fetch.https-expected.txt:
+        * http/tests/workers/service/tainted-image-fetch-expected.txt:
+
 2017-11-15  Ms2ger  <[email protected]>
 
         [GTK][WPE] Unreviewed test gardening

Modified: trunk/LayoutTests/http/tests/inspector/network/resource-response-service-worker.html (224875 => 224876)


--- trunk/LayoutTests/http/tests/inspector/network/resource-response-service-worker.html	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/inspector/network/resource-response-service-worker.html	2017-11-15 16:24:31 UTC (rev 224876)
@@ -4,8 +4,29 @@
 <meta charset="utf-8">
 <script src=""
 <script>
-async function startServiceWorker() {
-    await navigator.serviceWorker.register("resources/fetch-service-worker.js");
+async function startServiceWorker()
+{
+    var registration = await navigator.serviceWorker.register("resources/fetch-service-worker.js", { scope : "/"});
+    await new Promise(resolve => {
+        if (registration.active)
+            resolve();
+        worker = registration.installing;
+        if (worker.state === "activated")
+            resolve();
+        worker.addEventListener("statechange", () => {
+            if (worker.state === "activated")
+                resolve();
+        });
+    });
+
+    var frame;
+    await new Promise(function(resolve) {
+        frame = document.createElement('iframe');
+        frame.src = ""
+        frame._onload_ = function() { resolve(frame); };
+        document.body.appendChild(frame);
+    });
+    window.fetch = frame.contentWindow.fetch
     TestPage.dispatchEventToFrontend("SetupComplete");
 }
 

Modified: trunk/LayoutTests/http/tests/inspector/network/resources/fetch-service-worker.js (224875 => 224876)


--- trunk/LayoutTests/http/tests/inspector/network/resources/fetch-service-worker.js	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/inspector/network/resources/fetch-service-worker.js	2017-11-15 16:24:31 UTC (rev 224876)
@@ -9,5 +9,10 @@
         return;
     }
 
-    event.respondWith(Response.error());
+    if (event.request.url.includes("error")) {
+        event.respondWith(Response.error());
+        return;
+    }
+
+    event.respondWith(fetch(event.request.url));
 });

Modified: trunk/LayoutTests/http/tests/workers/service/ServiceWorkerGlobalScope-properties.html (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/ServiceWorkerGlobalScope-properties.html	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/ServiceWorkerGlobalScope-properties.html	2017-11-15 16:24:31 UTC (rev 224876)
@@ -20,9 +20,9 @@
         finishSWTest();
 });
 
-navigator.serviceWorker.register("resources/ServiceWorkerGlobalScope-properties-worker.js", { }).then(function() {
+navigator.serviceWorker.register("resources/ServiceWorkerGlobalScope-properties-worker.js", { }).then(function(registration) {
     for (let property of expectedProperties)
-        navigator.serviceWorker.controller.postMessage("Object.getOwnPropertyDescriptor(self, '" + property + "')");
+        registration.installing.postMessage("Object.getOwnPropertyDescriptor(self, '" + property + "')");
 });
 </script>
 </body>

Modified: trunk/LayoutTests/http/tests/workers/service/basic-fetch.https-expected.txt (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/basic-fetch.https-expected.txt	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/basic-fetch.https-expected.txt	2017-11-15 16:24:31 UTC (rev 224876)
@@ -1,3 +1,4 @@
+
 test1 status code: 200
 test1 status text: Hello from service worker
 test1 header Hello: World

Modified: trunk/LayoutTests/http/tests/workers/service/cors-image-fetch-expected.txt (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/cors-image-fetch-expected.txt	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/cors-image-fetch-expected.txt	2017-11-15 16:24:31 UTC (rev 224876)
@@ -1,7 +1,6 @@
-
 Registering service worker
 Service worker registered
-Status is no status
+Status is Got response for http://127.0.0.1:8000/workers/service/resources/cors-image-fetch-iframe.html, status code is 200
 Loading image
 PASS: Loaded image
 Status is Got response for http://localhost:8000/resources/square100.png, status code is 200

Modified: trunk/LayoutTests/http/tests/workers/service/cors-image-fetch.html (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/cors-image-fetch.html	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/cors-image-fetch.html	2017-11-15 16:24:31 UTC (rev 224876)
@@ -3,7 +3,6 @@
 <script src=""
 </head>
 <body>
-    <img id="image" _onload_="loadedImage()" _onerror_="erroredImage()"></img>
     <script src=""
 </body>
 </html>

Modified: trunk/LayoutTests/http/tests/workers/service/image-fetch-expected.txt (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/image-fetch-expected.txt	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/image-fetch-expected.txt	2017-11-15 16:24:31 UTC (rev 224876)
@@ -1,7 +1,7 @@
 
 Registering service worker
 Service worker registered
-Status is no status
+Status is Got response for http://127.0.0.1:8000/workers/service/resources/cors-image-fetch-iframe.html, status code is 200
 Loading image
 PASS: Loaded image
 Status is Got response for http://127.0.0.1:8000/resources/square100.png, status code is 200

Modified: trunk/LayoutTests/http/tests/workers/service/resources/basic-ServiceWorker-postMessage.js (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/resources/basic-ServiceWorker-postMessage.js	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/resources/basic-ServiceWorker-postMessage.js	2017-11-15 16:24:31 UTC (rev 224876)
@@ -9,6 +9,6 @@
         finishSWTest();
 });
 
-navigator.serviceWorker.register("resources/basic-ServiceWorker-postMessage-worker.js", { }).then(function() {
-    navigator.serviceWorker.controller.postMessage("Message 1");
+navigator.serviceWorker.register("resources/basic-ServiceWorker-postMessage-worker.js", { }).then(function(registration) {
+    registration.installing.postMessage("Message 1");
 });

Modified: trunk/LayoutTests/http/tests/workers/service/resources/basic-fetch-worker.js (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/resources/basic-fetch-worker.js	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/resources/basic-fetch-worker.js	2017-11-15 16:24:31 UTC (rev 224876)
@@ -19,5 +19,5 @@
         return;
     }
 
-    event.respondWith(Response.error());
+    event.respondWith(fetch(event.request.url));
 });

Modified: trunk/LayoutTests/http/tests/workers/service/resources/basic-fetch.js (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/resources/basic-fetch.js	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/resources/basic-fetch.js	2017-11-15 16:24:31 UTC (rev 224876)
@@ -1,7 +1,8 @@
 async function test()
 {
     try {
-        await navigator.serviceWorker.register("resources/basic-fetch-worker.js", { });
+        var frame = await interceptedFrame("resources/basic-fetch-worker.js", "/");
+        var fetch = frame.contentWindow.fetch;
 
         var response = await fetch("test1");
         log("test1 status code: " + response.status);

Copied: trunk/LayoutTests/http/tests/workers/service/resources/cors-image-fetch-iframe.html (from rev 224875, trunk/LayoutTests/http/tests/workers/service/resources/image-fetch.js) (0 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/resources/cors-image-fetch-iframe.html	                        (rev 0)
+++ trunk/LayoutTests/http/tests/workers/service/resources/cors-image-fetch-iframe.html	2017-11-15 16:24:31 UTC (rev 224876)
@@ -0,0 +1,46 @@
+<html>
+<body>
+    <img id="image" _onload_="loadedImage()" _onerror_="erroredImage()"></img>
+    <script>
+function log(message)
+{
+    window.parent.postMessage(message, "*");
+}
+
+async function loadedImage()
+{
+    log("PASS: Loaded image");
+    await logStatus();
+    log("Image size: " + image.width + "x" + image.height);
+    log("end");
+}
+
+async function erroredImage()
+{
+    log("FAIL: image loading failed");
+    await logStatus();
+    log("end");
+}
+
+async function logStatus()
+{
+    var response = await fetch("status");
+    log("Status is " + response.statusText);
+}
+
+async function start(url, useCors)
+{
+    try {
+        await logStatus();
+        log("Loading image");
+        if (useCors)
+            image.crossOrigin = "anonymous";
+        image.src = ""
+    } catch(e) {
+        log("Got exception: " + e);
+        await logStatus();
+    }
+}
+    </script>
+</body>
+</html>

Modified: trunk/LayoutTests/http/tests/workers/service/resources/cors-image-fetch.js (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/resources/cors-image-fetch.js	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/resources/cors-image-fetch.js	2017-11-15 16:24:31 UTC (rev 224876)
@@ -1,39 +1,16 @@
-async function loadedImage()
-{
-    log("PASS: Loaded image");
-    await logStatus();
-    log("Image size: " + image.width + "x" + image.height);
-    finishSWTest();
-}
-
-async function erroredImage()
-{
-    log("FAIL: image loading failed");
-    await logStatus();
-    finishSWTest();
-}
-
-async function logStatus()
-{
-    var response = await fetch("status");
-    log("Status is " + response.statusText);
-}
-
 async function test()
 {
-    try {
-        log("Registering service worker");
-        await navigator.serviceWorker.register("resources/cors-image-fetch-worker.js", { });
-        log("Service worker registered");
-
-        await logStatus();
-        log("Loading image");
-        image.crossOrigin = "anonymous";
-        image.src = ""
-    } catch(e) {
-        log("Got exception: " + e);
-        await logStatus();
-    }
+    log("Registering service worker");
+    var frame = await interceptedFrame("/workers/service/resources/cors-image-fetch-worker.js", "/workers/service/resources/cors-image-fetch-iframe.html.fromserviceworker");
+    log("Service worker registered");
+    window.addEventListener("message", (event) => {
+        if (event.data ="" "end") {
+            finishSWTest();
+            return;
+        }
+        log(event.data);
+    }, false);
+    frame.contentWindow.start("http://localhost:8000/resources/square100.png.fromserviceworker", true);
 }
 
 test();

Modified: trunk/LayoutTests/http/tests/workers/service/resources/image-fetch.js (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/resources/image-fetch.js	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/resources/image-fetch.js	2017-11-15 16:24:31 UTC (rev 224876)
@@ -1,43 +1,16 @@
-function done()
-{
-    finishSWTest();
-}
-
-async function loadedImage()
-{
-    log("PASS: Loaded image");
-    await logStatus();
-    log("Image size: " + image.width + "x" + image.height);
-    finishSWTest();
-}
-
-async function erroredImage()
-{
-    log("FAIL: image loading failed");
-    await logStatus();
-    finishSWTest();
-}
-
-async function logStatus()
-{
-    var response = await fetch("status");
-    log("Status is " + response.statusText);
-}
-
 async function test()
 {
-    try {
-        log("Registering service worker");
-        await navigator.serviceWorker.register("resources/image-fetch-worker.js", { });
-        log("Service worker registered");
-
-        await logStatus();
-        log("Loading image");
-        image.src = ""
-    } catch(e) {
-        log("Got exception: " + e);
-        await logStatus();
-    }
+    log("Registering service worker");
+    var frame = await interceptedFrame("/workers/service/resources/cors-image-fetch-worker.js", "/workers/service/resources/cors-image-fetch-iframe.html.fromserviceworker");
+    log("Service worker registered");
+    window.addEventListener("message", (event) => {
+        if (event.data ="" "end") {
+            finishSWTest();
+            return;
+        }
+        log(event.data);
+    }, false);
+    frame.contentWindow.start("/resources/square100.png.fromserviceworker");
 }
 
 test();

Modified: trunk/LayoutTests/http/tests/workers/service/resources/service-worker-crossorigin-fetch.js (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/resources/service-worker-crossorigin-fetch.js	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/resources/service-worker-crossorigin-fetch.js	2017-11-15 16:24:31 UTC (rev 224876)
@@ -1,14 +1,3 @@
-function done()
-{
-    finishSWTest();
-}
-
-async function logStatus()
-{
-    var response = await fetch("status");
-    log("Status is " + response.statusText);
-}
-
 async function test()
 {
     try {
@@ -18,15 +7,16 @@
             log("Failed: fetch suceeded unexpectedly");
         } catch(e) {
             log("PASS: Fetch failed as expected with: " + e);
-        }        
+        }
 
-        await navigator.serviceWorker.register("resources/service-worker-crossorigin-fetch-worker.js", { });
+        var frame = await interceptedFrame("resources/service-worker-crossorigin-fetch-worker.js", "/");
 
-        var response = await fetch("http://localhost:8080/resources/square100.png.fromserviceworker", {headers: {"custom": "header"}});
+        var response = await frame.contentWindow.fetch("http://localhost:8080/resources/square100.png.fromserviceworker", {headers: {"custom": "header"}});
         var buffer =  await response.arrayBuffer();
         log("PASS: Got response with buffer byte length being " + buffer.byteLength);
 
-        await logStatus();
+        response = await frame.contentWindow.fetch("status");
+        log("Status is " + response.statusText);
     } catch(e) {
         log("Got exception: " + e);
     }

Modified: trunk/LayoutTests/http/tests/workers/service/resources/service-worker-fetch.js (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/resources/service-worker-fetch.js	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/resources/service-worker-fetch.js	2017-11-15 16:24:31 UTC (rev 224876)
@@ -1,26 +1,18 @@
-function done()
-{
-    finishSWTest();
-}
-
-async function logStatus()
-{
-    var response = await fetch("status");
-    log("Status is " + response.statusText);
-}
-
 async function test()
 {
     try {
-        await navigator.serviceWorker.register("resources/service-worker-fetch-worker.js", { });
+        var frame = await interceptedFrame("resources/service-worker-fetch-worker.js", "/");
+        var fetch = frame.contentWindow.fetch;
 
-        await logStatus();
+        var response = await fetch("status");
+        log("Status is " + response.statusText);
 
-        var response = await fetch("/resources/square100.png.fromserviceworker");
+        response = await fetch("/resources/square100.png.fromserviceworker");
         var buffer =  await response.arrayBuffer();
         log("Got response with buffer byte length being " + buffer.byteLength);
 
-        await logStatus();
+        response = await fetch("status");
+        log("Status is " + response.statusText);
     } catch(e) {
         log("Got exception: " + e);
     }

Modified: trunk/LayoutTests/http/tests/workers/service/resources/service-worker-importScript.js (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/resources/service-worker-importScript.js	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/resources/service-worker-importScript.js	2017-11-15 16:24:31 UTC (rev 224876)
@@ -1,9 +1,3 @@
-async function logStatus()
-{
-    var response = await fetch("status");
-    log("Status is " + response.statusText);
-}
-
 async function test()
 {
     try {
@@ -11,7 +5,11 @@
         await navigator.serviceWorker.register("resources/service-worker-importScript-worker.js", { });
         log("Registered service worker");
 
-        await logStatus();
+        var frame = await interceptedFrame("resources/service-worker-fetch-worker.js", "/");
+        var fetch = frame.contentWindow.fetch;
+        var response = await fetch("status");
+        log("Status is " + response.statusText);
+
         log("PASS");
     } catch(e) {
         console.log("Got exception: " + e);

Modified: trunk/LayoutTests/http/tests/workers/service/resources/sw-test-pre.js (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/resources/sw-test-pre.js	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/resources/sw-test-pre.js	2017-11-15 16:24:31 UTC (rev 224876)
@@ -35,6 +35,29 @@
 
 function finishSWTest()
 {
-	if (window.testRunner)
-		testRunner.notifyDone();
+    if (window.testRunner)
+        testRunner.notifyDone();
 }
+
+async function interceptedFrame(workerURL, scopeURL)
+{
+    var registration = await navigator.serviceWorker.register(workerURL, { scope : scopeURL });
+    await new Promise(resolve => {
+        if (registration.active)
+            resolve();
+        worker = registration.installing;
+        if (worker.state === "activated")
+            resolve();
+        worker.addEventListener("statechange", () => {
+            if (worker.state === "activated")
+                resolve();
+        });
+    });
+
+    return await new Promise((resolve) => {
+        var frame = document.createElement('iframe');
+        frame.src = ""
+        frame._onload_ = function() { resolve(frame); };
+        document.body.appendChild(frame);
+    });
+}

Modified: trunk/LayoutTests/http/tests/workers/service/resources/tainted-image-fetch.js (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/resources/tainted-image-fetch.js	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/resources/tainted-image-fetch.js	2017-11-15 16:24:31 UTC (rev 224876)
@@ -1,46 +1,23 @@
-async function loadedImage()
-{
-    log("PASS: Loaded image");
-    await logStatus();
-    log("Image size: " + image.width + "x" + image.height);
-
-    canvas.getContext("2d").drawImage(image, 0, 0);
-    try {
-        canvas.toDataURL("image/jpeg");
-        log("FAIL: Image is not tainted");
-    } catch (e) {
-        log("PASS: canvas toDataURL fails with " + e);
-    }
-    finishSWTest();
-}
-
-async function erroredImage()
-{
-    log("FAIL: image loading failed");
-    await logStatus();
-    finishSWTest();
-}
-
-async function logStatus()
-{
-    var response = await fetch("status");
-    log("Status is " + response.statusText);
-}
-
 async function test()
 {
-    try {
-        log("Registering service worker");
-        await navigator.serviceWorker.register("resources/cors-image-fetch-worker.js", { });
-        log("Service worker registered");
-
-        await logStatus();
-        log("Loading image");
-        image.src = ""
-    } catch(e) {
-        log("Got exception: " + e);
-        await logStatus();
-    }
+    log("Registering service worker");
+    var frame = await interceptedFrame("/workers/service/resources/cors-image-fetch-worker.js", "/workers/service/resources/cors-image-fetch-iframe.html.fromserviceworker");
+    log("Service worker registered");
+    window.addEventListener("message", (event) => {
+        if (event.data ="" "end") {
+            canvas.getContext("2d").drawImage(frame.contentWindow.image, 0, 0);
+            try {
+                canvas.toDataURL("image/jpeg");
+                log("FAIL: Image is not tainted");
+            } catch (e) {
+                log("PASS: canvas toDataURL fails with " + e);
+            }
+            finishSWTest();
+            return;
+        }
+        log(event.data);
+    }, false);
+    frame.contentWindow.start("http://localhost:8000/resources/square100.png.fromserviceworker");
 }
 
 test();

Modified: trunk/LayoutTests/http/tests/workers/service/service-worker-fetch.https-expected.txt (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/service-worker-fetch.https-expected.txt	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/service-worker-fetch.https-expected.txt	2017-11-15 16:24:31 UTC (rev 224876)
@@ -1,3 +1,4 @@
+
 Status is no status
 Got response with buffer byte length being 12940
 Status is https://127.0.0.1:8443/resources/square100.png through fetch

Modified: trunk/LayoutTests/http/tests/workers/service/tainted-image-fetch-expected.txt (224875 => 224876)


--- trunk/LayoutTests/http/tests/workers/service/tainted-image-fetch-expected.txt	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/http/tests/workers/service/tainted-image-fetch-expected.txt	2017-11-15 16:24:31 UTC (rev 224876)
@@ -1,7 +1,7 @@
  
 Registering service worker
 Service worker registered
-Status is no status
+Status is Got response for http://127.0.0.1:8000/workers/service/resources/cors-image-fetch-iframe.html, status code is 200
 Loading image
 PASS: Loaded image
 Status is Got response for http://localhost:8000/resources/square100.png, status code is 200

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (224875 => 224876)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2017-11-15 16:24:31 UTC (rev 224876)
@@ -1,3 +1,12 @@
+2017-11-15  Youenn Fablet  <[email protected]>
+
+        Remove service worker selection based on registration
+        https://bugs.webkit.org/show_bug.cgi?id=179705
+
+        Reviewed by Alex Christensen.
+
+        * web-platform-tests/service-workers/service-worker/controller-on-reload.https-expected.txt:
+
 2017-11-14  Chris Dumez  <[email protected]>
 
         [Service Workers] Implement container.getRegistrations()

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/controller-on-reload.https-expected.txt (224875 => 224876)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/controller-on-reload.https-expected.txt	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/controller-on-reload.https-expected.txt	2017-11-15 16:24:31 UTC (rev 224876)
@@ -1,4 +1,3 @@
 
+PASS controller is set upon reload after registration 
 
-FAIL controller is set upon reload after registration assert_equals: controller should be null until the document is reloaded expected null but got object "[object ServiceWorker]"
-

Modified: trunk/Source/WebCore/ChangeLog (224875 => 224876)


--- trunk/Source/WebCore/ChangeLog	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/Source/WebCore/ChangeLog	2017-11-15 16:24:31 UTC (rev 224876)
@@ -1,3 +1,20 @@
+2017-11-15  Youenn Fablet  <[email protected]>
+
+        Remove service worker selection based on registration
+        https://bugs.webkit.org/show_bug.cgi?id=179705
+
+        Reviewed by Alex Christensen.
+
+        Covered by updated tests.
+
+        Selection is now handled at navigation time.
+        We can remove the selection/unselection of worker based on registration.
+
+        * workers/service/ServiceWorkerContainer.cpp:
+        (WebCore::ServiceWorkerContainer::jobResolvedWithUnregistrationResult):
+        * workers/service/ServiceWorkerRegistration.cpp:
+        (WebCore::ServiceWorkerRegistration::ServiceWorkerRegistration):
+
 2017-11-15  Zan Dobersek  <[email protected]>
 
         [Cairo] GraphicsContext::setPlatformShadow() has to update state's shadow offset when ignoring transforms

Modified: trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp (224875 => 224876)


--- trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerContainer.cpp	2017-11-15 16:24:31 UTC (rev 224876)
@@ -343,10 +343,6 @@
         return;
     }
 
-    // FIXME: Implement proper selection of service workers.
-    if (unregistrationResult)
-        context->setActiveServiceWorker(nullptr);
-
     context->postTask([job = makeRef(job), unregistrationResult](ScriptExecutionContext&) mutable {
         job->promise().resolve<IDLBoolean>(unregistrationResult);
     });

Modified: trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.cpp (224875 => 224876)


--- trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.cpp	2017-11-15 16:17:47 UTC (rev 224875)
+++ trunk/Source/WebCore/workers/service/ServiceWorkerRegistration.cpp	2017-11-15 16:24:31 UTC (rev 224876)
@@ -60,9 +60,6 @@
     if (m_registrationData.activeWorker)
         m_activeWorker = ServiceWorker::getOrCreate(context, WTFMove(*m_registrationData.activeWorker));
 
-    // FIXME: Implement proper selection of service workers.
-    context.setActiveServiceWorker(getNewestWorker());
-
     m_container->addRegistration(*this);
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to