Implement ServiceWorker handle fetch for navigation loads
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 14 Nov 2017 23:25:28 +0000 (23:25 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 14 Nov 2017 23:25:28 +0000 (23:25 +0000)
https://bugs.webkit.org/show_bug.cgi?id=179404

Patch by Youenn Fablet <youenn@apple.com> on 2017-11-14
Reviewed by Alex Christensen and Chris Dumez.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/cache-storage/serviceworker/credentials.https-expected.txt:
* web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/extendable-message-event.https-expected.txt:
* web-platform-tests/service-workers/service-worker/claim-not-using-registration.https-expected.txt:
* web-platform-tests/service-workers/service-worker/client-id.https-expected.txt:
* web-platform-tests/service-workers/service-worker/client-navigate.https-expected.txt:
* web-platform-tests/service-workers/service-worker/clients-get-cross-origin.https-expected.txt:
* web-platform-tests/service-workers/service-worker/clients-get.https-expected.txt:
* web-platform-tests/service-workers/service-worker/clients-matchall-client-types.https-expected.txt:
* web-platform-tests/service-workers/service-worker/clients-matchall-include-uncontrolled.https-expected.txt:
* web-platform-tests/service-workers/service-worker/clients-matchall.https-expected.txt:
* web-platform-tests/service-workers/service-worker/controller-on-disconnect.https-expected.txt:
* web-platform-tests/service-workers/service-worker/controller-on-load.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-cache.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-canvas-tainting.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-csp.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event-after-navigation-within-page.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event-async-respond-with.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event-network-error.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event-redirect.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event-referrer-policy.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event-respond-with-argument.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event-respond-with-readable-stream.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event-respond-with-response-body-with-invalid-chunk.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event-respond-with-stops-propagation.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event-within-sw.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-frame-resource.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-header-visibility.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-inscope.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-outscope.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-request-css-cross-origin-mime-check.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-request-redirect.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-request-xhr.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-response-taint.https-expected.txt:
* web-platform-tests/service-workers/service-worker/fetch-response-xhr.https-expected.txt:
* web-platform-tests/service-workers/service-worker/foreign-fetch-workers.https-expected.txt:
* web-platform-tests/service-workers/service-worker/interfaces-sw.https-expected.txt:
* web-platform-tests/service-workers/service-worker/invalid-header.https-expected.txt:
* web-platform-tests/service-workers/service-worker/mime-sniffing.https-expected.txt:
* web-platform-tests/service-workers/service-worker/navigation-preload/chunked-encoding.https-expected.txt:
* web-platform-tests/service-workers/service-worker/navigation-preload/request-headers.https-expected.txt:
* web-platform-tests/service-workers/service-worker/navigation-redirect-to-http.https-expected.txt:
* web-platform-tests/service-workers/service-worker/navigation-redirect.https-expected.txt:
* web-platform-tests/service-workers/service-worker/opaque-response-preloaded.https-expected.txt:
* web-platform-tests/service-workers/service-worker/performance-timeline.https-expected.txt:
* web-platform-tests/service-workers/service-worker/postmessage-msgport-to-client.https-expected.txt:
* web-platform-tests/service-workers/service-worker/postmessage-to-client.https-expected.txt:
* web-platform-tests/service-workers/service-worker/referer.https-expected.txt:
* web-platform-tests/service-workers/service-worker/referrer-policy-header.https-expected.txt:
* web-platform-tests/service-workers/service-worker/register-same-scope-different-script-url.https-expected.txt:
* web-platform-tests/service-workers/service-worker/registration-updateviacache.https-expected.txt:
* web-platform-tests/service-workers/service-worker/request-end-to-end.https-expected.txt:
* web-platform-tests/service-workers/service-worker/resource-timing.https-expected.txt:
* web-platform-tests/service-workers/service-worker/serviceworker-message-event-historical.https-expected.txt:
* web-platform-tests/service-workers/service-worker/skip-waiting-installed.https-expected.txt:
* web-platform-tests/service-workers/service-worker/skip-waiting-using-registration.https-expected.txt:
* web-platform-tests/service-workers/service-worker/skip-waiting-without-using-registration.https-expected.txt:
* web-platform-tests/service-workers/service-worker/unregister-controller.https-expected.txt:
* web-platform-tests/service-workers/service-worker/unregister-then-register.https-expected.txt:
* web-platform-tests/service-workers/service-worker/update-bytecheck.https-expected.txt:
* web-platform-tests/service-workers/service-worker/update-recovery.https-expected.txt:
* web-platform-tests/service-workers/service-worker/worker-interception.https-expected.txt:

Source/WebCore:

Covered by rebased tests.

Step 11 of https://w3c.github.io/ServiceWorker/#on-fetch-request-algorithm is implemented in DocumentLoader as it centralizes main request loading
and knows about the context of it.

For each main resource load in document loader, we first check whether there is a matching service worker.
The fetch request is updated accordingly so that there is no difference in the handling of navigation vs. subresource requests after that point.

Updated DocumentThreadableLoader::didReceiveResponse since it can now receive responses from service worker with various response types.
A follow-up patch should properly handle cross origin responses.

* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::commitData):
(WebCore::DocumentLoader::startLoadingMainResource):
(WebCore::DocumentLoader::doLoadingMainResource):
* loader/DocumentLoader.h:
* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::didReceiveResponse):
* loader/cache/CachedResourceRequest.cpp:
(WebCore::CachedResourceRequest::setNavigationServiceWorkerRegistrationData):
* loader/cache/CachedResourceRequest.h:
* platform/MIMETypeRegistry.h:
* platform/network/cocoa/WebCoreNSURLSession.mm:
(-[WebCoreNSURLSessionDataTask resource:receivedResponse:]):

Source/WebKit:

Update handle fetch algorithm to support navigation requests.
In case of navigation requests, set service worker response mime type to text/html if none is provided.

* WebProcess/Storage/ServiceWorkerClientFetch.cpp:
(WebKit::ServiceWorkerClientFetch::didReceiveResponse):
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::startFetch):
* WebProcess/Storage/WebServiceWorkerProvider.cpp:
(WebKit::shouldHandleFetch):
(WebKit::WebServiceWorkerProvider::handleFetch):

LayoutTests:

Some new tests are timing out due to missing SW API support.
fetch-request-xhr.https.html is flaky due to always changing assertions.
uncontrolled-page.https.html is probably flaky due to setting the active service worker
in ServiceWorkerRegistration constructor. Plan is to fix that hack as a follow-up.
fetch-event-respond-with-response-body-with-invalid-chunk.https.html might be flaky for the same reason.
Marking unregister-then-register.https.html as flaky. Will follow-up investigating.

* TestExpectations: Skipping some timing out tests and marking some as flaky.

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

74 files changed:
LayoutTests/ChangeLog
LayoutTests/TestExpectations
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/credentials.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/extendable-message-event.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/claim-not-using-registration.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/client-id.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/client-navigate.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/clients-get-cross-origin.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/clients-get.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/clients-matchall-client-types.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/clients-matchall-include-uncontrolled.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/clients-matchall.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/controller-on-disconnect.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/controller-on-load.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-cache.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-csp.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-after-navigation-within-page.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-async-respond-with.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-network-error.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-redirect.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-referrer-policy.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-respond-with-argument.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-respond-with-readable-stream.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-respond-with-response-body-with-invalid-chunk.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-respond-with-stops-propagation.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-within-sw.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-frame-resource.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-header-visibility.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-inscope.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-outscope.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-request-css-cross-origin-mime-check.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-request-redirect.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-request-xhr.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-response-taint.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/fetch-response-xhr.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/foreign-fetch-workers.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/invalid-header.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/mime-sniffing.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/navigation-preload/chunked-encoding.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/navigation-preload/request-headers.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/navigation-redirect-to-http.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/navigation-redirect.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/opaque-response-preloaded.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/postmessage-msgport-to-client.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/postmessage-to-client.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/referer.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/referrer-policy-header.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/register-same-scope-different-script-url.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/request-end-to-end.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/resource-timing.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/serviceworker-message-event-historical.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/skip-waiting-installed.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/skip-waiting-using-registration.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/unregister-controller.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/unregister-then-register.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/update-bytecheck.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/update-recovery.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/worker-interception.https-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/loader/DocumentLoader.cpp
Source/WebCore/loader/DocumentLoader.h
Source/WebCore/loader/DocumentThreadableLoader.cpp
Source/WebCore/loader/cache/CachedResourceRequest.cpp
Source/WebCore/loader/cache/CachedResourceRequest.h
Source/WebCore/platform/MIMETypeRegistry.h
Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm
Source/WebKit/ChangeLog
Source/WebKit/WebProcess/Storage/ServiceWorkerClientFetch.cpp
Source/WebKit/WebProcess/Storage/WebSWClientConnection.cpp
Source/WebKit/WebProcess/Storage/WebServiceWorkerProvider.cpp

index b76bc71..237c396 100644 (file)
@@ -1,3 +1,19 @@
+2017-11-14  Youenn Fablet  <youenn@apple.com>
+
+        Implement ServiceWorker handle fetch for navigation loads
+        https://bugs.webkit.org/show_bug.cgi?id=179404
+
+        Reviewed by Alex Christensen and Chris Dumez.
+
+        Some new tests are timing out due to missing SW API support.
+        fetch-request-xhr.https.html is flaky due to always changing assertions.
+        uncontrolled-page.https.html is probably flaky due to setting the active service worker
+        in ServiceWorkerRegistration constructor. Plan is to fix that hack as a follow-up.
+        fetch-event-respond-with-response-body-with-invalid-chunk.https.html might be flaky for the same reason.
+        Marking unregister-then-register.https.html as flaky. Will follow-up investigating.
+
+        * TestExpectations: Skipping some timing out tests and marking some as flaky.
+
 2017-11-14  Ryan Haddad  <ryanhaddad@apple.com>
 
         Unreviewed test gardening for High Sierra.
index ad620f2..373c69a 100644 (file)
@@ -160,17 +160,23 @@ imported/w3c/web-platform-tests/service-workers/service-worker/link-element-regi
 imported/w3c/web-platform-tests/service-workers/service-worker/link-element-register-script.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/link-element-register-security-error.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 ]
 imported/w3c/web-platform-tests/service-workers/service-worker/navigation-preload/redirect.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/service-worker/navigation-redirect-to-http.https.html [ Skip ]
+imported/w3c/web-platform-tests/service-workers/service-worker/navigation-preload/request-headers.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/postmessage.https.html [ Skip ]
+imported/w3c/web-platform-tests/service-workers/service-worker/postmessage-msgport-to-client.https.html [ Skip ]
+imported/w3c/web-platform-tests/service-workers/service-worker/postmessage-to-client.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/register-foreign-fetch-errors.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/respond-with-body-accessed-response.https.html [ Skip ]
+imported/w3c/web-platform-tests/service-workers/service-worker/serviceworker-message-event-historical.https.html [ Skip ]
+imported/w3c/web-platform-tests/service-workers/service-worker/skip-waiting-using-registration.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/skip-waiting-without-client.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/service-worker/skip-waiting-without-using-registration.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/update-after-navigation-fetch-event.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/update-after-oneday.https.html [ Skip ]
+imported/w3c/web-platform-tests/service-workers/service-worker/update-recovery.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/websocket-in-service-worker.https.html [ Skip ]
+imported/w3c/web-platform-tests/service-workers/service-worker/client-navigate.https.html [ Skip ]
 
 http/tests/workers/service/basic-install-event-waitUntil-multiple-promises.html [ Pass Timeout ]
 http/tests/workers/service/basic-install-event-waitUntil-reject.html  [ Pass Timeout ]
@@ -181,8 +187,10 @@ webkit.org/b/179137 imported/w3c/web-platform-tests/service-workers/cache-storag
 webkit.org/b/179193 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting.https.html [ Pass Failure ]
 webkit.org/b/179193 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-cache.https.html [ Pass Failure ]
 webkit.org/b/179248 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-within-sw.https.html [ Pass Failure ]
+imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-respond-with-response-body-with-invalid-chunk.https.html [ Pass Failure ]
 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-header-visibility.https.html [ Pass Failure ]
 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-request-redirect.https.html [ Pass Failure ]
+imported/w3c/web-platform-tests/service-workers/service-worker/fetch-request-xhr.https.html [ Pass Failure ]
 imported/w3c/web-platform-tests/service-workers/service-worker/foreign-fetch-cors.https.html [ Pass Failure ]
 imported/w3c/web-platform-tests/service-workers/service-worker/performance-timeline.https.html [ Pass Failure ]
 imported/w3c/web-platform-tests/service-workers/service-worker/navigation-redirect.https.html [ Pass Failure ]
@@ -193,8 +201,10 @@ webkit.org/b/179138 imported/w3c/web-platform-tests/service-workers/service-work
 imported/w3c/web-platform-tests/service-workers/service-worker/service-worker-csp-connect.https.html [ Pass Failure ]
 imported/w3c/web-platform-tests/service-workers/service-worker/service-worker-csp-default.https.html [ Pass Failure ]
 imported/w3c/web-platform-tests/service-workers/service-worker/service-worker-csp-script.https.html [ Pass Failure ]
+imported/w3c/web-platform-tests/service-workers/service-worker/uncontrolled-page.https.html [ Pass Failure ]
 imported/w3c/web-platform-tests/service-workers/service-worker/update-bytecheck.https.html [ Pass Failure ]
 imported/w3c/web-platform-tests/service-workers/service-worker/unregister-controller.https.html [ Pass Failure ]
+imported/w3c/web-platform-tests/service-workers/service-worker/unregister-then-register.https.html [ Pass Failure ]
 imported/w3c/web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.https.html [ Pass Failure ]
 imported/w3c/web-platform-tests/service-workers/service-worker/websocket.https.html [ Pass Failure ]
 imported/w3c/web-platform-tests/service-workers/service-worker/windowclient-navigate.https.html [ Pass Failure ]
index b44a1bf..afef485 100644 (file)
@@ -1,3 +1,74 @@
+2017-11-14  Youenn Fablet  <youenn@apple.com>
+
+        Implement ServiceWorker handle fetch for navigation loads
+        https://bugs.webkit.org/show_bug.cgi?id=179404
+
+        Reviewed by Alex Christensen and Chris Dumez.
+
+        * web-platform-tests/service-workers/cache-storage/serviceworker/credentials.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/extendable-message-event.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/claim-not-using-registration.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/client-id.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/client-navigate.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/clients-get-cross-origin.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/clients-get.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/clients-matchall-client-types.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/clients-matchall-include-uncontrolled.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/clients-matchall.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/controller-on-disconnect.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/controller-on-load.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-canvas-tainting-cache.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-canvas-tainting.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-csp.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-event-after-navigation-within-page.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-event-async-respond-with.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-event-network-error.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-event-redirect.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-event-referrer-policy.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-event-respond-with-argument.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-event-respond-with-readable-stream.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-event-respond-with-response-body-with-invalid-chunk.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-event-respond-with-stops-propagation.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-event-within-sw.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-event.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-frame-resource.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-header-visibility.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-inscope.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-outscope.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-request-css-cross-origin-mime-check.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-request-redirect.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-request-xhr.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-response-taint.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/fetch-response-xhr.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/foreign-fetch-workers.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/interfaces-sw.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/invalid-header.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/mime-sniffing.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/navigation-preload/chunked-encoding.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/navigation-preload/request-headers.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/navigation-redirect-to-http.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/navigation-redirect.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/opaque-response-preloaded.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/performance-timeline.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/postmessage-msgport-to-client.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/postmessage-to-client.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/referer.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/referrer-policy-header.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/register-same-scope-different-script-url.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/registration-updateviacache.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/request-end-to-end.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/resource-timing.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/serviceworker-message-event-historical.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/skip-waiting-installed.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/skip-waiting-using-registration.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/skip-waiting-without-using-registration.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/unregister-controller.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/unregister-then-register.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/update-bytecheck.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/update-recovery.https-expected.txt:
+        * web-platform-tests/service-workers/service-worker/worker-interception.https-expected.txt:
+
 2017-11-14  Chris Dumez  <cdumez@apple.com>
 
         Unreviewed, rebaseline skipped / flaky service worker tests
index 8534539..1d8f9f8 100644 (file)
@@ -2,7 +2,7 @@
 Harness Error (TIMEOUT), message = null
 
 FAIL Post an extendable message from a top-level client promise_test: Unhandled rejection with value: object "NotSupportedError: Passing MessagePort objects to postMessage is not yet supported"
-FAIL Post an extendable message from a nested client promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'f.contentWindow.navigator.serviceWorker.controller.postMessage')"
+FAIL Post an extendable message from a nested client assert_equals: event `source` property `url` expected "https://localhost:9443/service-workers/service-worker/ServiceWorkerGlobalScope/resources/scope/extendable-message-event-from-nested" but got ""
 TIMEOUT Post loopback extendable messages Test timed out
 NOTRUN Post extendable messages among service workers 
 
index 636b2b9..e0db16d 100644 (file)
@@ -1,5 +1,5 @@
 
 
-FAIL Test claim client which is not using registration promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'frame1.contentWindow.navigator.serviceWorker.controller.scriptURL')"
+FAIL Test claim client which is not using registration promise_test: Unhandled rejection with value: object "NotSupportedError: Passing MessagePort objects to postMessage is not yet supported"
 FAIL Test claim client when there's a longer-matched registration not already used by the page promise_test: Unhandled rejection with value: object "NotSupportedError: Passing MessagePort objects to postMessage is not yet supported"
 
index 3e1a65f..12c440e 100644 (file)
@@ -1,4 +1,4 @@
 
 
-FAIL Client.id returns the client's ID. assert_unreached: unexpected rejection: null is not an object (evaluating 'f.contentWindow.navigator.serviceWorker.controller.postMessage') Reached unreachable code
+FAIL Client.id returns the client's ID. assert_unreached: unexpected rejection: Passing MessagePort objects to postMessage is not yet supported Reached unreachable code
 
index 9b1eef4..27a1535 100644 (file)
@@ -1,8 +1,10 @@
 
 
-FAIL Frame location should update on successful navigation assert_unreached: unexpected rejection: null is not an object (evaluating 'remote.onerror = function(error) { this_obj.remote_error(error); }') Reached unreachable code
-FAIL Frame location should not be accessible after redirect assert_unreached: unexpected rejection: null is not an object (evaluating 'remote.onerror = function(error) { this_obj.remote_error(error); }') Reached unreachable code
-FAIL Frame location should not be accessible after cross-origin navigation assert_unreached: unexpected rejection: null is not an object (evaluating 'remote.onerror = function(error) { this_obj.remote_error(error); }') Reached unreachable code
-FAIL Frame location should not update on failed about:blank navigation assert_unreached: unexpected rejection: null is not an object (evaluating 'remote.onerror = function(error) { this_obj.remote_error(error); }') Reached unreachable code
-FAIL Frame location should not update on failed mixed-content navigation assert_unreached: unexpected rejection: null is not an object (evaluating 'remote.onerror = function(error) { this_obj.remote_error(error); }') Reached unreachable code
+Harness Error (TIMEOUT), message = null
+
+TIMEOUT Frame location should update on successful navigation Test timed out
+NOTRUN Frame location should not be accessible after redirect 
+NOTRUN Frame location should not be accessible after cross-origin navigation 
+NOTRUN Frame location should not update on failed about:blank navigation 
+NOTRUN Frame location should not update on failed mixed-content navigation 
 
index 915f07d..1ce31cb 100644 (file)
@@ -1,2 +1,2 @@
-CONSOLE MESSAGE: line 48: Unhandled Promise Rejection: TypeError: null is not an object (evaluating 'iframe.contentWindow.navigator.serviceWorker.controller.postMessage')
+CONSOLE MESSAGE: line 48: Unhandled Promise Rejection: NotSupportedError: Passing MessagePort objects to postMessage is not yet supported
 
index 3f7fe14..29f3378 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL Test Clients.get() promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'frame.contentWindow.navigator.serviceWorker.controller.postMessage')"
+FAIL Test Clients.get() promise_test: Unhandled rejection with value: object "NotSupportedError: Passing MessagePort objects to postMessage is not yet supported"
 
index b274445..cdec7b1 100644 (file)
@@ -1,5 +1,5 @@
 
 
-FAIL Verify matchAll() with window client type assert_unreached: unexpected rejection: null is not an object (evaluating 'frame.contentWindow.navigator.serviceWorker.controller.postMessage') Reached unreachable code
+FAIL Verify matchAll() with window client type assert_unreached: unexpected rejection: Passing MessagePort objects to postMessage is not yet supported Reached unreachable code
 FAIL Verify matchAll() with {window, sharedworker, worker} client types promise_test: Unhandled rejection with value: object "ReferenceError: Can't find variable: SharedWorker"
 
index c25f8f0..6856cb8 100644 (file)
@@ -1,4 +1,4 @@
 
 
-FAIL Verify matchAll() respect includeUncontrolled assert_unreached: unexpected rejection: null is not an object (evaluating 'frame.contentWindow.navigator.serviceWorker.controller.postMessage') Reached unreachable code
+FAIL Verify matchAll() respect includeUncontrolled assert_unreached: unexpected rejection: Passing MessagePort objects to postMessage is not yet supported Reached unreachable code
 
index ca98561..3a009df 100644 (file)
@@ -1,4 +1,4 @@
 
 
-FAIL Test Clients.matchAll() assert_unreached: unexpected rejection: null is not an object (evaluating 'frame2.contentWindow.navigator.serviceWorker.controller.postMessage') Reached unreachable code
+FAIL Test Clients.matchAll() assert_unreached: unexpected rejection: Passing MessagePort objects to postMessage is not yet supported Reached unreachable code
 
index 3598a9a..4ff0ba4 100644 (file)
@@ -1,4 +1,3 @@
 
-
-FAIL controller is cleared on disconnected window assert_true: controller should be a ServiceWorker object expected true got false
+FAIL controller is cleared on disconnected window assert_equals: disconnected frame should not be controlled expected null but got object "[object ServiceWorker]"
 
index 4bcf172..b01ff0d 100644 (file)
@@ -2,35 +2,36 @@ CONSOLE MESSAGE: Credentials flag is true, but Access-Control-Allow-Credentials
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
 CONSOLE MESSAGE: Credentials flag is true, but Access-Control-Allow-Credentials is not "true".
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
-CONSOLE MESSAGE: line 39: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
-CONSOLE MESSAGE: line 39: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
-CONSOLE MESSAGE: line 39: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
 CONSOLE MESSAGE: line 39: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
 CONSOLE MESSAGE: line 39: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
 CONSOLE MESSAGE: line 39: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
+<<<<<<< HEAD
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
+=======
+CONSOLE MESSAGE: Credentials flag is true, but Access-Control-Allow-Credentials is not "true".
+>>>>>>> 19545d5ffb3... fix-179404
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
+<<<<<<< HEAD
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
+=======
+CONSOLE MESSAGE: line 39: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
+CONSOLE MESSAGE: line 39: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
+CONSOLE MESSAGE: line 39: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
+>>>>>>> 19545d5ffb3... fix-179404
  
 
-FAIL Verify canvas tainting of fetched image in a Service Worker assert_equals: expected "finish" but got "failure:Result of url:https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?PNGIMAGE&reject&cache  cross_origin:  must be LOAD_ERROR but NOT_TAINTED"
+FAIL Verify canvas tainting of fetched image in a Service Worker assert_equals: expected "finish" but got "failure:Result of url:https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?PNGIMAGE&mode=same-origin&url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FPNGIMAGE&cache  cross_origin:  must be NOT_TAINTED but TAINTED"
 
index 3e2929e..bd6784a 100644 (file)
@@ -1,18 +1,22 @@
 CONSOLE MESSAGE: Credentials flag is true, but Access-Control-Allow-Credentials is not "true".
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
+<<<<<<< HEAD
+=======
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
+>>>>>>> 19545d5ffb3... fix-179404
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
+CONSOLE MESSAGE: line 39: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
 CONSOLE MESSAGE: line 39: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
 CONSOLE MESSAGE: line 39: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
 CONSOLE MESSAGE: line 39: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
 CONSOLE MESSAGE: line 39: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
-CONSOLE MESSAGE: line 39: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
+<<<<<<< HEAD
 CONSOLE MESSAGE: line 39: Unable to get image data from canvas because the canvas has been tainted by cross-origin data.
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
@@ -29,8 +33,11 @@ CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
+=======
+CONSOLE MESSAGE: Credentials flag is true, but Access-Control-Allow-Credentials is not "true".
+>>>>>>> 19545d5ffb3... fix-179404
 CONSOLE MESSAGE: Cross-origin image load denied by Cross-Origin Resource Sharing policy.
  
 
-FAIL Verify canvas tainting of fetched image in a Service Worker assert_equals: expected "finish" but got "failure:Result of url:https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?PNGIMAGE&reject  cross_origin:  must be LOAD_ERROR but NOT_TAINTED"
+FAIL Verify canvas tainting of fetched image in a Service Worker assert_equals: expected "finish" but got "failure:Result of url:https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?PNGIMAGE&mode=same-origin&url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FPNGIMAGE  cross_origin:  must be NOT_TAINTED but TAINTED"
 
index b45a131..c3bf43f 100644 (file)
@@ -1,4 +1,5 @@
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
+<<<<<<< HEAD
 CONSOLE MESSAGE: XMLHttpRequest cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?reject due to access control checks.
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: XMLHttpRequest cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?throw due to access control checks.
@@ -20,11 +21,21 @@ CONSOLE MESSAGE: XMLHttpRequest cannot load https://127.0.0.1:9443/service-worke
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: XMLHttpRequest cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?resolve-null due to access control checks.
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
+=======
+CONSOLE MESSAGE: XMLHttpRequest cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?throw due to access control checks.
+CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
+CONSOLE MESSAGE: XMLHttpRequest cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?throw due to access control checks.
+CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
+>>>>>>> 19545d5ffb3... fix-179404
 CONSOLE MESSAGE: XMLHttpRequest cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?ignore due to access control checks.
 CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: XMLHttpRequest cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?mode=same-origin&url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py due to access control checks.
 CONSOLE MESSAGE: XMLHttpRequest cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?mode=same-origin&url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py due to access control checks.
  
 
+<<<<<<< HEAD
 FAIL Verify CORS XHR of fetch() in a Service Worker assert_equals: expected "finish" but got "failure:Result of url:https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?reject  with_credentials: true must be FAIL but SUCCESS"
+=======
+FAIL Verify CORS XHR of fetch() in a Service Worker assert_equals: expected "finish" but got "failure:Result of url:https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?mode=no-cors&url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py  with_credentials: false must be FAIL but STATUS0"
+>>>>>>> 19545d5ffb3... fix-179404
 
index fb3041c..b6c3e50 100644 (file)
@@ -2,5 +2,5 @@ CONSOLE MESSAGE: Refused to load https://127.0.0.1:9443/service-workers/service-
 CONSOLE MESSAGE: Refused to load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?PNGIMAGE because it does not appear in the img-src directive of the Content Security Policy.
 
 
-FAIL Verify CSP control of fetch() in a Service Worker promise_test: Unhandled rejection with value: object "Error: Allowed scope image resource which was fetched via SW should be loaded. - undefined"
+FAIL Verify CSP control of fetch() in a Service Worker promise_test: Unhandled rejection with value: object "Error: Disallowed scope image resource which was fetched via SW should not be loaded."
 
index 8b45d5b..db91f18 100644 (file)
@@ -1,5 +1,5 @@
 
 
-FAIL Service Worker should respond to fetch event after the hash changes assert_equals: expected "intercepted by service worker" but got "a simple text file\n"
-FAIL Service Worker should respond to fetch event after the pushState assert_equals: expected "intercepted by service worker" but got "a simple text file\n"
+FAIL Service Worker should respond to fetch event after the hash changes assert_equals: expected "intercepted by service worker" but got ""
+FAIL Service Worker should respond to fetch event after the pushState assert_equals: expected "intercepted by service worker" but got ""
 
index 9acb05d..67f2a9a 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL Calling respondWith asynchronously throws an exception promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'worker.postMessage')"
+FAIL Calling respondWith asynchronously throws an exception promise_test: Unhandled rejection with value: object "NotSupportedError: Passing MessagePort objects to postMessage is not yet supported"
 
index 63c7eb9..a4c252b 100644 (file)
@@ -1,58 +1,58 @@
 
 PASS initialize global state 
-FAIL Non-navigation, manual redirect, cors mode Request redirected to same-origin without credentials should succeed opaqueredirect interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, cors mode Request redirected to no-cors without credentials should succeed opaqueredirect interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, cors mode Request redirected to cors without credentials should succeed opaqueredirect interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, same-origin mode Request redirected to same-origin without credentials should succeed opaqueredirect interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, same-origin mode Request redirected to no-cors without credentials should succeed opaqueredirect interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, same-origin mode Request redirected to cors without credentials should succeed opaqueredirect interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, no-cors mode Request redirected to same-origin without credentials should succeed opaqueredirect interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, no-cors mode Request redirected to no-cors without credentials should succeed interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, no-cors mode Request redirected to cors without credentials should succeed interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, cors mode Request redirected to same-origin with credentials should succeed opaqueredirect interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, cors mode Request redirected to no-cors with credentials should succeed opaqueredirect interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, cors mode Request redirected to cors with credentials should succeed opaqueredirect interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, same-origin mode Request redirected to same-origin with credentials should succeed opaqueredirect interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, same-origin mode Request redirected to no-cors with credentials should succeed opaqueredirect interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, same-origin mode Request redirected to cors with credentials should succeed opaqueredirect interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, no-cors mode Request redirected to same-origin with credentials should succeed opaqueredirect interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, no-cors mode Request redirected to no-cors with credentials should succeed interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
-FAIL Non-navigation, manual redirect, no-cors mode Request redirected to cors with credentials should succeed interception and response should not be redirected assert_equals: response.type expected "opaqueredirect" but got "basic"
+PASS Non-navigation, manual redirect, cors mode Request redirected to same-origin without credentials should succeed opaqueredirect interception and response should not be redirected 
+PASS Non-navigation, manual redirect, cors mode Request redirected to no-cors without credentials should succeed opaqueredirect interception and response should not be redirected 
+PASS Non-navigation, manual redirect, cors mode Request redirected to cors without credentials should succeed opaqueredirect interception and response should not be redirected 
+PASS Non-navigation, manual redirect, same-origin mode Request redirected to same-origin without credentials should succeed opaqueredirect interception and response should not be redirected 
+PASS Non-navigation, manual redirect, same-origin mode Request redirected to no-cors without credentials should succeed opaqueredirect interception and response should not be redirected 
+PASS Non-navigation, manual redirect, same-origin mode Request redirected to cors without credentials should succeed opaqueredirect interception and response should not be redirected 
+PASS Non-navigation, manual redirect, no-cors mode Request redirected to same-origin without credentials should succeed opaqueredirect interception and response should not be redirected 
+PASS Non-navigation, manual redirect, no-cors mode Request redirected to no-cors without credentials should succeed interception and response should not be redirected 
+PASS Non-navigation, manual redirect, no-cors mode Request redirected to cors without credentials should succeed interception and response should not be redirected 
+PASS Non-navigation, manual redirect, cors mode Request redirected to same-origin with credentials should succeed opaqueredirect interception and response should not be redirected 
+PASS Non-navigation, manual redirect, cors mode Request redirected to no-cors with credentials should succeed opaqueredirect interception and response should not be redirected 
+PASS Non-navigation, manual redirect, cors mode Request redirected to cors with credentials should succeed opaqueredirect interception and response should not be redirected 
+PASS Non-navigation, manual redirect, same-origin mode Request redirected to same-origin with credentials should succeed opaqueredirect interception and response should not be redirected 
+PASS Non-navigation, manual redirect, same-origin mode Request redirected to no-cors with credentials should succeed opaqueredirect interception and response should not be redirected 
+PASS Non-navigation, manual redirect, same-origin mode Request redirected to cors with credentials should succeed opaqueredirect interception and response should not be redirected 
+PASS Non-navigation, manual redirect, no-cors mode Request redirected to same-origin with credentials should succeed opaqueredirect interception and response should not be redirected 
+PASS Non-navigation, manual redirect, no-cors mode Request redirected to no-cors with credentials should succeed interception and response should not be redirected 
+PASS Non-navigation, manual redirect, no-cors mode Request redirected to cors with credentials should succeed interception and response should not be redirected 
 FAIL Non-navigation, follow redirect, cors mode Request redirected to same-origin without credentials should succeed interception and response should be redirected assert_equals: response.redirected expected true but got false
-FAIL Non-navigation, follow redirect, cors mode Request redirected to no-cors without credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-follow-cors-redirects-to-nocors-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252F127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py Promise did not reject."
+PASS Non-navigation, follow redirect, cors mode Request redirected to no-cors without credentials should fail interception and response should not be redirected 
 FAIL Non-navigation, follow redirect, cors mode Request redirected to cors without credentials should succeed interception and response should be redirected assert_equals: response.type expected "cors" but got "basic"
 FAIL Non-navigation, follow redirect, same-origin mode Request redirected to same-origin without credentials should succeed interception and response should be redirected assert_equals: response.redirected expected true but got false
-FAIL Non-navigation, follow redirect, same-origin mode Request redirected to no-cors without credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-follow-sameorigin-redirects-to-nocors-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252F127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py Promise did not reject."
-FAIL Non-navigation, follow redirect, same-origin mode Request redirected to cors without credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-follow-sameorigin-redirects-to-cors-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252F127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py%253FACAOrigin%253Dhttps%25253A%25252F%25252Flocalhost%25253A9443 Promise did not reject."
+PASS Non-navigation, follow redirect, same-origin mode Request redirected to no-cors without credentials should fail interception and response should not be redirected 
+PASS Non-navigation, follow redirect, same-origin mode Request redirected to cors without credentials should fail interception and response should not be redirected 
 FAIL Non-navigation, follow redirect, no-cors mode Request redirected to same-origin without credentials should succeed interception and response should be redirected assert_equals: response.redirected expected true but got false
-FAIL Non-navigation, follow redirect, no-cors mode Request redirected to no-cors without credentials should succeed interception and response should not be redirected assert_equals: response.type expected "opaque" but got "basic"
-FAIL Non-navigation, follow redirect, no-cors mode Request redirected to cors without credentials should succeed interception and response should not be redirected assert_equals: response.type expected "opaque" but got "basic"
+PASS Non-navigation, follow redirect, no-cors mode Request redirected to no-cors without credentials should succeed interception and response should not be redirected 
+PASS Non-navigation, follow redirect, no-cors mode Request redirected to cors without credentials should succeed interception and response should not be redirected 
 FAIL Non-navigation, follow redirect, cors mode Request redirected to same-origin with credentials should succeed interception and response should be redirected assert_equals: response.redirected expected true but got false
-FAIL Non-navigation, follow redirect, cors mode Request redirected to no-cors with credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-follow-cors-redirects-to-nocors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py Promise did not reject."
+PASS Non-navigation, follow redirect, cors mode Request redirected to no-cors with credentials should fail interception and response should not be redirected 
 FAIL Non-navigation, follow redirect, cors mode Request redirected to cors with credentials should fail interception and response should be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-follow-cors-redirects-to-cors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py%253FACAOrigin%253Dhttps%25253A%25252F%25252Flocalhost%25253A9443 Promise did not reject."
 FAIL Non-navigation, follow redirect, same-origin mode Request redirected to same-origin with credentials should succeed interception and response should be redirected assert_equals: response.redirected expected true but got false
-FAIL Non-navigation, follow redirect, same-origin mode Request redirected to no-cors with credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-follow-sameorigin-redirects-to-nocors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py Promise did not reject."
-FAIL Non-navigation, follow redirect, same-origin mode Request redirected to cors with credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-follow-sameorigin-redirects-to-cors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py%253FACAOrigin%253Dhttps%25253A%25252F%25252Flocalhost%25253A9443 Promise did not reject."
+PASS Non-navigation, follow redirect, same-origin mode Request redirected to no-cors with credentials should fail interception and response should not be redirected 
+PASS Non-navigation, follow redirect, same-origin mode Request redirected to cors with credentials should fail interception and response should not be redirected 
 FAIL Non-navigation, follow redirect, no-cors mode Request redirected to same-origin with credentials should succeed interception and response should be redirected assert_equals: response.redirected expected true but got false
-FAIL Non-navigation, follow redirect, no-cors mode Request redirected to no-cors with credentials should succeed interception and response should not be redirected assert_equals: response.type expected "opaque" but got "basic"
-FAIL Non-navigation, follow redirect, no-cors mode Request redirected to cors with credentials should succeed interception and response should not be redirected assert_equals: response.type expected "opaque" but got "basic"
-FAIL Non-navigation, error redirect, cors mode Request redirected to same-origin without credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-cors-redirects-to-sameorigin-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Flocalhost%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py Promise did not reject."
-FAIL Non-navigation, error redirect, cors mode Request redirected to no-cors without credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-cors-redirects-to-nocors-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252F127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py Promise did not reject."
-FAIL Non-navigation, error redirect, cors mode Request redirected to cors without credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-cors-redirects-to-cors-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252F127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py%253FACAOrigin%253Dhttps%25253A%25252F%25252Flocalhost%25253A9443 Promise did not reject."
-FAIL Non-navigation, error redirect, same-origin mode Request redirected to same-origin without credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-sameorigin-redirects-to-sameorigin-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Flocalhost%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py Promise did not reject."
-FAIL Non-navigation, error redirect, same-origin mode Request redirected to no-cors without credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-sameorigin-redirects-to-nocors-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252F127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py Promise did not reject."
-FAIL Non-navigation, error redirect, same-origin mode Request redirected to cors without credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-sameorigin-redirects-to-cors-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252F127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py%253FACAOrigin%253Dhttps%25253A%25252F%25252Flocalhost%25253A9443 Promise did not reject."
-FAIL Non-navigation, error redirect, no-cors mode Request redirected to same-origin without credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-nocors-redirects-to-sameorigin-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Flocalhost%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py Promise did not reject."
-FAIL Non-navigation, error redirect, no-cors mode Request redirected to no-cors without credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-nocors-redirects-to-nocors-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252F127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py Promise did not reject."
-FAIL Non-navigation, error redirect, no-cors mode Request redirected to cors without credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-nocors-redirects-to-cors-nocreds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252F127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py%253FACAOrigin%253Dhttps%25253A%25252F%25252Flocalhost%25253A9443 Promise did not reject."
-FAIL Non-navigation, error redirect, cors mode Request redirected to same-origin with credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-cors-redirects-to-sameorigin-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540localhost%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py Promise did not reject."
-FAIL Non-navigation, error redirect, cors mode Request redirected to no-cors with credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-cors-redirects-to-nocors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py Promise did not reject."
-FAIL Non-navigation, error redirect, cors mode Request redirected to cors with credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-cors-redirects-to-cors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py%253FACAOrigin%253Dhttps%25253A%25252F%25252Flocalhost%25253A9443 Promise did not reject."
-FAIL Non-navigation, error redirect, same-origin mode Request redirected to same-origin with credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-sameorigin-redirects-to-sameorigin-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540localhost%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py Promise did not reject."
-FAIL Non-navigation, error redirect, same-origin mode Request redirected to no-cors with credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-sameorigin-redirects-to-nocors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py Promise did not reject."
-FAIL Non-navigation, error redirect, same-origin mode Request redirected to cors with credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-sameorigin-redirects-to-cors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py%253FACAOrigin%253Dhttps%25253A%25252F%25252Flocalhost%25253A9443 Promise did not reject."
-FAIL Non-navigation, error redirect, no-cors mode Request redirected to same-origin with credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-nocors-redirects-to-sameorigin-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540localhost%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py Promise did not reject."
-FAIL Non-navigation, error redirect, no-cors mode Request redirected to no-cors with credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-nocors-redirects-to-nocors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py Promise did not reject."
-FAIL Non-navigation, error redirect, no-cors mode Request redirected to cors with credentials should fail interception and response should not be redirected promise_test: Unhandled rejection with value: "assert_promise_rejects: Must fail to fetch: url=/nonav-error-nocors-redirects-to-cors-creds?url=redirect.py%3FRedirect%3Dhttps%253A%252F%252Ffoo%253Abar%2540127.0.0.1%253A9443%252Fservice-workers%252Fservice-worker%252Fresources%252Fsuccess.py%253FACAOrigin%253Dhttps%25253A%25252F%25252Flocalhost%25253A9443 Promise did not reject."
+PASS Non-navigation, follow redirect, no-cors mode Request redirected to no-cors with credentials should succeed interception and response should not be redirected 
+PASS Non-navigation, follow redirect, no-cors mode Request redirected to cors with credentials should succeed interception and response should not be redirected 
+PASS Non-navigation, error redirect, cors mode Request redirected to same-origin without credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, cors mode Request redirected to no-cors without credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, cors mode Request redirected to cors without credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, same-origin mode Request redirected to same-origin without credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, same-origin mode Request redirected to no-cors without credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, same-origin mode Request redirected to cors without credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, no-cors mode Request redirected to same-origin without credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, no-cors mode Request redirected to no-cors without credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, no-cors mode Request redirected to cors without credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, cors mode Request redirected to same-origin with credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, cors mode Request redirected to no-cors with credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, cors mode Request redirected to cors with credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, same-origin mode Request redirected to same-origin with credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, same-origin mode Request redirected to no-cors with credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, same-origin mode Request redirected to cors with credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, no-cors mode Request redirected to same-origin with credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, no-cors mode Request redirected to no-cors with credentials should fail interception and response should not be redirected 
+PASS Non-navigation, error redirect, no-cors mode Request redirected to cors with credentials should fail interception and response should not be redirected 
 PASS restore global state 
 
index 839402a..c43ef80 100644 (file)
@@ -1,4 +1,4 @@
 
 
-FAIL Service Worker responds to fetch event with the referrer policy assert_unreached: unexpected rejection: assert_equals: Service Worker should respond to fetch with the default referrer policy expected "ReferrerPolicy: no-referrer-when-downgrade" but got "Here's a simple html file.\n" Reached unreachable code
+FAIL Service Worker responds to fetch event with the referrer policy assert_unreached: unexpected rejection: assert_equals: Service Worker should respond to fetch with the default referrer policy expected "ReferrerPolicy: no-referrer-when-downgrade" but got "" Reached unreachable code
 
index bc69d01..efaac5b 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL respondWith() takes either a Response or a promise that resolves with a Response. Other values should raise a network error. assert_equals: expected "PASS" but got "FAIL: no controller"
+PASS respondWith() takes either a Response or a promise that resolves with a Response. Other values should raise a network error. 
 
index 313bf1d..a55c224 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL respondWith() invokes stopImmediatePropagation() promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'worker.postMessage')"
+FAIL respondWith() invokes stopImmediatePropagation() promise_test: Unhandled rejection with value: object "NotSupportedError: Passing MessagePort objects to postMessage is not yet supported"
 
index b094047..2860dbf 100644 (file)
@@ -1,4 +1,4 @@
 
-FAIL Service worker intercepts requests from window assert_equals: fetch intercepted expected "intercepted" but got "Hello world\n"
-FAIL Service worker does not intercept fetch/cache requests within service worker assert_equals: fetch within SW not intercepted expected "Hello world\n" but got "{\"error\": {\"message\": \"\", \"code\": 404}}"
+PASS Service worker intercepts requests from window 
+PASS Service worker does not intercept fetch/cache requests within service worker 
 
index e5ac0ae..21e1216 100644 (file)
@@ -1,21 +1,21 @@
 
 
-FAIL Service Worker headers in the request of a fetch event assert_unreached: unexpected rejection: JSON Parse error: Unexpected identifier "Here" Reached unreachable code
-FAIL Service Worker responds to fetch event with string assert_unreached: unexpected rejection: assert_equals: Service Worker should respond to fetch with a test string expected "Test string" but got "Here's a simple html file.\n" Reached unreachable code
-FAIL Service Worker responds to fetch event with blob body assert_unreached: unexpected rejection: assert_equals: Service Worker should respond to fetch with a test string expected "Test blob" but got "Here's a simple html file.\n" Reached unreachable code
-FAIL Service Worker responds to fetch event with the referrer URL assert_unreached: unexpected rejection: assert_equals: Service Worker should respond to fetch with the referrer URL expected "Referrer: https://localhost:9443/service-workers/service-worker/fetch-event.https.html" but got "Here's a simple html file.\n" Reached unreachable code
-FAIL Service Worker responds to fetch event with an existing client id assert_unreached: unexpected rejection: assert_equals: Service Worker should respond to fetch with a client id expected "Client ID Not Found" but got "Here's a simple html file.\n" Reached unreachable code
+FAIL Service Worker headers in the request of a fetch event assert_unreached: unexpected rejection: assert_true: request specifies "Upgrade-Insecure Requests header as inserted by Fetch expected true got false Reached unreachable code
+FAIL Service Worker responds to fetch event with string assert_unreached: unexpected rejection: assert_equals: The character set of the response created with a string should be UTF-8 expected "UTF-8" but got "windows-1252" Reached unreachable code
+FAIL Service Worker responds to fetch event with blob body assert_unreached: unexpected rejection: assert_equals: Service Worker should respond to fetch with a test string expected "Test blob" but got "" Reached unreachable code
+FAIL Service Worker responds to fetch event with the referrer URL assert_unreached: unexpected rejection: assert_equals: Service Worker should respond to fetch with the referrer URL expected "Referrer: https://localhost:9443/service-workers/service-worker/fetch-event.https.html" but got "" Reached unreachable code
+FAIL Service Worker responds to fetch event with an existing client id assert_unreached: unexpected rejection: assert_equals: Service Worker should respond to fetch with a client id expected "Client ID Not Found" but got "Client ID Found: " Reached unreachable code
 PASS Service Worker does not respond to fetch event 
-FAIL Service Worker responds to fetch event with null response body assert_unreached: unexpected rejection: assert_equals: Response should be the empty string expected "" but got "Here's a simple html file.\n" Reached unreachable code
-FAIL Service Worker fetches other file in fetch event assert_unreached: unexpected rejection: assert_equals: Response should come from fetched other file expected "Here's an other html file.\n" but got "Here's a simple html file.\n" Reached unreachable code
-FAIL Service Worker responds to fetch event with POST form assert_unreached: unexpected rejection: assert_equals: expected "POST:application/x-www-form-urlencoded:testName1=testValue1&testName2=testValue2" but got "{\"error\": {\"message\": \"\", \"code\": 404}}" Reached unreachable code
-FAIL Multiple calls of respondWith must throw InvalidStateErrors assert_unreached: unexpected rejection: assert_equals: Multiple calls of respondWith must throw InvalidStateErrors. expected "(0)(1)[InvalidStateError](2)[InvalidStateError]" but got "Here's a simple html file.\n" Reached unreachable code
-FAIL Service Worker event.respondWith must set the used flag assert_unreached: unexpected rejection: assert_equals: Response should come from fetched other file expected "Here's an other html file.\n" but got "Here's a simple html file.\n" Reached unreachable code
-FAIL Service Worker should expose FetchEvent URL fragments. assert_unreached: unexpected rejection: assert_equals: Service worker should expose URL fragments in request. expected "Fragment Found :#/some/fragment" but got "Here's a simple html file.\n" Reached unreachable code
-FAIL Service Worker responds to fetch event with the correct cache types assert_unreached: unexpected rejection: assert_equals: expected "default" but got "Here's a simple html file.\n" Reached unreachable code
-FAIL Service Worker should intercept EventSource assert_unreached: unexpected rejection: The EventSource fired an error event. Reached unreachable code
-FAIL Service Worker responds to fetch event with the correct integrity_metadata assert_unreached: unexpected rejection: assert_equals: expected "" but got "Here's a simple html file.\n" Reached unreachable code
-FAIL FetchEvent#body is a string assert_equals: expected "i am the request body" but got "{\"error\": {\"message\": \"\", \"code\": 404}}"
-FAIL FetchEvent#body is a blob assert_equals: expected "it's me the blob and more blob!" but got "{\"error\": {\"message\": \"\", \"code\": 404}}"
-FAIL Service Worker responds to fetch event with the correct keepalive value assert_equals: expected "false" but got "Here's a simple html file.\n"
+PASS Service Worker responds to fetch event with null response body 
+PASS Service Worker fetches other file in fetch event 
+FAIL Service Worker responds to fetch event with POST form assert_unreached: unexpected rejection: assert_equals: expected "POST:application/x-www-form-urlencoded:testName1=testValue1&testName2=testValue2" but got "POST:application/x-www-form-urlencoded:" Reached unreachable code
+PASS Multiple calls of respondWith must throw InvalidStateErrors 
+PASS Service Worker event.respondWith must set the used flag 
+PASS Service Worker should expose FetchEvent URL fragments. 
+FAIL Service Worker responds to fetch event with the correct cache types assert_unreached: unexpected rejection: assert_equals: expected "no-cache" but got "default" Reached unreachable code
+PASS Service Worker should intercept EventSource 
+PASS Service Worker responds to fetch event with the correct integrity_metadata 
+FAIL FetchEvent#body is a string assert_equals: expected "i am the request body" but got ""
+FAIL FetchEvent#body is a blob assert_equals: expected "it's me the blob and more blob!" but got ""
+PASS Service Worker responds to fetch event with the correct keepalive value 
 
index b49a92f..9418bd3 100644 (file)
@@ -1,8 +1,8 @@
 
-FAIL Basic type response could be loaded in the iframe. assert_unreached: unexpected rejection: null is not an object (evaluating 'result.jsonpResult') Reached unreachable code
-FAIL CORS type response could be loaded in the iframe. assert_unreached: unexpected rejection: null is not an object (evaluating 'result.jsonpResult') Reached unreachable code
+PASS Basic type response could be loaded in the iframe. 
+PASS CORS type response could be loaded in the iframe. 
 PASS Opaque type response could not be loaded in the iframe. 
-FAIL Basic type response could be loaded in the new window. assert_unreached: unexpected rejection: null is not an object (evaluating 'result.jsonpResult') Reached unreachable code
-FAIL CORS type response could be loaded in the new window. assert_unreached: unexpected rejection: null is not an object (evaluating 'result.jsonpResult') Reached unreachable code
+PASS Basic type response could be loaded in the new window. 
+PASS CORS type response could be loaded in the new window. 
 PASS Opaque type response could not be loaded in the new window. 
 
index eaf463e..b97389a 100644 (file)
@@ -1,70 +1,4 @@
 
 
-FAIL Visibility of defaulted headers during interception assert_unreached: unexpected rejection: withUA FAIL - expected "custom_ua", got "<script src="/common/get-host-info.sub.js"></script>
-<script src="test-helpers.sub.js?pipe=sub"></script>
-<script>
-  var host_info = get_host_info();
-  var uri = document.location + '?check-ua-header';
-
-  var headers = new Headers();
-  headers.set('User-Agent', 'custom_ua');
-
-  // Check the custom UA case
-  fetch(uri, { headers: headers }).then(function(response) {
-    return response.text();
-  }).then(function(text) {
-    if (text == 'custom_ua') {
-      parent.postMessage('PASS', '*');
-    } else {
-      parent.postMessage('withUA FAIL - expected "custom_ua", got "' + text + '"', '*');
-    }
-  }).catch(function(err) {
-    parent.postMessage('withUA FAIL - unexpected error: ' + err, '*');
-  });
-
-  // Check the default UA case
-  fetch(uri, {}).then(function(response) {
-    return response.text();
-  }).then(function(text) {
-    if (text == 'NO_UA') {
-      parent.postMessage('PASS', '*');
-    } else {
-      parent.postMessage('noUA FAIL - expected "NO_UA", got "' + text + '"', '*');
-    }
-  }).catch(function(err) {
-    parent.postMessage('noUA FAIL - unexpected error: ' + err, '*');
-  });
-
-  var uri = document.location + '?check-accept-header';
-  var headers = new Headers();
-  headers.set('Accept', 'hmm');
-
-  // Check for custom accept header
-  fetch(uri, { headers: headers }).then(function(response) {
-    return response.text();
-  }).then(function(text) {
-    if (text === headers.get('Accept')) {
-      parent.postMessage('PASS', '*');
-    } else {
-      parent.postMessage('custom accept FAIL - expected ' + headers.get('Accept') +
-                         ' got "' + text + '"', '*');
-    }
-  }).catch(function(err) {
-    parent.postMessage('custom accept FAIL - unexpected error: ' + err, '*');
-  });
-
-  // Check for default accept header
-  fetch(uri).then(function(response) {
-    return response.text();
-  }).then(function(text) {
-    if (text === '*/*') {
-      parent.postMessage('PASS', '*');
-    } else {
-      parent.postMessage('accept FAIL - expected */* got "' + text + '"', '*');
-    }
-  }).catch(function(err) {
-    parent.postMessage('accept FAIL - unexpected error: ' + err, '*');
-  });
-</script>
-" Reached unreachable code
+FAIL Visibility of defaulted headers during interception assert_unreached: unexpected rejection: withUA FAIL - expected "custom_ua", got "" Reached unreachable code
 
index 0810ff4..47a6059 100644 (file)
@@ -1,8 +1,8 @@
 CONSOLE MESSAGE: line 25: The page at https://localhost:9443/service-workers/service-worker/fetch-mixed-content-to-outscope.https.html was allowed to display insecure content from http://localhost:8800/service-workers/service-worker/resources/fetch-access-control.py?PNGIMAGE.
 
-CONSOLE MESSAGE: line 39: The page at https://localhost:9443/service-workers/service-worker/fetch-mixed-content-to-outscope.https.html was allowed to display insecure content from http://127.0.0.1:8800/service-workers/service-worker/resources/fetch-access-control.py?PNGIMAGE.
+CONSOLE MESSAGE: line 42: The page at https://localhost:9443/service-workers/service-worker/fetch-mixed-content-to-outscope.https.html was allowed to display insecure content from http://127.0.0.1:8800/service-workers/service-worker/resources/fetch-access-control.py?PNGIMAGE.
 
 
 
-FAIL Verify Mixed content of fetch() in a Service Worker assert_equals: expected "finish" but got "FAIL(3)FAIL(4)FAIL(5)finish"
+FAIL Verify Mixed content of fetch() in a Service Worker assert_equals: expected "finish" but got "FAIL(5)finish"
 
index df176d4..6f8f98e 100644 (file)
@@ -1,4 +1,4 @@
 
 
-FAIL Mime type checking of CSS files fetched via SW. assert_equals: The color must be overridden by cross origin CSS. expected "rgb(0, 0, 255)" but got "rgb(255, 0, 0)"
+FAIL Mime type checking of CSS files fetched via SW. assert_equals: The color must not be overridden by cross origin non CSS file. expected "rgb(0, 0, 255)" but got "rgb(255, 0, 0)"
 
index 228f0ad..5f1eddf 100644 (file)
@@ -1,6 +1,6 @@
 
 
-FAIL Verify redirect mode of Fetch API and ServiceWorker FetchEvent. promise_test: Unhandled rejection with value: object "Error: Loading redirected image with Request.redirect=follow should succeed. - undefined"
+FAIL Verify redirect mode of Fetch API and ServiceWorker FetchEvent. promise_test: Unhandled rejection with value: object "Error: Normal audio resource should be loaded. - undefined"
 FAIL Verify redirected of Response(Fetch API) and ServiceWorker FetchEvent. promise_test: Unhandled rejection with value: object "Error: Redirected XHR should be reject and response should be redirected with NO-CORS mode and redirect-mode=manual."
 FAIL Verify redirected of Response(Fetch API), Cache API and ServiceWorker FetchEvent. promise_test: Unhandled rejection with value: object "Error: Redirected XHR should be reject and response should be redirected with NO-CORS mode and redirect-mode=manual."
 
index 394f8c2..f342141 100644 (file)
@@ -1,19 +1,15 @@
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: XMLHttpRequest cannot load https://127.0.0.1:9443/dummy?test due to access control checks.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: XMLHttpRequest cannot load https://127.0.0.1:9443/dummy?test due to access control checks.
 
 PASS initialize global state 
-FAIL event.request has the expected headers for same-origin GET. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'headers.length')"
-FAIL event.request has the expected headers for same-origin POST. promise_test: Unhandled rejection with value: object "TypeError: undefined is not an object (evaluating 'headers.length')"
-FAIL event.request has the expected headers for cross-origin GET. promise_test: Unhandled rejection with value: "XHR should succeed."
-FAIL event.request has the expected headers for cross-origin POST. promise_test: Unhandled rejection with value: "XHR should succeed."
-FAIL FetchEvent#request.body contains XHR request data (string) promise_test: Unhandled rejection with value: object "Error: assert_equals: expected (string) "POST" but got (undefined) undefined"
-FAIL FetchEvent#request.body contains XHR request data (blob) promise_test: Unhandled rejection with value: object "Error: assert_equals: expected (string) "POST" but got (undefined) undefined"
-FAIL FetchEvent#request.method is set to XHR method promise_test: Unhandled rejection with value: object "Error: assert_equals: expected (string) "XXX" but got (undefined) undefined"
-FAIL XHR using OPTIONS method promise_test: Unhandled rejection with value: object "Error: assert_equals: expected (string) "OPTIONS" but got (undefined) undefined"
-FAIL XHR with form data promise_test: Unhandled rejection with value: object "Error: assert_equals: expected (string) "POST" but got (undefined) undefined"
-FAIL XHR with mode/credentials set promise_test: Unhandled rejection with value: object "Error: assert_equals: expected (string) "cors" but got (undefined) undefined"
+FAIL event.request has the expected headers for same-origin GET. promise_test: Unhandled rejection with value: object "Error: assert_array_equals: event.request has the expected headers for same-origin GET. lengths differ, expected 1 got 3"
+FAIL event.request has the expected headers for same-origin POST. promise_test: Unhandled rejection with value: object "Error: assert_array_equals: event.request has the expected headers for same-origin POST. lengths differ, expected 2 got 5"
+FAIL event.request has the expected headers for cross-origin GET. promise_test: Unhandled rejection with value: object "Error: assert_array_equals: event.request has the expected headers for cross-origin GET. lengths differ, expected 1 got 4"
+FAIL event.request has the expected headers for cross-origin POST. promise_test: Unhandled rejection with value: object "Error: assert_array_equals: event.request has the expected headers for cross-origin POST. lengths differ, expected 2 got 5"
+FAIL FetchEvent#request.body contains XHR request data (string) promise_test: Unhandled rejection with value: object "Error: assert_equals: expected "test string" but got """
+FAIL FetchEvent#request.body contains XHR request data (blob) promise_test: Unhandled rejection with value: object "Error: assert_equals: expected "test blob" but got """
+FAIL FetchEvent#request.method is set to XHR method promise_test: Unhandled rejection with value: object "Error: assert_equals: expected "test string xxx" but got """
+FAIL XHR using OPTIONS method promise_test: Unhandled rejection with value: object "Error: assert_equals: expected "test string xxx" but got """
+FAIL XHR with form data promise_test: Unhandled rejection with value: object "Error: assert_equals: expected "------WebKitFormBoundaryXQcTUBfCg2hFT0zU\r\nContent-Disposition: form-data; name=\"sample string\"\r\n\r\n1234567890\r\n------WebKitFormBoundaryXQcTUBfCg2hFT0zU\r\nContent-Disposition: form-data; name=\"sample blob\"; filename=\"blob\"\r\nContent-Type: application/octet-stream\r\n\r\nblob content\r\n------WebKitFormBoundaryXQcTUBfCg2hFT0zU\r\nContent-Disposition: form-data; name=\"sample file\"; filename=\"file.dat\"\r\nContent-Type: application/octet-stream\r\n\r\nfile content\r\n------WebKitFormBoundaryXQcTUBfCg2hFT0zU--\r\n" but got """
+FAIL XHR with mode/credentials set promise_test: Unhandled rejection with value: object "Error: assert_equals: expected "include" but got "same-origin""
 PASS XHR to data URL 
 PASS restore global state 
 
index 659805f..b589ba3 100644 (file)
@@ -1,79 +1,35 @@
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?. Cross origin requests are not allowed when using same-origin fetch mode.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?. Cross origin requests are not allowed when using same-origin fetch mode.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?. Cross origin requests are not allowed when using same-origin fetch mode.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin=*. Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&. Cross origin requests are not allowed when using same-origin fetch mode.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&. Cross origin requests are not allowed when using same-origin fetch mode.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&. Cross origin requests are not allowed when using same-origin fetch mode.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&. Cross origin requests are not allowed when using same-origin fetch mode.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&. Cross origin requests are not allowed when using same-origin fetch mode.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&. Cross origin requests are not allowed when using same-origin fetch mode.
 CONSOLE MESSAGE: line 20: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&. Cross origin requests are not allowed when using same-origin fetch mode.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
-CONSOLE MESSAGE: Fetch API cannot load https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&. Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin.
 
 PASS initialize global state 
 PASS fetching url:"https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"same-origin" credentials:"omit" should succeed. 
-PASS fetching url:"https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"same-origin" credentials:"same-origin" should succeed. 
-PASS fetching url:"https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"same-origin" credentials:"include" should succeed. 
+FAIL fetching url:"https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"same-origin" credentials:"same-origin" should succeed. assert_equals: expected "username2s" but got "undefined"
+FAIL fetching url:"https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"same-origin" credentials:"include" should succeed. assert_equals: expected "username2s" but got "undefined"
 PASS fetching url:"https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"no-cors" credentials:"omit" should succeed. 
-PASS fetching url:"https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"no-cors" credentials:"same-origin" should succeed. 
-PASS fetching url:"https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"no-cors" credentials:"include" should succeed. 
+FAIL fetching url:"https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"no-cors" credentials:"same-origin" should succeed. assert_equals: expected "username2s" but got "undefined"
+FAIL fetching url:"https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"no-cors" credentials:"include" should succeed. assert_equals: expected "username2s" but got "undefined"
 PASS fetching url:"https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"cors" credentials:"omit" should succeed. 
-PASS fetching url:"https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"cors" credentials:"same-origin" should succeed. 
-PASS fetching url:"https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"cors" credentials:"include" should succeed. 
+FAIL fetching url:"https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"cors" credentials:"same-origin" should succeed. assert_equals: expected "username2s" but got "undefined"
+FAIL fetching url:"https://localhost:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"cors" credentials:"include" should succeed. assert_equals: expected "username2s" but got "undefined"
 PASS url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"same-origin" credentials:"omit" should fail. 
 PASS url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"same-origin" credentials:"same-origin" should fail. 
 PASS url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"same-origin" credentials:"include" should fail. 
@@ -83,70 +39,70 @@ PASS fetching url:"https://127.0.0.1:9443/service-workers/service-worker/resourc
 PASS url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"cors" credentials:"omit" should fail. 
 PASS url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"cors" credentials:"same-origin" should fail. 
 PASS url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?" mode:"cors" credentials:"include" should fail. 
-PASS fetching url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin=*" mode:"cors" credentials:"omit" should succeed. 
-PASS fetching url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin=*" mode:"cors" credentials:"same-origin" should succeed. 
+FAIL fetching url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin=*" mode:"cors" credentials:"omit" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Type error"
+FAIL fetching url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin=*" mode:"cors" credentials:"same-origin" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Type error"
 PASS url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin=*" mode:"cors" credentials:"include" should fail. 
-PASS fetching url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin=https://localhost:9443&ACACredentials=true" mode:"cors" credentials:"include" should succeed. 
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"omit" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"same-origin" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"include" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"omit" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"same-origin" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"include" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"omit" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"same-origin" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"include" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
+FAIL fetching url:"https://127.0.0.1:9443/service-workers/service-worker/resources/fetch-access-control.py?ACAOrigin=https://localhost:9443&ACACredentials=true" mode:"cors" credentials:"include" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Type error"
+PASS fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"omit" should succeed. 
+PASS fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"same-origin" should succeed. 
+PASS fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"include" should succeed. 
+PASS fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"omit" should succeed. 
+PASS fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"same-origin" should succeed. 
+PASS fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"include" should succeed. 
+PASS fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"omit" should succeed. 
+PASS fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"same-origin" should succeed. 
+PASS fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"include" should succeed. 
 PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"omit" should fail. 
 PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"same-origin" should fail. 
 PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"include" should fail. 
 FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"omit" should succeed. assert_equals: response type expected "basic" but got "opaque"
 FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"same-origin" should succeed. assert_equals: response type expected "basic" but got "opaque"
 FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"include" should succeed. assert_equals: response type expected "basic" but got "opaque"
-FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"omit" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin."
-FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"same-origin" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin."
-FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"include" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin."
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"same-origin" credentials:"omit" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"same-origin" credentials:"same-origin" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"same-origin" credentials:"include" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"no-cors" credentials:"omit" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"no-cors" credentials:"same-origin" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"no-cors" credentials:"include" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"cors" credentials:"omit" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"cors" credentials:"same-origin" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"cors" credentials:"include" should succeed. promise_test: Unhandled rejection with value: object "SyntaxError: Unexpected token '<'"
+FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"omit" should succeed. assert_equals: response type expected "basic" but got "cors"
+FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"same-origin" should succeed. assert_equals: response type expected "basic" but got "cors"
+FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"include" should succeed. assert_equals: response type expected "basic" but got "cors"
+FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"same-origin" credentials:"omit" should succeed. assert_equals: expected "username2s" but got "undefined"
+FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"same-origin" credentials:"same-origin" should succeed. assert_equals: expected "username2s" but got "undefined"
+FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"same-origin" credentials:"include" should succeed. assert_equals: expected "username2s" but got "undefined"
+FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"no-cors" credentials:"omit" should succeed. assert_equals: expected "username2s" but got "undefined"
+FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"no-cors" credentials:"same-origin" should succeed. assert_equals: expected "username2s" but got "undefined"
+FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"no-cors" credentials:"include" should succeed. assert_equals: expected "username2s" but got "undefined"
+FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"cors" credentials:"omit" should succeed. assert_equals: expected "username2s" but got "undefined"
+FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"cors" credentials:"same-origin" should succeed. assert_equals: expected "username2s" but got "undefined"
+FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"cors" credentials:"include" should succeed. assert_equals: expected "username2s" but got "undefined"
 PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"same-origin" credentials:"omit" should fail. 
 PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"same-origin" credentials:"same-origin" should fail. 
 PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"same-origin" credentials:"include" should fail. 
 FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"no-cors" credentials:"omit" should succeed. assert_equals: response type expected "basic" but got "opaque"
 FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"no-cors" credentials:"same-origin" should succeed. assert_equals: response type expected "basic" but got "opaque"
 FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"no-cors" credentials:"include" should succeed. assert_equals: response type expected "basic" but got "opaque"
-FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"cors" credentials:"omit" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin."
-FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"cors" credentials:"same-origin" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin."
-FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"cors" credentials:"include" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin."
-FAIL url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"omit" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"same-origin" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"include" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"omit" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"same-origin" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"include" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"omit" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"same-origin" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"include" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
+FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"cors" credentials:"omit" should succeed. assert_equals: response type expected "basic" but got "cors"
+FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"cors" credentials:"same-origin" should succeed. assert_equals: response type expected "basic" but got "cors"
+FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2Flocalhost%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=same-origin&" mode:"cors" credentials:"include" should succeed. assert_equals: response type expected "basic" but got "cors"
+PASS url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"omit" should fail. 
+PASS url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"same-origin" should fail. 
+PASS url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"include" should fail. 
+PASS url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"omit" should fail. 
+PASS url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"same-origin" should fail. 
+PASS url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"include" should fail. 
+PASS url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"omit" should fail. 
+PASS url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"same-origin" should fail. 
+PASS url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"include" should fail. 
 PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"omit" should fail. 
 PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"same-origin" should fail. 
 PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"same-origin" credentials:"include" should fail. 
-FAIL url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"omit" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"same-origin" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"include" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
+PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"omit" should fail. 
+PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"same-origin" should fail. 
+PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"no-cors" credentials:"include" should fail. 
 PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"omit" should fail. 
 PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"same-origin" should fail. 
 PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=same-origin&credentials=omit&" mode:"cors" credentials:"include" should fail. 
 FAIL url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"same-origin" credentials:"omit" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
 FAIL url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"same-origin" credentials:"same-origin" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
 FAIL url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"same-origin" credentials:"include" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"no-cors" credentials:"omit" should succeed. assert_equals: response type expected "opaque" but got "basic"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"no-cors" credentials:"same-origin" should succeed. assert_equals: response type expected "opaque" but got "basic"
-FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"no-cors" credentials:"include" should succeed. assert_equals: response type expected "opaque" but got "basic"
+PASS fetching url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"no-cors" credentials:"omit" should succeed. 
+PASS fetching url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"no-cors" credentials:"same-origin" should succeed. 
+PASS fetching url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"no-cors" credentials:"include" should succeed. 
 FAIL url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"cors" credentials:"omit" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
 FAIL url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"cors" credentials:"same-origin" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
 FAIL url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"cors" credentials:"include" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
@@ -156,9 +112,9 @@ PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-w
 PASS fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"no-cors" credentials:"omit" should succeed. 
 PASS fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"no-cors" credentials:"same-origin" should succeed. 
 PASS fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"no-cors" credentials:"include" should succeed. 
-PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"cors" credentials:"omit" should fail. 
-PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"cors" credentials:"same-origin" should fail. 
-PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"cors" credentials:"include" should fail. 
+FAIL url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"cors" credentials:"omit" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
+FAIL url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"cors" credentials:"same-origin" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
+FAIL url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3F&mode=no-cors&credentials=omit&" mode:"cors" credentials:"include" should fail. assert_unreached: Should have rejected: undefined Reached unreachable code
 FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&" mode:"same-origin" credentials:"omit" should succeed. assert_equals: response type expected "cors" but got "basic"
 FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&" mode:"same-origin" credentials:"same-origin" should succeed. assert_equals: response type expected "cors" but got "basic"
 FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&" mode:"same-origin" credentials:"include" should succeed. assert_equals: response type expected "cors" but got "basic"
@@ -174,9 +130,9 @@ PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-w
 FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&" mode:"no-cors" credentials:"omit" should succeed. assert_equals: response type expected "cors" but got "opaque"
 FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&" mode:"no-cors" credentials:"same-origin" should succeed. assert_equals: response type expected "cors" but got "opaque"
 FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&" mode:"no-cors" credentials:"include" should succeed. assert_equals: response type expected "cors" but got "opaque"
-FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&" mode:"cors" credentials:"omit" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin."
-FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&" mode:"cors" credentials:"same-origin" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin."
-FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&" mode:"cors" credentials:"include" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin."
+PASS fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&" mode:"cors" credentials:"omit" should succeed. 
+PASS fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&" mode:"cors" credentials:"same-origin" should succeed. 
+PASS fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3D*&mode=cors&credentials=omit&" mode:"cors" credentials:"include" should succeed. 
 FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&" mode:"same-origin" credentials:"omit" should succeed. assert_equals: response type expected "cors" but got "basic"
 FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&" mode:"same-origin" credentials:"same-origin" should succeed. assert_equals: response type expected "cors" but got "basic"
 FAIL fetching url:"https://localhost:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&" mode:"same-origin" credentials:"include" should succeed. assert_equals: response type expected "cors" but got "basic"
@@ -192,8 +148,8 @@ PASS url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-w
 FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&" mode:"no-cors" credentials:"omit" should succeed. assert_equals: response type expected "cors" but got "opaque"
 FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&" mode:"no-cors" credentials:"same-origin" should succeed. assert_equals: response type expected "cors" but got "opaque"
 FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&" mode:"no-cors" credentials:"include" should succeed. assert_equals: response type expected "cors" but got "opaque"
-FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&" mode:"cors" credentials:"omit" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin."
-FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&" mode:"cors" credentials:"same-origin" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin."
-FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&" mode:"cors" credentials:"include" should succeed. promise_test: Unhandled rejection with value: object "TypeError: Origin https://localhost:9443 is not allowed by Access-Control-Allow-Origin."
+FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&" mode:"cors" credentials:"omit" should succeed. assert_equals: expected "username1s" but got "undefined"
+FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&" mode:"cors" credentials:"same-origin" should succeed. assert_equals: expected "username1s" but got "undefined"
+FAIL fetching url:"https://127.0.0.1:9443/?url=https%3A%2F%2F127.0.0.1%3A9443%2Fservice-workers%2Fservice-worker%2Fresources%2Ffetch-access-control.py%3FACAOrigin%3Dhttps%3A%2F%2Flocalhost%3A9443%26ACACredentials%3Dtrue&mode=cors&credentials=include&" mode:"cors" credentials:"include" should succeed. assert_equals: expected "username1s" but got "undefined"
 PASS restore global state 
 
index 85d4b71..da831b8 100644 (file)
@@ -2,8 +2,8 @@
 
 Harness Error (TIMEOUT), message = null
 
-FAIL Foreign fetch can intercept fetches made from a service worker assert_equals: expected "Foreign Fetch" but got "Here's a simple html file."
-TIMEOUT Foreign fetch can intercept fetches made from a dedicated worker Test timed out
+TIMEOUT Foreign fetch can intercept fetches made from a service worker Test timed out
+NOTRUN Foreign fetch can intercept fetches made from a dedicated worker 
 NOTRUN Foreign fetch can intercept fetches made from a shared worker 
 NOTRUN Fetches from an insecure dedicated worker aren't intercepted. 
 NOTRUN Fetches from an insecure shared worker aren't intercepted. 
index 10fedd5..dc4bbf1 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL The response from service worker should be correctly MIME siniffed. assert_equals: expected "test" but got ""
+FAIL The response from service worker should be correctly MIME siniffed. assert_equals: expected "test" but got "<!DOCTYPE html>\n<h1 id='testid'>test</h1>"
 
index 6a71601..cc20094 100644 (file)
@@ -1,4 +1,6 @@
 
 
-FAIL Navigation Preload request headers. assert_true: The Navigation Preload request must specify a "Service-Worker-Navigation-Preload" header. expected true got false
+Harness Error (TIMEOUT), message = null
+
+TIMEOUT Navigation Preload request headers. Test timed out
 
index 3f29281..73799c7 100644 (file)
@@ -1,7 +1,3 @@
-CONSOLE MESSAGE: [blocked] The page at about:blank was not allowed to display insecure content from http://example.com/.
 
-
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT Verify Service Worker can receive HTTP opaqueredirect response. Test timed out
+FAIL Verify Service Worker can receive HTTP opaqueredirect response. assert_equals: expected "OK" but got "Failed in SW: Error: assert_equals: The redirect mode of navigation request must be manual. expected \"manual\" but got \"follow\""
 
index 9202105..188d348 100644 (file)
@@ -1,4 +1,3 @@
-CONSOLE MESSAGE: Unhandled Promise Rejection: TypeError: TypeError: null is not an object (evaluating 'self.registration.scope')
 CONSOLE MESSAGE: line 50: Unhandled Promise Rejection: TypeError: undefined is not an object (evaluating 'registrations[0].unregister')
 
 
index 40e6a43..9d26c76 100644 (file)
@@ -1,4 +1,4 @@
 
-FAIL Opaque responses should not be reused for XHRs, loading case assert_equals: expected "PASS" but got "FAIL: {\"error\": {\"message\": \"\", \"code\": 404}}"
-FAIL Opaque responses should not be reused for XHRs, done case assert_equals: expected "PASS" but got "FAIL: {\"error\": {\"message\": \"\", \"code\": 404}}"
+FAIL Opaque responses should not be reused for XHRs, loading case assert_equals: expected "PASS" but got "FAIL: a simple text file\n"
+FAIL Opaque responses should not be reused for XHRs, done case assert_equals: expected "PASS" but got "FAIL: a simple text file\n"
 
index 3a8d1e3..5c5b12d 100644 (file)
@@ -1,3 +1,5 @@
 
-FAIL postMessage MessagePorts from ServiceWorker to Client promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'w.navigator.serviceWorker.controller.postMessage')"
+Harness Error (TIMEOUT), message = null
+
+TIMEOUT postMessage MessagePorts from ServiceWorker to Client Test timed out
 
index c4ad90e..faf1eed 100644 (file)
@@ -1,3 +1,5 @@
 
-FAIL postMessage from ServiceWorker to Client. promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'w.navigator.serviceWorker.controller.postMessage')"
+Harness Error (TIMEOUT), message = null
+
+TIMEOUT postMessage from ServiceWorker to Client. Test timed out
 
index 4d1520f..d7056bd 100644 (file)
@@ -1,4 +1,4 @@
 
 
-FAIL Verify the referer assert_equals: expected "finish" but got "failure:Referer for request-headers.py?url=request-headers.py must be https://localhost:9443/service-workers/service-worker/resources/fetch-rewrite-worker.js but got https://localhost:9443/service-workers/service-worker/resources/referer-iframe.html"
+FAIL Verify the referer assert_equals: expected "finish" but got "failure:Referer for request-headers.py must be https://localhost:9443/service-workers/service-worker/resources/referer-iframe.html but got https://localhost:9443/service-workers/service-worker/resources/fetch-rewrite-worker.js"
 
index 4ebb189..bce0140 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL Verify the referer with a Referrer Policy assert_equals: expected "finish" but got "failure:Referer for request-headers.py?url=request-headers.py must be https://localhost:9443/ but got https://localhost:9443/service-workers/service-worker/resources/referrer-policy-iframe.html"
+FAIL Verify the referer with a Referrer Policy assert_equals: expected "finish" but got "failure:Referer for request-headers.py?url=request-headers.py must be https://localhost:9443/ but got https://localhost:9443/service-workers/service-worker/resources/fetch-rewrite-worker-referrer-policy.js"
 
index 6bb8023..f3cb61f 100644 (file)
@@ -3,6 +3,6 @@
 PASS Register different scripts concurrently 
 PASS Register then register new script URL 
 FAIL Register then register new script URL that 404s assert_unreached: unexpected rejection: assert_unreached: register should reject Reached unreachable code Reached unreachable code
-FAIL Register then register new script that does not install assert_unreached: unexpected rejection: assert_equals: on redundant, installing should be null expected null but got object "[object ServiceWorker]" Reached unreachable code
-FAIL Register same-scope new script url effect on controller assert_unreached: unexpected rejection: null is not an object (evaluating 'sw_container.controller.scriptURL') Reached unreachable code
+FAIL Register then register new script that does not install assert_unreached: unexpected rejection: assert_equals: on update, the second script should be installing expected "https://localhost:9443/service-workers/service-worker/resources/reject-install-worker.js" but got "https://localhost:9443/service-workers/service-worker/resources/empty-worker.js" Reached unreachable code
+FAIL Register same-scope new script url effect on controller assert_unreached: unexpected rejection: wait_for_state must be passed a ServiceWorker Reached unreachable code
 
index 7a81010..af0d679 100644 (file)
@@ -1,3 +1,3 @@
 
-FAIL Test FetchEvent.request passed to onfetch promise_test: Unhandled rejection with value: object "SyntaxError: JSON Parse error: Unexpected EOF"
+FAIL Test FetchEvent.request passed to onfetch assert_equals: request.referrer expected "https://localhost:9443/service-workers/service-worker/request-end-to-end.https.html" but got ""
 
index 1aedb29..3b37827 100644 (file)
@@ -1,5 +1,5 @@
 
 
-FAIL Controlled resource loads assert_unreached: unexpected rejection: undefined is not an object (evaluating 'entry.workerStart') Reached unreachable code
+FAIL Controlled resource loads assert_unreached: unexpected rejection: assert_greater_than: Generated response expected a number greater than 0 but got 0 Reached unreachable code
 PASS Non-controlled resource loads 
 
index 0a6bb9d..a1cfcc8 100644 (file)
@@ -1,4 +1,6 @@
 
 
-FAIL Test MessageEvent supplants ServiceWorkerMessageEvent. promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'worker.postMessage')"
+Harness Error (TIMEOUT), message = null
+
+TIMEOUT Test MessageEvent supplants ServiceWorkerMessageEvent. Test timed out
 
index 6eba6e0..52826e5 100644 (file)
@@ -1,4 +1,4 @@
 
 
-FAIL Test skipWaiting when a installed worker is waiting promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'frame_sw.controller.scriptURL')"
+FAIL Test skipWaiting when a installed worker is waiting promise_test: Unhandled rejection with value: object "NotSupportedError: Passing MessagePort objects to postMessage is not yet supported"
 
index ddc2e29..6b4b8bd 100644 (file)
@@ -1,3 +1,5 @@
 
-FAIL Test skipWaiting while a client is using the registration promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'frame_sw.controller.scriptURL')"
+Harness Error (TIMEOUT), message = null
+
+TIMEOUT Test skipWaiting while a client is using the registration Test timed out
 
index f9eb255..66a4d07 100644 (file)
@@ -1,6 +1,6 @@
 
 
-FAIL Unregister does not affect existing controller assert_unreached: unexpected rejection: assert_true: document should load with a controller expected true got false Reached unreachable code
-PASS Unregister prevents control of subsequent navigations 
+FAIL Unregister does not affect existing controller assert_unreached: unexpected rejection: assert_equals: controller should intercept requests expected "intercepted by service worker" but got "ERROR" Reached unreachable code
+FAIL Unregister prevents control of subsequent navigations assert_unreached: unexpected rejection: assert_equals: requests should not be intercepted expected "a simple text file\n" but got "ERROR" Reached unreachable code
 PASS Unregister prevents new controllee even if registration is still in use 
 
index 80c3525..c278c9e 100644 (file)
@@ -4,5 +4,5 @@ PASS Unregister then register resolves to a new value
 FAIL Unregister then register resolves to the original value if the registration is in use. assert_unreached: unexpected rejection: assert_equals: new registration should resolve to the same registration expected object "[object ServiceWorkerRegistration]" but got object "[object ServiceWorkerRegistration]" Reached unreachable code
 PASS Reloading the last controlled iframe after unregistration should ensure the deletion of the registration 
 FAIL Unregister then register does not affect existing controllee assert_unreached: unexpected rejection: assert_equals: installing version is null expected null but got object "[object ServiceWorker]" Reached unreachable code
-FAIL Unregister then register resurrects the registration assert_unreached: unexpected rejection: assert_not_equals: document should have a controller got disallowed value null Reached unreachable code
+PASS Unregister then register resurrects the registration 
 
index 34ba97d..897c306 100644 (file)
@@ -1,10 +1,12 @@
 
+Harness Error (TIMEOUT), message = null
+
 FAIL Test(cors: false, main: default, imported: default) assert_array_equals: property 2, expected null but got object "[object ServiceWorker]"
 PASS Test(cors: false, main: default, imported: time) 
 PASS Test(cors: false, main: time, imported: default) 
 PASS Test(cors: false, main: time, imported: time) 
-FAIL Test(cors: true, main: default, imported: default) assert_unreached: unregister and register should not fail: NetworkError:  A network error occurred. Reached unreachable code
-FAIL Test(cors: true, main: default, imported: time) assert_unreached: unregister and register should not fail: NetworkError:  A network error occurred. Reached unreachable code
-FAIL Test(cors: true, main: time, imported: default) assert_unreached: unregister and register should not fail: NetworkError:  A network error occurred. Reached unreachable code
-FAIL Test(cors: true, main: time, imported: time) assert_unreached: unregister and register should not fail: NetworkError:  A network error occurred. Reached unreachable code
+TIMEOUT Test(cors: true, main: default, imported: default) Test timed out
+NOTRUN Test(cors: true, main: default, imported: time) 
+NOTRUN Test(cors: true, main: time, imported: default) 
+NOTRUN Test(cors: true, main: time, imported: time) 
 
index 63d1e97..4b4d1ec 100644 (file)
@@ -1,3 +1,5 @@
 
-FAIL Recover from a bad service worker by updating after a failed navigation. assert_unreached: unexpected rejection: expected bad iframe should not fire a load event! Reached unreachable code
+Harness Error (TIMEOUT), message = null
+
+TIMEOUT Recover from a bad service worker by updating after a failed navigation. Test timed out
 
index 1088c78..7c114cd 100644 (file)
@@ -4,5 +4,5 @@ PASS Verify worker script from uncontrolled document is intercepted by Service W
 PASS Verify worker script intercepted by same-origin response succeeds 
 PASS Verify worker script intercepted by cors response succeeds 
 PASS Verify worker script intercepted by no-cors cross-origin response fails 
-FAIL Verify worker loads from controlled document are intercepted by Service Worker assert_equals: expected "This load was successfully intercepted." but got "{\"error\": {\"message\": \"\", \"code\": 404}}"
+PASS Verify worker loads from controlled document are intercepted by Service Worker 
 
index cc73dea..f433bf3 100644 (file)
@@ -1,3 +1,35 @@
+2017-11-14  Youenn Fablet  <youenn@apple.com>
+
+        Implement ServiceWorker handle fetch for navigation loads
+        https://bugs.webkit.org/show_bug.cgi?id=179404
+
+        Reviewed by Alex Christensen and Chris Dumez.
+
+        Covered by rebased tests.
+
+        Step 11 of https://w3c.github.io/ServiceWorker/#on-fetch-request-algorithm is implemented in DocumentLoader as it centralizes main request loading
+        and knows about the context of it.
+
+        For each main resource load in document loader, we first check whether there is a matching service worker.
+        The fetch request is updated accordingly so that there is no difference in the handling of navigation vs. subresource requests after that point.
+
+        Updated DocumentThreadableLoader::didReceiveResponse since it can now receive responses from service worker with various response types.
+        A follow-up patch should properly handle cross origin responses.
+
+        * loader/DocumentLoader.cpp:
+        (WebCore::DocumentLoader::commitData):
+        (WebCore::DocumentLoader::startLoadingMainResource):
+        (WebCore::DocumentLoader::doLoadingMainResource):
+        * loader/DocumentLoader.h:
+        * loader/DocumentThreadableLoader.cpp:
+        (WebCore::DocumentThreadableLoader::didReceiveResponse):
+        * loader/cache/CachedResourceRequest.cpp:
+        (WebCore::CachedResourceRequest::setNavigationServiceWorkerRegistrationData):
+        * loader/cache/CachedResourceRequest.h:
+        * platform/MIMETypeRegistry.h:
+        * platform/network/cocoa/WebCoreNSURLSession.mm:
+        (-[WebCoreNSURLSessionDataTask resource:receivedResponse:]):
+
 2017-11-14  Alex Christensen  <achristensen@webkit.org>
 
         Log moveFile failure errors
index ba9050d..78480d6 100644 (file)
 #include "ProgressTracker.h"
 #include "ResourceHandle.h"
 #include "ResourceLoadObserver.h"
+#include "SWClientConnection.h"
 #include "SchemeRegistry.h"
 #include "ScriptableDocumentParser.h"
 #include "SecurityPolicy.h"
+#include "ServiceWorker.h"
+#include "ServiceWorkerProvider.h"
 #include "Settings.h"
 #include "SubresourceLoader.h"
 #include "TextResourceDecoder.h"
@@ -867,7 +870,12 @@ void DocumentLoader::commitData(const char* bytes, size_t length)
         if (m_archive && m_archive->shouldOverrideBaseURL())
             m_frame->document()->setBaseURLOverride(m_archive->mainResource()->url());
 #endif
-
+#if ENABLE(SERVICE_WORKER)
+        if (m_serviceWorkerRegistrationData && m_serviceWorkerRegistrationData->activeWorker) {
+            m_frame->document()->setActiveServiceWorker(ServiceWorker::getOrCreate(*m_frame->document(), WTFMove(m_serviceWorkerRegistrationData->activeWorker.value())));
+            m_serviceWorkerRegistrationData = { };
+        }
+#endif
         // Call receivedFirstData() exactly once per load. We should only reach this point multiple times
         // for multipart loads, and FrameLoader::isReplacing() will be true after the first time.
         if (!isMultipartReplacingLoad())
@@ -1453,7 +1461,7 @@ void DocumentLoader::startLoadingMainResource()
     ASSERT(timing().startTime());
     ASSERT(timing().fetchStart());
 
-    willSendRequest(ResourceRequest(m_request), ResourceResponse(), [this, protectedThis = makeRef(*this)] (ResourceRequest&& request) {
+    willSendRequest(ResourceRequest(m_request), ResourceResponse(), [this, protectedThis = makeRef(*this)] (ResourceRequest&& request) mutable {
         m_request = request;
 
         // willSendRequest() may lead to our Frame being detached or cancelling the load via nulling the ResourceRequest.
@@ -1479,61 +1487,88 @@ void DocumentLoader::startLoadingMainResource()
 
         RELEASE_LOG_IF_ALLOWED("startLoadingMainResource: Starting load (frame = %p, main = %d)", m_frame, m_frame->isMainFrame());
 
-        static NeverDestroyed<ResourceLoaderOptions> mainResourceLoadOptions(SendCallbacks, SniffContent, BufferData, StoredCredentialsPolicy::Use, ClientCredentialPolicy::MayAskClientForCredentials, FetchOptions::Credentials::Include, SkipSecurityCheck, FetchOptions::Mode::NoCors, IncludeCertificateInfo, ContentSecurityPolicyImposition::SkipPolicyCheck, DefersLoadingPolicy::AllowDefersLoading, CachingPolicy::AllowCaching);
-        CachedResourceRequest mainResourceRequest(ResourceRequest(request), mainResourceLoadOptions);
-        if (!m_frame->isMainFrame() && m_frame->document()) {
-            // If we are loading the main resource of a subframe, use the cache partition of the main document.
-            mainResourceRequest.setDomainForCachePartition(*m_frame->document());
-        } else {
-            auto origin = SecurityOrigin::create(request.url());
-            origin->setStorageBlockingPolicy(frameLoader()->frame().settings().storageBlockingPolicy());
-            mainResourceRequest.setDomainForCachePartition(origin->domainForCachePartition());
+#if ENABLE(SERVICE_WORKER)
+        if (m_frame && m_frame->page() && RuntimeEnabledFeatures::sharedFeatures().serviceWorkerEnabled()) {
+            auto origin = (!m_frame->isMainFrame() && m_frame->document()) ? makeRef(m_frame->document()->topOrigin()) : SecurityOrigin::create(request.url());
+            auto& connection = ServiceWorkerProvider::singleton().serviceWorkerConnectionForSession(m_frame->page()->sessionID());
+            if (connection.mayHaveServiceWorkerRegisteredForOrigin(origin)) {
+                auto url = request.url();
+                connection.matchRegistration(origin, url, [request = WTFMove(request), protectedThis = WTFMove(protectedThis), this] (auto&& registrationData) mutable {
+                    if (!m_mainDocumentError.isNull() || !m_frame)
+                        return;
+
+                    m_serviceWorkerRegistrationData = WTFMove(registrationData);
+                    loadMainResource(WTFMove(request));
+                });
+                return;
+            }
         }
-        m_mainResource = m_cachedResourceLoader->requestMainResource(WTFMove(mainResourceRequest)).valueOr(nullptr);
+#endif
+        loadMainResource(WTFMove(request));
+    });
+}
 
-#if ENABLE(CONTENT_EXTENSIONS)
-        if (m_mainResource && m_mainResource->errorOccurred() && m_frame->page() && m_mainResource->resourceError().domain() == ContentExtensions::WebKitContentBlockerDomain) {
-            RELEASE_LOG_IF_ALLOWED("startLoadingMainResource: Blocked by content blocker error (frame = %p, main = %d)", m_frame, m_frame->isMainFrame());
-            cancelMainResourceLoad(frameLoader()->blockedByContentBlockerError(m_request));
-            return;
-        }
+void DocumentLoader::loadMainResource(ResourceRequest&& request)
+{
+    static NeverDestroyed<ResourceLoaderOptions> mainResourceLoadOptions(SendCallbacks, SniffContent, BufferData, StoredCredentialsPolicy::Use, ClientCredentialPolicy::MayAskClientForCredentials, FetchOptions::Credentials::Include, SkipSecurityCheck, FetchOptions::Mode::NoCors, IncludeCertificateInfo, ContentSecurityPolicyImposition::SkipPolicyCheck, DefersLoadingPolicy::AllowDefersLoading, CachingPolicy::AllowCaching);
+    CachedResourceRequest mainResourceRequest(ResourceRequest(request), mainResourceLoadOptions);
+    if (!m_frame->isMainFrame() && m_frame->document()) {
+        // If we are loading the main resource of a subframe, use the cache partition of the main document.
+        mainResourceRequest.setDomainForCachePartition(*m_frame->document());
+    } else {
+        auto origin = SecurityOrigin::create(request.url());
+        origin->setStorageBlockingPolicy(frameLoader()->frame().settings().storageBlockingPolicy());
+        mainResourceRequest.setDomainForCachePartition(origin->domainForCachePartition());
+    }
+
+#if ENABLE(SERVICE_WORKER)
+    mainResourceRequest.setNavigationServiceWorkerRegistrationData(m_serviceWorkerRegistrationData);
 #endif
 
-        if (!m_mainResource) {
-            if (!m_request.url().isValid()) {
-                RELEASE_LOG_IF_ALLOWED("startLoadingMainResource: Unable to load main resource, URL is invalid (frame = %p, main = %d)", m_frame, m_frame->isMainFrame());
-                cancelMainResourceLoad(frameLoader()->client().cannotShowURLError(m_request));
-                return;
-            }
+    m_mainResource = m_cachedResourceLoader->requestMainResource(WTFMove(mainResourceRequest)).valueOr(nullptr);
 
-            RELEASE_LOG_IF_ALLOWED("startLoadingMainResource: Unable to load main resource, returning empty document (frame = %p, main = %d)", m_frame, m_frame->isMainFrame());
+#if ENABLE(CONTENT_EXTENSIONS)
+    if (m_mainResource && m_mainResource->errorOccurred() && m_frame->page() && m_mainResource->resourceError().domain() == ContentExtensions::WebKitContentBlockerDomain) {
+        RELEASE_LOG_IF_ALLOWED("startLoadingMainResource: Blocked by content blocker error (frame = %p, main = %d)", m_frame, m_frame->isMainFrame());
+        cancelMainResourceLoad(frameLoader()->blockedByContentBlockerError(m_request));
+        return;
+    }
+#endif
 
-            setRequest(ResourceRequest());
-            // If the load was aborted by clearing m_request, it's possible the ApplicationCacheHost
-            // is now in a state where starting an empty load will be inconsistent. Replace it with
-            // a new ApplicationCacheHost.
-            m_applicationCacheHost = std::make_unique<ApplicationCacheHost>(*this);
-            maybeLoadEmpty();
+    if (!m_mainResource) {
+        if (!m_request.url().isValid()) {
+            RELEASE_LOG_IF_ALLOWED("startLoadingMainResource: Unable to load main resource, URL is invalid (frame = %p, main = %d)", m_frame, m_frame->isMainFrame());
+            cancelMainResourceLoad(frameLoader()->client().cannotShowURLError(m_request));
             return;
         }
 
-        if (!mainResourceLoader()) {
-            m_identifierForLoadWithoutResourceLoader = m_frame->page()->progress().createUniqueIdentifier();
-            frameLoader()->notifier().assignIdentifierToInitialRequest(m_identifierForLoadWithoutResourceLoader, this, request);
-            frameLoader()->notifier().dispatchWillSendRequest(this, m_identifierForLoadWithoutResourceLoader, request, ResourceResponse());
-        }
+        RELEASE_LOG_IF_ALLOWED("startLoadingMainResource: Unable to load main resource, returning empty document (frame = %p, main = %d)", m_frame, m_frame->isMainFrame());
 
-        becomeMainResourceClient();
+        setRequest(ResourceRequest());
+        // If the load was aborted by clearing m_request, it's possible the ApplicationCacheHost
+        // is now in a state where starting an empty load will be inconsistent. Replace it with
+        // a new ApplicationCacheHost.
+        m_applicationCacheHost = std::make_unique<ApplicationCacheHost>(*this);
+        maybeLoadEmpty();
+        return;
+    }
 
-        // A bunch of headers are set when the underlying ResourceLoader is created, and m_request needs to include those.
-        if (mainResourceLoader())
-            request = mainResourceLoader()->originalRequest();
-        // If there was a fragment identifier on m_request, the cache will have stripped it. m_request should include
-        // the fragment identifier, so add that back in.
-        if (equalIgnoringFragmentIdentifier(m_request.url(), request.url()))
-            request.setURL(m_request.url());
-        setRequest(request);
-    });
+    if (!mainResourceLoader()) {
+        m_identifierForLoadWithoutResourceLoader = m_frame->page()->progress().createUniqueIdentifier();
+        frameLoader()->notifier().assignIdentifierToInitialRequest(m_identifierForLoadWithoutResourceLoader, this, request);
+        frameLoader()->notifier().dispatchWillSendRequest(this, m_identifierForLoadWithoutResourceLoader, request, ResourceResponse());
+    }
+
+    becomeMainResourceClient();
+
+    // A bunch of headers are set when the underlying ResourceLoader is created, and m_request needs to include those.
+    if (mainResourceLoader())
+        request = mainResourceLoader()->originalRequest();
+    // If there was a fragment identifier on m_request, the cache will have stripped it. m_request should include
+    // the fragment identifier, so add that back in.
+    if (equalIgnoringFragmentIdentifier(m_request.url(), request.url()))
+        request.setURL(m_request.url());
+    setRequest(request);
 }
 
 void DocumentLoader::cancelPolicyCheckIfNeeded()
index 0a5f015..efb8da2 100644 (file)
@@ -40,6 +40,7 @@
 #include "ResourceLoaderOptions.h"
 #include "ResourceRequest.h"
 #include "ResourceResponse.h"
+#include "ServiceWorkerRegistrationData.h"
 #include "StringWithDirection.h"
 #include "StyleSheetContents.h"
 #include "SubstituteData.h"
@@ -309,6 +310,8 @@ protected:
 private:
     Document* document() const;
 
+    void loadMainResource(ResourceRequest&&);
+
     void setRequest(const ResourceRequest&);
 
     void commitIfReady();
@@ -479,6 +482,10 @@ private:
     AutoplayPolicy m_autoplayPolicy { AutoplayPolicy::Default };
     OptionSet<AutoplayQuirk> m_allowedAutoplayQuirks;
 
+#if ENABLE(SERVICE_WORKER)
+    std::optional<ServiceWorkerRegistrationData> m_serviceWorkerRegistrationData;
+#endif
+
 #ifndef NDEBUG
     bool m_hasEverBeenAttached { false };
 #endif
index d50135f..bf1fb44 100644 (file)
@@ -327,10 +327,10 @@ void DocumentThreadableLoader::didReceiveResponse(unsigned long identifier, cons
             if (m_client)
                 m_client->didFinishLoading(identifier);
         }
-    } else {
-        ASSERT(response.type() == ResourceResponse::Type::Opaqueredirect);
-        m_client->didReceiveResponse(identifier, response);
+        return;
     }
+    ASSERT(response.type() == ResourceResponse::Type::Opaqueredirect || response.source() == ResourceResponse::Source::ServiceWorker);
+    m_client->didReceiveResponse(identifier, response);
 }
 
 void DocumentThreadableLoader::dataReceived(CachedResource& resource, const char* data, int dataLength)
index 6dceec9..81f8833 100644 (file)
@@ -288,6 +288,15 @@ void CachedResourceRequest::setSelectedServiceWorkerIdentifierIfNeeded(ServiceWo
 
     m_options.serviceWorkerIdentifier = identifier;
 }
+
+void CachedResourceRequest::setNavigationServiceWorkerRegistrationData(const std::optional<ServiceWorkerRegistrationData>& data)
+{
+    if (!data || !data->activeWorker) {
+        m_options.serviceWorkersMode = ServiceWorkersMode::None;
+        return;
+    }
+    m_options.serviceWorkerIdentifier = data->activeWorker->identifier;
+}
 #endif
 
 } // namespace WebCore
index 7d04640..b3df7fd 100644 (file)
@@ -43,6 +43,7 @@ struct BlockedStatus;
 
 class Document;
 class FrameLoader;
+struct ServiceWorkerRegistrationData;
 enum class ReferrerPolicy;
 
 bool isRequestCrossOrigin(SecurityOrigin*, const URL& requestURL, const ResourceLoaderOptions&);
@@ -98,6 +99,7 @@ public:
 
 #if ENABLE(SERVICE_WORKER)
     void setSelectedServiceWorkerIdentifierIfNeeded(ServiceWorkerIdentifier);
+    void setNavigationServiceWorkerRegistrationData(const std::optional<ServiceWorkerRegistrationData>&);
 #endif
 
 private:
index 7872119..541d740 100644 (file)
@@ -125,6 +125,6 @@ private:
     static bool isUnsupportedTextMIMEType(const String& mimeType);
 };
 
-const String& defaultMIMEType();
+WEBCORE_EXPORT const String& defaultMIMEType();
 
 } // namespace WebCore
index 3a19760..556e72a 100644 (file)
@@ -555,7 +555,7 @@ void WebCoreNSURLSessionDataTaskClient::loadFinished(PlatformMediaResource& reso
 
 - (void)resource:(PlatformMediaResource&)resource receivedResponse:(const ResourceResponse&)response
 {
-    ASSERT(response.source() == ResourceResponse::Source::Network || response.source() == ResourceResponse::Source::DiskCache || response.source() == ResourceResponse::Source::DiskCacheAfterValidation);
+    ASSERT(response.source() == ResourceResponse::Source::Network || response.source() == ResourceResponse::Source::DiskCache || response.source() == ResourceResponse::Source::DiskCacheAfterValidation || response.source() == ResourceResponse::Source::ServiceWorker);
     ASSERT_UNUSED(resource, &resource == _resource);
     ASSERT(isMainThread());
     [self.session task:self didReceiveCORSAccessCheckResult:resource.didPassAccessControlCheck()];
index ab3b5db..ddea1ee 100644 (file)
@@ -1,3 +1,21 @@
+2017-11-14  Youenn Fablet  <youenn@apple.com>
+
+        Implement ServiceWorker handle fetch for navigation loads
+        https://bugs.webkit.org/show_bug.cgi?id=179404
+
+        Reviewed by Alex Christensen and Chris Dumez.
+
+        Update handle fetch algorithm to support navigation requests.
+        In case of navigation requests, set service worker response mime type to text/html if none is provided.
+
+        * WebProcess/Storage/ServiceWorkerClientFetch.cpp:
+        (WebKit::ServiceWorkerClientFetch::didReceiveResponse):
+        * WebProcess/Storage/WebSWClientConnection.cpp:
+        (WebKit::WebSWClientConnection::startFetch):
+        * WebProcess/Storage/WebServiceWorkerProvider.cpp:
+        (WebKit::shouldHandleFetch):
+        (WebKit::WebServiceWorkerProvider::handleFetch):
+
 2017-11-14  Alex Christensen  <achristensen@webkit.org>
 
         Remove Cocoa CFURLConnection loading code
index f618fc4..928bc32 100644 (file)
@@ -30,6 +30,7 @@
 
 #include "DataReference.h"
 #include "WebServiceWorkerProvider.h"
+#include <WebCore/MIMETypeRegistry.h>
 #include <WebCore/NotImplemented.h>
 #include <WebCore/ResourceError.h>
 
@@ -67,6 +68,12 @@ void ServiceWorkerClientFetch::didReceiveResponse(WebCore::ResourceResponse&& re
         return;
     }
 
+    // In case of main resource and mime type is the default one, we set it to text/html to pass more service worker WPT tests.
+    // FIXME: We should refine our MIME type sniffing strategy for synthetic responses.
+    if (m_loader->originalRequest().requester() == ResourceRequest::Requester::Main) {
+        if (response.mimeType() == defaultMIMEType())
+            response.setMimeType(ASCIILiteral("text/html"));
+    }
     response.setSource(ResourceResponse::Source::ServiceWorker);
     m_loader->didReceiveResponse(response);
     if (auto callback = WTFMove(m_callback))
index 6b9ee2a..bceefbb 100644 (file)
@@ -132,8 +132,7 @@ void WebSWClientConnection::matchRegistration(const SecurityOrigin& topOrigin, c
 
 Ref<ServiceWorkerClientFetch> WebSWClientConnection::startFetch(WebServiceWorkerProvider& provider, Ref<WebCore::ResourceLoader>&& loader, uint64_t identifier, ServiceWorkerClientFetch::Callback&& callback)
 {
-    ASSERT(loader->options().serviceWorkersMode != ServiceWorkersMode::None);
-    // FIXME: Decide whether to assert for loader->options().serviceWorkerIdentifier once we have a story for navigation loads.
+    ASSERT(loader->options().serviceWorkersMode != ServiceWorkersMode::None && loader->options().serviceWorkerIdentifier);
 
     send(Messages::WebSWServerConnection::StartFetch(identifier, loader->options().serviceWorkerIdentifier, loader->originalRequest(), loader->options()));
     return ServiceWorkerClientFetch::create(provider, WTFMove(loader), identifier, m_connection.get(), WTFMove(callback));
index e5e5486..3782da6 100644 (file)
@@ -59,7 +59,7 @@ WebCore::SWClientConnection& WebServiceWorkerProvider::serviceWorkerConnectionFo
     return WebProcess::singleton().webToStorageProcessConnection()->serviceWorkerConnectionForSession(sessionID);
 }
 
-static inline bool shouldHandleFetch(const WebSWClientConnection& connection, CachedResource* resource, const ResourceLoaderOptions& options)
+static inline bool shouldHandleFetch(const ResourceLoaderOptions& options)
 {
     if (options.serviceWorkersMode == ServiceWorkersMode::None)
         return false;
@@ -67,26 +67,17 @@ static inline bool shouldHandleFetch(const WebSWClientConnection& connection, Ca
     if (isPotentialNavigationOrSubresourceRequest(options.destination))
         return false;
 
-    // FIXME: Implement non-subresource request loads.
-    if (isNonSubresourceRequest(options.destination) || !options.serviceWorkerIdentifier)
-        return false;
-
-    if (!resource)
-        return false;
-
-    return connection.mayHaveServiceWorkerRegisteredForOrigin(*resource->origin());
+    return !!options.serviceWorkerIdentifier;
 }
 
 void WebServiceWorkerProvider::handleFetch(ResourceLoader& loader, CachedResource* resource, PAL::SessionID sessionID, ServiceWorkerClientFetch::Callback&& callback)
 {
-    auto& connection = WebProcess::singleton().webToStorageProcessConnection()->serviceWorkerConnectionForSession(sessionID);
-
-    if (!shouldHandleFetch(connection, resource, loader.options())) {
-        // FIXME: Add an option to error resource load for DTL to actually go through preflight.
+    if (!shouldHandleFetch(loader.options())) {
         callback(ServiceWorkerClientFetch::Result::Unhandled);
         return;
     }
 
+    auto& connection = WebProcess::singleton().webToStorageProcessConnection()->serviceWorkerConnectionForSession(sessionID);
     auto fetch = connection.startFetch(*this, loader, loader.identifier(), WTFMove(callback));
     ASSERT(fetch->isOngoing());