rwt should allow service worker to load localhost HTTPS resources with any certificate
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 31 Oct 2017 22:11:45 +0000 (22:11 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 31 Oct 2017 22:11:45 +0000 (22:11 +0000)
https://bugs.webkit.org/show_bug.cgi?id=179018

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-31
Reviewed by Chris Dumez.

Source/WebKit:

Allowing ServiceWorkerProcessProxy to handle authentication challenge.
Temporarily adding a boolean flag through WebProcessPool to lower the SSL certificate verifications for service workers.
This allows reducing flakiness in our layout tests for rwt.
Future work should be done to expose a correct API for the application level to handle authentication challenges properly.

* UIProcess/API/C/WKContext.cpp:
(WKContextSetAllowsAnySSLCertificateForServiceWorkerTesting):
* UIProcess/API/C/WKContextPrivate.h:
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _setAllowsAnySSLCertificateForServiceWorker:]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
* UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge):
(WebKit::NetworkProcessProxy::canAuthenticateAgainstProtectionSpace):
* UIProcess/ServiceWorkerProcessProxy.cpp:
(WebKit::ServiceWorkerProcessProxy::didReceiveAuthenticationChallenge):
* UIProcess/ServiceWorkerProcessProxy.h:
* UIProcess/WebProcessPool.h:

Tools:

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetStateToConsistentValues): allowing any SSL certificate for service workers.

LayoutTests:

* TestExpectations:
* http/tests/workers/service/service-worker-fetch-expected.txt: Removed.
* http/tests/workers/service/service-worker-fetch.https-expected.txt: Added.
* http/tests/workers/service/service-worker-fetch.https.html: Renamed from LayoutTests/http/tests/workers/service/service-worker-fetch.html.

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

79 files changed:
LayoutTests/ChangeLog
LayoutTests/TestExpectations
LayoutTests/http/tests/workers/service/service-worker-fetch-expected.txt [deleted file]
LayoutTests/http/tests/workers/service/service-worker-fetch.https-expected.txt [new file with mode: 0644]
LayoutTests/http/tests/workers/service/service-worker-fetch.https.html [moved from LayoutTests/http/tests/workers/service/service-worker-fetch.html with 100% similarity]
LayoutTests/imported/w3c/web-platform-tests/FileAPI/historical.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-no-referrer-service-worker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-service-worker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/fetch/api/policies/referrer-unsafe-url-service-worker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-add.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-delete.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-keys.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-match.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-matchAll.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-put.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage-keys.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage-match.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/close.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/extendable-message-event-constructor.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-redirect.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/foreign-fetch-event.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/interfaces-sw.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/performance-timeline.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/register-foreign-fetch-errors.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/registration-updateviacache.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/service-worker-csp-connect.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/service-worker-csp-default.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/service-worker-csp-script.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/skip-waiting-without-client.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/uncontrolled-page.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-new-script.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/update-after-navigation-fetch-event.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/update-after-oneday.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/service-workers/service-worker/update-bytecheck.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/count-queuing-strategy.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/piping/flow-control.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/piping/general.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/piping/multiple-propagation.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/piping/pipe-through.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/piping/transform-streams.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/brand-checks.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/detached-buffers.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/general.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/readable-byte-streams/properties.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/cancel.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/default-reader.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/general.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/tee.serviceworker.https-expected.txt
LayoutTests/imported/w3c/web-platform-tests/streams/readable-streams/templated.serviceworker.https-expected.txt
Source/WebKit/ChangeLog
Source/WebKit/UIProcess/API/C/WKContext.cpp
Source/WebKit/UIProcess/API/C/WKContextPrivate.h
Source/WebKit/UIProcess/API/Cocoa/WKProcessPool.mm
Source/WebKit/UIProcess/API/Cocoa/WKProcessPoolPrivate.h
Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp
Source/WebKit/UIProcess/ServiceWorkerProcessProxy.cpp
Source/WebKit/UIProcess/ServiceWorkerProcessProxy.h
Source/WebKit/UIProcess/WebProcessPool.h
Tools/ChangeLog
Tools/WebKitTestRunner/TestController.cpp

index 3c4dc3d..b244494 100644 (file)
@@ -1,3 +1,15 @@
+2017-10-31  Youenn Fablet  <youenn@apple.com>
+
+        rwt should allow service worker to load localhost HTTPS resources with any certificate
+        https://bugs.webkit.org/show_bug.cgi?id=179018
+
+        Reviewed by Chris Dumez.
+
+        * TestExpectations:
+        * http/tests/workers/service/service-worker-fetch-expected.txt: Removed.
+        * http/tests/workers/service/service-worker-fetch.https-expected.txt: Added.
+        * http/tests/workers/service/service-worker-fetch.https.html: Renamed from LayoutTests/http/tests/workers/service/service-worker-fetch.html.
+
 2017-10-31  Ryan Haddad  <ryanhaddad@apple.com>
 
         Mark imported/w3c/web-platform-tests/html/semantics/embedded-content/the-iframe-element/sandbox_032.htm as flaky.
index 3fbd5ce..ada4418 100644 (file)
@@ -137,15 +137,6 @@ imported/w3c/web-platform-tests/secure-contexts/shared-worker-insecure-first.htt
 imported/w3c/web-platform-tests/secure-contexts/shared-worker-secure-first.https.html [ Skip ]
 
 # Skip service worker tests that are timing out.
-imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-add.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-delete.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-keys.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-match.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-matchAll.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-put.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage-keys.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage-match.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/close.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/extendable-message-event-constructor.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/extendable-message-event.https.html [ Skip ]
@@ -158,8 +149,6 @@ imported/w3c/web-platform-tests/service-workers/service-worker/fetch-canvas-tain
 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-cors-xhr.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-network-error.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-event-respond-with-argument.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-inscope.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/service-worker/fetch-mixed-content-to-outscope.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/fetch-response-taint.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/foreign-fetch-basics.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/foreign-fetch-event.https.html [ Skip ]
@@ -178,56 +167,16 @@ imported/w3c/web-platform-tests/service-workers/service-worker/navigation-preloa
 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/performance-timeline.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/register-foreign-fetch-errors.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/registration-service-worker-attributes.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/service-worker/registration-updateviacache.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/service-worker/service-worker-csp-connect.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/service-worker/service-worker-csp-default.https.html [ Skip ]
-imported/w3c/web-platform-tests/service-workers/service-worker/service-worker-csp-script.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/uncontrolled-page.https.html [ Skip ]
 imported/w3c/web-platform-tests/service-workers/service-worker/unregister-then-register-new-script.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-bytecheck.https.html [ Skip ]
-
 imported/w3c/web-platform-tests/fetch/api/abort/general-serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/fetch/api/policies/referrer-no-referrer-service-worker.https.html [ Skip ]
-imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-service-worker.https.html [ Skip ]
-imported/w3c/web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-service-worker.https.html [ Skip ]
-imported/w3c/web-platform-tests/fetch/api/policies/referrer-unsafe-url-service-worker.https.html [ Skip ]
-imported/w3c/web-platform-tests/FileAPI/historical.https.html [ Skip ]
-imported/w3c/web-platform-tests/html/webappapis/scripting/processing-model-2/integration-with-the-javascript-agent-formalism/canblock-serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/byte-length-queuing-strategy.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/count-queuing-strategy.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/piping/close-propagation-backward.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/piping/close-propagation-forward.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/piping/error-propagation-backward.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/piping/error-propagation-forward.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/piping/flow-control.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/piping/general.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/piping/multiple-propagation.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/piping/pipe-through.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/piping/transform-streams.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/readable-byte-streams/brand-checks.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/readable-byte-streams/detached-buffers.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/readable-byte-streams/general.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/readable-byte-streams/properties.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/readable-streams/bad-strategies.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/readable-streams/bad-underlying-sources.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/readable-streams/brand-checks.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/readable-streams/cancel.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/readable-streams/count-queuing-strategy-integration.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/readable-streams/default-reader.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/readable-streams/floating-point-total-queue-size.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/readable-streams/general.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/readable-streams/readable-stream-reader.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/readable-streams/tee.serviceworker.https.html [ Skip ]
-imported/w3c/web-platform-tests/streams/readable-streams/templated.serviceworker.https.html [ Skip ]
 
+imported/w3c/web-platform-tests/service-workers/service-worker/performance-timeline.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/websocket.https.html [ Pass Failure ]
 http/tests/workers/service/service-worker-cache-api.https.html [ Pass Failure ]
diff --git a/LayoutTests/http/tests/workers/service/service-worker-fetch-expected.txt b/LayoutTests/http/tests/workers/service/service-worker-fetch-expected.txt
deleted file mode 100644 (file)
index 5b052a3..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Status is no status
-Got response with buffer byte length being 12940
-Status is http://127.0.0.1:8000/resources/square100.png through fetch
-
diff --git a/LayoutTests/http/tests/workers/service/service-worker-fetch.https-expected.txt b/LayoutTests/http/tests/workers/service/service-worker-fetch.https-expected.txt
new file mode 100644 (file)
index 0000000..687c92a
--- /dev/null
@@ -0,0 +1,4 @@
+Status is no status
+Got response with buffer byte length being 12940
+Status is https://127.0.0.1:8443/resources/square100.png through fetch
+
index 387f4af..432b314 100644 (file)
@@ -6,5 +6,6 @@ PASS Blob should not support slice prefixed
 PASS BlobBuilder should not be supported. 
 PASS createFor method should not be supported 
 PASS Blob.close() should not be supported 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+FAIL "FileReaderSync" should not be supported in service workers assert_false: expected false got true
 
index a6e0f20..2387972 100644 (file)
@@ -1,3 +1,4 @@
 
-FAIL Fetch in service worker: referrer with no-referrer policy assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Fetch in service worker: referrer with no-referrer policy 
+PASS Request's referrer is empty 
 
index a6e0f20..34b84d3 100644 (file)
@@ -1,3 +1,5 @@
 
-FAIL Fetch in service worker: referrer with no-referrer policy assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Fetch in service worker: referrer with no-referrer policy 
+FAIL Request's referrer is origin assert_equals: request's referrer is https://localhost:9443/ expected "https://localhost:9443/" but got "https://localhost:9443/fetch/api/policies/referrer-origin.js?pipe=sub"
+FAIL Cross-origin referrer is overridden by client origin promise_test: Unhandled rejection with value: object "TypeError: Referrer is not same-origin."
 
index 4644185..1323f0f 100644 (file)
@@ -1,3 +1,4 @@
 
-FAIL Fetch in service worker: referrer with origin-when-cross-origin policy assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Fetch in service worker: referrer with origin-when-cross-origin policy 
+FAIL Request's referrer is origin promise_test: Unhandled rejection with value: object "TypeError: A server with the specified hostname could not be found."
 
index e56f9ea..dad14a2 100644 (file)
@@ -1,3 +1,4 @@
 
-FAIL Fetch in worker: referrer with unsafe-url policy assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Fetch in worker: referrer with unsafe-url policy 
+PASS Request's referrer is the full url of current document/worker 
 
index 354e65e..05fd95b 100644 (file)
@@ -1,5 +1,21 @@
 
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT Cache.add and Cache.addAll Test timed out
+PASS Cache.add and Cache.addAll 
+PASS Cache.add called with no arguments 
+PASS Cache.add called with relative URL specified as a string 
+PASS Cache.add called with non-HTTP/HTTPS URL 
+PASS Cache.add called with Request object 
+PASS Cache.add called with POST request 
+PASS Cache.add called twice with the same Request object 
+PASS Cache.add with request with null body (not consumed) 
+PASS Cache.add with 206 response 
+PASS Cache.addAll with 206 response 
+PASS Cache.add with request that results in a status of 404 
+PASS Cache.add with request that results in a status of 500 
+PASS Cache.addAll with no arguments 
+PASS Cache.addAll with a mix of valid and undefined arguments 
+PASS Cache.addAll with an empty array 
+PASS Cache.addAll with string URL arguments 
+PASS Cache.addAll with Request arguments 
+PASS Cache.addAll with a mix of succeeding and failing requests 
+PASS Cache.addAll called with the same Request object specified twice 
 
index c04977f..7664264 100644 (file)
@@ -1,5 +1,11 @@
 
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT Cache.delete Test timed out
+PASS Cache.delete 
+PASS Cache.delete with no arguments 
+PASS Cache.delete called with a string URL 
+PASS Cache.delete called with a Request object 
+PASS Cache.delete called with a HEAD request 
+PASS Cache.delete supports ignoreVary 
+PASS Cache.delete with a non-existent entry 
+PASS Cache.delete with ignoreSearch option (request with search parameters) 
+PASS Cache.delete with ignoreSearch option (when it is specified as false) 
 
index 3bf4e7e..fb93b89 100644 (file)
@@ -1,5 +1,16 @@
 
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT Cache.keys Test timed out
+PASS Cache.keys 
+PASS Cache.keys() called on an empty cache 
+PASS Cache.keys with no matching entries 
+PASS Cache.keys with URL 
+PASS Cache.keys with Request 
+PASS Cache.keys with new Request 
+PASS Cache.keys with ignoreSearch option (request with no search parameters) 
+PASS Cache.keys with ignoreSearch option (request with search parameters) 
+PASS Cache.keys supports ignoreMethod 
+PASS Cache.keys supports ignoreVary 
+PASS Cache.keys with URL containing fragment 
+PASS Cache.keys with string fragment "http" as query 
+PASS Cache.keys without parameters 
+PASS Cache.keys with a HEAD Request 
 
index 5c3b136..7195d7b 100644 (file)
@@ -1,5 +1,23 @@
 
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT Cache.match Test timed out
+PASS Cache.match 
+PASS Cache.match with no matching entries 
+PASS Cache.match with URL 
+PASS Cache.match with Request 
+PASS Cache.match with multiple cache hits 
+PASS Cache.match with new Request 
+PASS Cache.match with HEAD 
+PASS Cache.match with ignoreSearch option (request with no search parameters) 
+PASS Cache.match with ignoreSearch option (request with search parameter) 
+PASS Cache.match supports ignoreMethod 
+PASS Cache.match supports ignoreVary 
+PASS Cache.match with URL containing fragment 
+PASS Cache.match with string fragment "http" as query 
+PASS Cache.match with responses containing "Vary" header 
+PASS Cache.match with Request and Response objects with different URLs 
+PASS Cache.match invoked multiple times for the same Request/Response 
+PASS Cache.match blob should be sliceable 
+PASS Cache.match with POST Request 
+PASS Cache.match with a non-2xx Response 
+PASS Cache.match with a network error Response 
+PASS Cache produces large Responses that can be cloned and read correctly. 
 
index a105dc3..6072594 100644 (file)
@@ -1,5 +1,17 @@
 
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT Cache.matchAll Test timed out
+PASS Cache.matchAll 
+PASS Cache.matchAll with no matching entries 
+PASS Cache.matchAll with URL 
+PASS Cache.matchAll with Request 
+PASS Cache.matchAll with new Request 
+PASS Cache.matchAll with HEAD 
+PASS Cache.matchAll with ignoreSearch option (request with no search parameters) 
+PASS Cache.matchAll with ignoreSearch option (request with search parameters) 
+PASS Cache.matchAll supports ignoreMethod 
+PASS Cache.matchAll supports ignoreVary 
+PASS Cache.matchAll with URL containing fragment 
+PASS Cache.matchAll with string fragment "http" as query 
+PASS Cache.matchAll without parameters 
+PASS Cache.matchAll with responses containing "Vary" header 
+PASS Cache.matchAll with multiple vary pairs 
 
index 7440394..1678166 100644 (file)
@@ -1,5 +1,26 @@
 
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT Cache.put Test timed out
+PASS Cache.put 
+PASS Cache.put called with simple Request and Response 
+PASS Cache.put called with Request and Response from fetch() 
+PASS Cache.put with Request without a body 
+PASS Cache.put with Response without a body 
+PASS Cache.put with a Response containing an empty URL 
+PASS Cache.put with an empty response body 
+PASS Cache.put with synthetic 206 response 
+PASS Cache.put with HTTP 206 response 
+PASS Cache.put with HTTP 500 response 
+PASS Cache.put called twice with matching Requests and different Responses 
+PASS Cache.put called twice with request URLs that differ only by a fragment 
+PASS Cache.put with a string request 
+PASS Cache.put with an invalid response 
+PASS Cache.put with a non-HTTP/HTTPS request 
+PASS Cache.put with a relative URL 
+PASS Cache.put with a non-GET request 
+PASS Cache.put with a null response 
+PASS Cache.put with a POST request 
+PASS Cache.put with a used response body 
+PASS getReader() after Cache.put 
+PASS Cache.put with a VARY:* Response 
+PASS Cache.put with an embedded VARY:* Response 
+PASS Cache.put should store Response.redirect() correctly 
 
index bde698b..a46d13e 100644 (file)
@@ -1,5 +1,14 @@
 
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT CacheStorage.match Test timed out
+PASS CacheStorage.match 
+PASS CacheStorageMatch with no cache name provided 
+PASS CacheStorageMatch from one of many caches 
+PASS CacheStorageMatch from one of many caches by name 
+PASS CacheStorageMatch a string request 
+PASS CacheStorageMatch a HEAD request 
+PASS CacheStorageMatch with no cached entry 
+PASS CacheStorageMatch with no caches available but name provided 
+PASS CacheStorageMatch with empty cache name provided 
+PASS CacheStorageMatch supports ignoreSearch 
+PASS Cache.match supports ignoreMethod 
+PASS CacheStorageMatch supports ignoreVary 
 
index b322989..2ce0b50 100644 (file)
@@ -1,5 +1,13 @@
 
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT CacheStorage Test timed out
+PASS CacheStorage 
+PASS CacheStorage.open 
+PASS CacheStorage.delete dooms, but does not delete immediately 
+PASS CacheStorage.open with an empty name 
+PASS CacheStorage.open with no arguments 
+PASS CacheStorage.has with existing cache 
+PASS CacheStorage.has with nonexistent cache 
+PASS CacheStorage.open with existing cache 
+PASS CacheStorage.delete with existing cache 
+PASS CacheStorage.delete with nonexistent cache 
+PASS CacheStorage names are DOMStrings not USVStrings 
 
index f5e2eae..6ad457b 100644 (file)
@@ -1,5 +1,13 @@
 
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT ServiceWorkerGlobalScope: ExtendableMessageEvent Constructor Test timed out
+PASS ServiceWorkerGlobalScope: ExtendableMessageEvent Constructor 
+PASS no initializer specified 
+PASS `bubbles` is specified 
+PASS `cancelable` is specified 
+FAIL `data` is specified assert_equals: expected object "[object Object]" but got object "[object Object]"
+PASS `origin` is specified 
+PASS `lastEventId` is specified 
+FAIL `source` is specified assert_equals: expected object "[object MessagePort]" but got null
+FAIL `ports` is specified assert_throws: function "function () {
+      createEvent({ get ports() { throw { name: 'Error' }; } }); }" threw object "TypeError: Value is not a sequence" ("TypeError") expected object "[object Object]" ("Error")
+FAIL all initial values are specified assert_equals: expected object "[object Object]" but got object "[object Object]"
 
index 421679b..0810ff4 100644 (file)
@@ -1,6 +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.
 
-Harness Error (TIMEOUT), message = null
 
-TIMEOUT Verify Mixed content of fetch() in a Service Worker Test timed out
+
+FAIL Verify Mixed content of fetch() in a Service Worker assert_equals: expected "finish" but got "FAIL(3)FAIL(4)FAIL(5)finish"
 
index ffd2e94..228f0ad 100644 (file)
@@ -2,5 +2,5 @@
 
 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 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 COS image should be reject and response should not be redirected with NO-CORS mode. - undefined"
+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 1d793a3..90c80c3 100644 (file)
@@ -1,5 +1,12 @@
 
 Harness Error (TIMEOUT), message = null
 
-TIMEOUT Interfaces and attributes in ServiceWorkerGlobalScope Test timed out
+PASS Interfaces and attributes in ServiceWorkerGlobalScope 
+TIMEOUT test setup (cache creation) Test timed out
+FAIL Event constructors assert_equals: Default FetchEvent.clientId should be null expected (object) null but got (string) ""
+PASS ServiceWorkerGlobalScope interface: existence and properties of interface object 
+PASS ServiceWorkerGlobalScope interface object length 
+PASS ServiceWorkerGlobalScope interface object name 
+PASS ServiceWorkerGlobalScope interface: existence and properties of interface prototype object 
+TIMEOUT ServiceWorkerGlobalScope interface: internal [[SetPrototypeOf]] method of interface prototype object - setting to a new value via Object.setPrototypeOf should throw a TypeError Test timed out
 
index 1c4e750..fbb40ef 100644 (file)
@@ -1,6 +1,7 @@
 
-Harness Error (TIMEOUT), message = null
 
-TIMEOUT Test Performance Timeline API in Service Worker Test timed out
-NOTRUN empty service worker fetch event included in performance timings 
+PASS Test Performance Timeline API in Service Worker 
+FAIL empty service worker fetch event included in performance timings assert_greater_than: Slow service worker request should measure increased delay. expected a number greater than 1152.1 but got 151.59999999999997
+FAIL User Timing promise_test: Unhandled rejection with value: object "TypeError: performance.mark is not a function. (In 'performance.mark('startMark')', 'performance.mark' is undefined)"
+FAIL Resource Timing promise_test: Unhandled rejection with value: object "TypeError: performance.getEntriesByType is not a function. (In 'performance.getEntriesByType('resource')', 'performance.getEntriesByType' is undefined)"
 
index 641691a..3f28c05 100644 (file)
@@ -1,32 +1,30 @@
 
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT register-via-api-updateViaCache-undefined Test timed out
-NOTRUN register-via-api-updateViaCache-imports 
-NOTRUN register-via-api-updateViaCache-all 
-NOTRUN register-via-api-updateViaCache-none 
-NOTRUN register-via-link-element-updateViaCache-undefined 
-NOTRUN register-via-link-element-updateViaCache-imports 
-NOTRUN register-via-link-element-updateViaCache-all 
-NOTRUN register-via-link-element-updateViaCache-none 
-NOTRUN register-via-link-header-updateViaCache-undefined 
-NOTRUN register-via-link-header-updateViaCache-imports 
-NOTRUN register-via-link-header-updateViaCache-all 
-NOTRUN register-via-link-header-updateViaCache-none 
-NOTRUN register-with-updateViaCache-undefined-then-undefined 
-NOTRUN register-with-updateViaCache-undefined-then-imports 
-NOTRUN register-with-updateViaCache-undefined-then-all 
-NOTRUN register-with-updateViaCache-undefined-then-none 
-NOTRUN register-with-updateViaCache-imports-then-undefined 
-NOTRUN register-with-updateViaCache-imports-then-imports 
-NOTRUN register-with-updateViaCache-imports-then-all 
-NOTRUN register-with-updateViaCache-imports-then-none 
-NOTRUN register-with-updateViaCache-all-then-undefined 
-NOTRUN register-with-updateViaCache-all-then-imports 
-NOTRUN register-with-updateViaCache-all-then-all 
-NOTRUN register-with-updateViaCache-all-then-none 
-NOTRUN register-with-updateViaCache-none-then-undefined 
-NOTRUN register-with-updateViaCache-none-then-imports 
-NOTRUN register-with-updateViaCache-none-then-all 
-NOTRUN register-with-updateViaCache-none-then-none 
+FAIL register-via-api-updateViaCache-undefined promise_test: Unhandled rejection with value: object "NotSupportedError: ServiceWorkerRegistration::update not yet implemented"
+FAIL register-via-api-updateViaCache-imports promise_test: Unhandled rejection with value: object "NotSupportedError: ServiceWorkerRegistration::update not yet implemented"
+FAIL register-via-api-updateViaCache-all assert_equals: reg.updateViaCache expected "all" but got "imports"
+FAIL register-via-api-updateViaCache-none assert_equals: reg.updateViaCache expected "none" but got "imports"
+FAIL register-via-link-element-updateViaCache-undefined promise_test: Unhandled rejection with value: object "Error: link rel=serviceworker not supported"
+FAIL register-via-link-element-updateViaCache-imports promise_test: Unhandled rejection with value: object "Error: link rel=serviceworker not supported"
+FAIL register-via-link-element-updateViaCache-all promise_test: Unhandled rejection with value: object "Error: link rel=serviceworker not supported"
+FAIL register-via-link-element-updateViaCache-none promise_test: Unhandled rejection with value: object "Error: link rel=serviceworker not supported"
+FAIL register-via-link-header-updateViaCache-undefined promise_test: Unhandled rejection with value: object "Error: link rel=serviceworker not supported"
+FAIL register-via-link-header-updateViaCache-imports promise_test: Unhandled rejection with value: object "Error: link rel=serviceworker not supported"
+FAIL register-via-link-header-updateViaCache-all promise_test: Unhandled rejection with value: object "Error: link rel=serviceworker not supported"
+FAIL register-via-link-header-updateViaCache-none promise_test: Unhandled rejection with value: object "Error: link rel=serviceworker not supported"
+PASS register-with-updateViaCache-undefined-then-undefined 
+PASS register-with-updateViaCache-undefined-then-imports 
+FAIL register-with-updateViaCache-undefined-then-all assert_equals: reg.updateViaCache updated expected "all" but got "imports"
+FAIL register-with-updateViaCache-undefined-then-none assert_equals: reg.updateViaCache updated expected "none" but got "imports"
+PASS register-with-updateViaCache-imports-then-undefined 
+PASS register-with-updateViaCache-imports-then-imports 
+FAIL register-with-updateViaCache-imports-then-all assert_equals: reg.updateViaCache updated expected "all" but got "imports"
+FAIL register-with-updateViaCache-imports-then-none assert_equals: reg.updateViaCache updated expected "none" but got "imports"
+FAIL register-with-updateViaCache-all-then-undefined assert_true: New worker installing expected true got false
+FAIL register-with-updateViaCache-all-then-imports assert_true: New worker installing expected true got false
+FAIL register-with-updateViaCache-all-then-all assert_equals: reg.updateViaCache updated expected "all" but got "imports"
+FAIL register-with-updateViaCache-all-then-none assert_equals: reg.updateViaCache updated expected "none" but got "imports"
+FAIL register-with-updateViaCache-none-then-undefined assert_true: New worker installing expected true got false
+FAIL register-with-updateViaCache-none-then-imports assert_true: New worker installing expected true got false
+FAIL register-with-updateViaCache-none-then-all assert_equals: reg.updateViaCache updated expected "all" but got "imports"
+FAIL register-with-updateViaCache-none-then-none assert_equals: reg.updateViaCache updated expected "none" but got "imports"
 
index 90bfb1b..090ee8b 100644 (file)
@@ -1,5 +1,6 @@
 
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT CSP test for connect-src in ServiceWorkerGlobalScope Test timed out
+PASS CSP test for connect-src in ServiceWorkerGlobalScope 
+FAIL importScripts test for connect-src assert_false: Importing the other origins script should not fail. expected false got true
+FAIL Fetch test for connect-src assert_unreached: unexpected rejection: assert_unreached: fetch should fail. Reached unreachable code Reached unreachable code
+FAIL Redirected fetch test for connect-src assert_unreached: unexpected rejection: assert_unreached: Redirected fetch should fail. Reached unreachable code Reached unreachable code
 
index ed56994..18f5259 100644 (file)
@@ -1,5 +1,6 @@
 
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT CSP test for default-src in ServiceWorkerGlobalScope Test timed out
+PASS CSP test for default-src in ServiceWorkerGlobalScope 
+PASS importScripts test for default-src 
+FAIL Fetch test for default-src assert_unreached: unexpected rejection: assert_unreached: fetch should fail. Reached unreachable code Reached unreachable code
+FAIL Redirected fetch test for default-src assert_unreached: unexpected rejection: assert_unreached: Redirected fetch should fail. Reached unreachable code Reached unreachable code
 
index b906baf..d37a7b5 100644 (file)
@@ -1,5 +1,6 @@
 
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT CSP test for script-src in ServiceWorkerGlobalScope Test timed out
+PASS CSP test for script-src in ServiceWorkerGlobalScope 
+PASS importScripts test for script-src 
+PASS Fetch test for script-src 
+PASS Redirected fetch test for script-src 
 
index 64ac74d..6a239b8 100644 (file)
@@ -1,5 +1,3 @@
 
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT Fetch events should not go through uncontrolled page. Test timed out
+FAIL Fetch events should not go through uncontrolled page. assert_unreached: assert_equals: expected "a simple text file\n" but got "ERROR" Reached unreachable code
 
index f9eb255..f0bef38 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 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 46cfe22..771fe07 100644 (file)
@@ -1,7 +1,8 @@
 
+
 Harness Error (TIMEOUT), message = null
 
-TIMEOUT Registering a new script URL while an unregistered registration is in use Test timed out
-TIMEOUT Registering a new script URL that 404s does not resurrect an unregistered registration Test timed out
+FAIL Registering a new script URL while an unregistered registration is in use assert_unreached: unexpected rejection: null is not an object (evaluating 'registration.installing.scriptURL') Reached unreachable code
+FAIL Registering a new script URL that 404s does not resurrect an unregistered registration assert_unreached: unexpected rejection: assert_unreached: register should reject the promise Reached unreachable code Reached unreachable code
 TIMEOUT Registering a new script URL that fails to install does not resurrect an unregistered registration Test timed out
 
index 9acc3d9..0edda5b 100644 (file)
@@ -1,12 +1,10 @@
 
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT Test(cors: false, main: default, imported: default) Test timed out
-NOTRUN Test(cors: false, main: default, imported: time) 
-NOTRUN Test(cors: false, main: time, imported: default) 
-NOTRUN Test(cors: false, main: time, imported: time) 
-NOTRUN Test(cors: true, main: default, imported: default) 
-NOTRUN Test(cors: true, main: default, imported: time) 
-NOTRUN Test(cors: true, main: time, imported: default) 
-NOTRUN Test(cors: true, main: time, imported: time) 
+FAIL Test(cors: false, main: default, imported: default) promise_test: Unhandled rejection with value: object "NotSupportedError: ServiceWorkerRegistration::update not yet implemented"
+FAIL Test(cors: false, main: default, imported: time) promise_test: Unhandled rejection with value: object "NotSupportedError: ServiceWorkerRegistration::update not yet implemented"
+FAIL Test(cors: false, main: time, imported: default) promise_test: Unhandled rejection with value: object "NotSupportedError: ServiceWorkerRegistration::update not yet implemented"
+FAIL Test(cors: false, main: time, imported: time) promise_test: Unhandled rejection with value: object "NotSupportedError: ServiceWorkerRegistration::update not yet implemented"
+FAIL Test(cors: true, main: default, imported: default) promise_test: Unhandled rejection with value: object "NotSupportedError: ServiceWorkerRegistration::update not yet implemented"
+FAIL Test(cors: true, main: default, imported: time) promise_test: Unhandled rejection with value: object "NotSupportedError: ServiceWorkerRegistration::update not yet implemented"
+FAIL Test(cors: true, main: time, imported: default) promise_test: Unhandled rejection with value: object "NotSupportedError: ServiceWorkerRegistration::update not yet implemented"
+FAIL Test(cors: true, main: time, imported: time) promise_test: Unhandled rejection with value: object "NotSupportedError: ServiceWorkerRegistration::update not yet implemented"
 
index 73695e3..1739fbb 100644 (file)
@@ -1,3 +1,11 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+PASS Can construct a ByteLengthQueuingStrategy with a valid high water mark 
+PASS Can construct a ByteLengthQueuingStrategy with any value as its high water mark 
+PASS ByteLengthQueuingStrategy constructor behaves as expected with strange arguments 
+PASS ByteLengthQueuingStrategy size behaves as expected with strange arguments 
+PASS ByteLengthQueuingStrategy.prototype.size should work generically on its this and its arguments 
+PASS ByteLengthQueuingStrategy instances have the correct properties 
+PASS ByteLengthQueuingStrategy's highWaterMark property can be set to anything 
+PASS ByteLengthQueuingStrategy.name is correct 
 
index 73695e3..d65a133 100644 (file)
@@ -1,3 +1,11 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+PASS Can construct a CountQueuingStrategy with a valid high water mark 
+PASS Can construct a CountQueuingStrategy with any value as its high water mark 
+PASS CountQueuingStrategy constructor behaves as expected with strange arguments 
+PASS CountQueuingStrategy.prototype.size should work generically on its this and its arguments 
+PASS CountQueuingStrategy size behaves as expected with strange arguments 
+PASS CountQueuingStrategy instances have the correct properties 
+PASS CountQueuingStrategy's highWaterMark property can be set to anything 
+PASS CountQueuingStrategy.name is correct 
 
index 73695e3..e6fecef 100644 (file)
@@ -1,3 +1,19 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+FAIL Closing must be propagated backward: starts closed; preventCancel omitted; fulfilled cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel omitted; rejected cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = undefined (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = null (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = false (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = 0 (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = -0 (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = NaN (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel =  (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = true (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = a (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = 1 (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = Symbol() (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = [object Object] (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = true, preventAbort = true Can't find variable: WritableStream
+FAIL Closing must be propagated backward: starts closed; preventCancel = true, preventAbort = true, preventClose = true Can't find variable: WritableStream
 
index 73695e3..3e9fc17 100644 (file)
@@ -1,3 +1,30 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+FAIL Closing must be propagated forward: starts closed; preventClose omitted; fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose omitted; rejected close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = undefined (falsy); fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = null (falsy); fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = false (falsy); fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = 0 (falsy); fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = -0 (falsy); fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = NaN (falsy); fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose =  (falsy); fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = true (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = a (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = 1 (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = Symbol() (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = [object Object] (truthy) Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = true, preventAbort = true Can't find variable: WritableStream
+FAIL Closing must be propagated forward: starts closed; preventClose = true, preventAbort = true, preventCancel = true Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed asynchronously; preventClose omitted; fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed asynchronously; preventClose omitted; rejected close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed asynchronously; preventClose = true Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed asynchronously; dest never desires chunks; preventClose omitted; fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed asynchronously; dest never desires chunks; preventClose omitted; rejected close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed asynchronously; dest never desires chunks; preventClose = true Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed after one chunk; preventClose omitted; fulfilled close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed after one chunk; preventClose omitted; rejected close promise Can't find variable: WritableStream
+FAIL Closing must be propagated forward: becomes closed after one chunk; preventClose = true Can't find variable: WritableStream
+FAIL Closing must be propagated forward: shutdown must not occur until the final write completes Can't find variable: WritableStream
+FAIL Closing must be propagated forward: shutdown must not occur until the final write completes; preventClose = true Can't find variable: WritableStream
 
index 73695e3..f4998a0 100644 (file)
@@ -1,3 +1,38 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+FAIL Errors must be propagated backward: starts errored; preventCancel omitted; fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel omitted; fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel omitted; rejected cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = undefined (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = null (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = false (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = 0 (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = -0 (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = NaN (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel =  (falsy); fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = true (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = a (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = 1 (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = Symbol() (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = [object Object] (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write, preventCancel = true; preventAbort = true Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping due to write; preventCancel = true, preventAbort = true, preventClose = true Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored during piping due to write; preventCancel omitted; fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored during piping due to write; preventCancel omitted; rejected cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored during piping due to write; preventCancel = true Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored during piping due to write, but async; preventCancel = false; fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored during piping due to write, but async; preventCancel = false; rejected cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored during piping due to write, but async; preventCancel = true Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored after piping; preventCancel omitted; fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored after piping; preventCancel omitted; rejected cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored after piping; preventCancel = true Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored after piping due to last write; source is closed; preventCancel omitted (but cancel is never called) Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored after piping due to last write; source is closed; preventCancel = true Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored after piping; dest never desires chunks; preventCancel = false; fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored after piping; dest never desires chunks; preventCancel = false; rejected cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored after piping; dest never desires chunks; preventCancel = true Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping via abort; preventCancel omitted; fulfilled cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping via abort; preventCancel omitted; rejected cancel promise Can't find variable: WritableStream
+FAIL Errors must be propagated backward: becomes errored before piping via abort; preventCancel = true Can't find variable: WritableStream
+FAIL Errors must be propagated backward: erroring via the controller errors once pending write completes Can't find variable: WritableStream
 
index 73695e3..668dbda 100644 (file)
@@ -1,3 +1,32 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+FAIL Errors must be propagated forward: starts errored; preventAbort = false; fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = false; rejected abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = undefined (falsy); fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = null (falsy); fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = false (falsy); fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = 0 (falsy); fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = -0 (falsy); fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = NaN (falsy); fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort =  (falsy); fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = true (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = a (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = 1 (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = Symbol() (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = [object Object] (truthy) Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = true, preventCancel = true Can't find variable: WritableStream
+FAIL Errors must be propagated forward: starts errored; preventAbort = true, preventCancel = true, preventClose = true Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored while empty; preventAbort = false; fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored while empty; preventAbort = false; rejected abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored while empty; preventAbort = true Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored while empty; dest never desires chunks; preventAbort = false; fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored while empty; dest never desires chunks; preventAbort = false; rejected abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored while empty; dest never desires chunks; preventAbort = true Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored after one chunk; preventAbort = false; fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored after one chunk; preventAbort = false; rejected abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored after one chunk; preventAbort = true Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored after one chunk; dest never desires chunks; preventAbort = false; fulfilled abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored after one chunk; dest never desires chunks; preventAbort = false; rejected abort promise Can't find variable: WritableStream
+FAIL Errors must be propagated forward: becomes errored after one chunk; dest never desires chunks; preventAbort = true Can't find variable: WritableStream
+FAIL Errors must be propagated forward: shutdown must not occur until the final write completes Can't find variable: WritableStream
 
index 73695e3..74dba90 100644 (file)
@@ -1,3 +1,8 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+FAIL Piping from a non-empty ReadableStream into a WritableStream that does not desire chunks Can't find variable: WritableStream
+FAIL Piping from a non-empty ReadableStream into a WritableStream that does not desire chunks, but then does Can't find variable: WritableStream
+FAIL Piping from an empty ReadableStream into a WritableStream that does not desire chunks, but then the readable stream becomes non-empty and the writable stream starts desiring chunks Can't find variable: WritableStream
+FAIL Piping from a ReadableStream to a WritableStream that desires more chunks before finishing with previous ones Can't find variable: WritableStream
+FAIL Piping to a WritableStream that does not consume the writes fast enough exerts backpressure on the ReadableStream Can't find variable: WritableStream
 
index 73695e3..cf04a87 100644 (file)
@@ -1,3 +1,15 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+FAIL Piping must lock both the ReadableStream and WritableStream Can't find variable: WritableStream
+FAIL Piping finishing must unlock both the ReadableStream and WritableStream Can't find variable: WritableStream
+FAIL pipeTo must check the brand of its ReadableStream this value Can't find variable: WritableStream
+FAIL pipeTo must check the brand of its WritableStream argument Can't find variable: WritableStream
+FAIL pipeTo must fail if the ReadableStream is locked, and not lock the WritableStream Can't find variable: WritableStream
+FAIL pipeTo must fail if the WritableStream is locked, and not lock the ReadableStream Can't find variable: WritableStream
+FAIL Piping from a ReadableStream from which lots of chunks are synchronously readable Can't find variable: WritableStream
+FAIL Piping from a ReadableStream for which a chunk becomes asynchronously readable after the pipeTo Can't find variable: WritableStream
+FAIL an undefined rejection from pull should cause pipeTo() to reject when preventAbort is true Can't find variable: WritableStream
+FAIL an undefined rejection from pull should cause pipeTo() to reject when preventAbort is false Can't find variable: WritableStream
+FAIL an undefined rejection from write should cause pipeTo() to reject when preventCancel is true Can't find variable: WritableStream
+FAIL an undefined rejection from write should cause pipeTo() to reject when preventCancel is false Can't find variable: WritableStream
 
index 73695e3..310503e 100644 (file)
@@ -1,3 +1,9 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+FAIL Piping from an errored readable stream to an errored writable stream Can't find variable: WritableStream
+FAIL Piping from an errored readable stream to an errored writable stream; preventAbort = true Can't find variable: WritableStream
+FAIL Piping from an errored readable stream to a closing writable stream Can't find variable: WritableStream
+FAIL Piping from an errored readable stream to a closed writable stream Can't find variable: WritableStream
+FAIL Piping from a closed readable stream to an errored writable stream Can't find variable: WritableStream
+FAIL Piping from a closed readable stream to a closed writable stream Can't find variable: WritableStream
 
index 73695e3..1a134d5 100644 (file)
@@ -1,3 +1,16 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+FAIL Piping through a duck-typed pass-through transform stream should work Can't find variable: WritableStream
+FAIL Piping through a transform errored on the writable end does not cause an unhandled promise rejection Can't find variable: WritableStream
+PASS pipeThrough generically calls pipeTo with the appropriate args 
+FAIL pipeThrough can handle calling a pipeTo that returns a non-promise object Can't find variable: WritableStream
+FAIL pipeThrough can handle calling a pipeTo that returns a non-promise thenable object Can't find variable: WritableStream
+FAIL pipeThrough should mark a real promise from a fake readable as handled Can't find variable: WritableStream
+FAIL pipeThrough should not be fooled by an object whose instanceof Promise returns true Can't find variable: WritableStream
+PASS undefined readable or writable arguments should cause pipeThrough to throw 
+FAIL invalid but not undefined arguments should not cause pipeThrough to throw Can't find variable: WritableStream
+PASS pipeThrough should throw when its first argument is not convertible to an object 
+PASS pipeThrough should throw when "this" has no pipeTo method 
+PASS pipeThrough should rethrow errors from accessing pipeTo, readable, or writable 
+PASS pipeThrough should work with no options argument 
 
index 73695e3..0ad1833 100644 (file)
@@ -1,3 +1,4 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+FAIL Piping through an identity transform stream should close the destination when the source closes Can't find variable: TransformStream
 
index 73695e3..ffdcbe8 100644 (file)
@@ -1,3 +1,17 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+FAIL Can get the ReadableStreamBYOBReader constructor indirectly ReadableByteStreamController is not implemented
+FAIL Can get the ReadableByteStreamController constructor indirectly ReadableByteStreamController is not implemented
+PASS ReadableStreamBYOBReader enforces a brand check on its argument 
+FAIL ReadableStreamBYOBReader.prototype.closed enforces a brand check undefined is not an object (evaluating 'ReadableStreamBYOBReader.prototype')
+FAIL ReadableStreamBYOBReader.prototype.cancel enforces a brand check undefined is not an object (evaluating 'ReadableStreamBYOBReader.prototype')
+FAIL ReadableStreamBYOBReader.prototype.read enforces a brand check undefined is not an object (evaluating 'ReadableStreamBYOBReader.prototype')
+FAIL ReadableStreamBYOBReader.prototype.releaseLock enforces a brand check undefined is not an object (evaluating 'ReadableStreamBYOBReader.prototype')
+PASS ReadableByteStreamController enforces a brand check on its arguments 
+PASS ReadableByteStreamController can't be given a fully-constructed ReadableStream 
+FAIL ReadableByteStreamController.prototype.byobRequest enforces a brand check undefined is not an object (evaluating 'ReadableByteStreamController.prototype')
+FAIL ReadableByteStreamController.prototype.close enforces a brand check undefined is not an object (evaluating 'ReadableByteStreamController.prototype')
+FAIL ReadableByteStreamController.prototype.enqueue enforces a brand check undefined is not an object (evaluating 'ReadableByteStreamController.prototype')
+FAIL ReadableByteStreamController.prototype.error enforces a brand check undefined is not an object (evaluating 'ReadableByteStreamController.prototype')
+FAIL ReadableStreamBYOBRequest enforces brand checks ReadableByteStreamController is not implemented
 
index 6042170..b6ecdf6 100644 (file)
@@ -1,5 +1,11 @@
 
-Harness Error (TIMEOUT), message = null
-
-TIMEOUT Service worker test setup Test timed out
+PASS Service worker test setup 
+FAIL ReadableStream with byte source: read()ing from a closed stream still transfers the buffer ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read()ing from a stream with queued chunks still transfers the buffer ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: enqueuing an already-detached buffer throws ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: reading into an already-detached buffer rejects ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: respond() throws if the BYOB request's buffer has been detached (in the readable state) ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: respond() throws if the BYOB request's buffer has been detached (in the closed state) ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer has been detached (in the readable state) ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: respondWithNewView() throws if the supplied view's buffer has been detached (in the closed state) ReadableByteStreamController is not implemented
 
index 73695e3..be2371d 100644 (file)
@@ -1,3 +1,75 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+PASS getReader({mode: "byob"}) throws on non-bytes streams 
+FAIL ReadableStream with byte source can be constructed with no errors ReadableByteStreamController is not implemented
+FAIL getReader({mode}) must perform ToString() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Construct and expect start and pull being called ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: No automatic pull call if start doesn't finish ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Construct with highWaterMark of 0 ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: desiredSize when closed ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: desiredSize when errored ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: getReader(), then releaseLock() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: getReader() with mode set to byob, then releaseLock() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Test that closing a stream does not release a reader automatically ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Test that closing a stream does not release a BYOB reader automatically ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Test that erroring a stream does not release a reader automatically ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Test that erroring a stream does not release a BYOB reader automatically ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: releaseLock() on ReadableStreamReader with pending read() must throw ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Automatic pull() after start() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Automatic pull() after start() and read() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: autoAllocateChunkSize ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Mix of auto allocate and BYOB ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Automatic pull() after start() and read(view) ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: enqueue(), getReader(), then read() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Push source that doesn't understand pull signal ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read(), but pull() function is not callable ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read(view), but pull() function is not callable ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: enqueue() with Uint16Array, getReader(), then read() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: enqueue(), read(view) partially, then read() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: getReader(), enqueue(), close(), then read() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: enqueue(), close(), getReader(), then read() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Respond to pull() by enqueue() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Respond to pull() by enqueue() asynchronously ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read(view), then respond() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read(view), then respond() with a transferred ArrayBuffer ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read(view), then respond() with too big value ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: respond(3) to read(view) with 2 element Uint16Array enqueues the 1 byte remainder ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: enqueue(), getReader(), then read(view) ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: enqueue(), getReader(), then cancel() (mode = not BYOB) ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: enqueue(), getReader(), then cancel() (mode = BYOB) ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: getReader(), read(view), then cancel() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: cancel() with partially filled pending pull() request ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: enqueue(), getReader(), then read(view) where view.buffer is not fully covered by view ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Multiple enqueue(), getReader(), then read(view) ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: enqueue(), getReader(), then read(view) with a bigger view ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: enqueue(), getReader(), then read(view) with a smaller views ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: enqueue() 1 byte, getReader(), then read(view) with Uint16Array ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: enqueue() 3 byte, getReader(), then read(view) with 2-element Uint16Array ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read(view) with Uint16Array on close()-d stream with 1 byte enqueue()-d must fail ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: A stream must be errored if close()-d before fulfilling read(view) with Uint16Array ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Throw if close()-ed more than once ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Throw on enqueue() after close() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read(view), then respond() and close() in pull() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read(view) with Uint32Array, then fill it by multiple respond() calls ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read() twice, then enqueue() twice ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Multiple read(view), close() and respond() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Multiple read(view), big enqueue() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Multiple read(view) and multiple enqueue() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read(view) with passing undefined as view must fail ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read(view) with zero-length view must fail ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read(view) with passing an empty object as view must fail ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Even read(view) with passing ArrayBufferView like object as view must fail ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read() on an errored stream ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read(), then error() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read(view) on an errored stream ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: read(view), then error() ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Throwing in pull function must error the stream ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Throwing in pull in response to read() must be ignored if the stream is errored in it ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Throwing in pull in response to read(view) function must error the stream ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: Throwing in pull in response to read(view) must be ignored if the stream is errored in it ReadableByteStreamController is not implemented
+FAIL ReadableStream with byte source: default reader + autoAllocateChunkSize + byobRequest interaction ReadableByteStreamController is not implemented
+FAIL ReadableStreamBYOBReader can be constructed directly ReadableByteStreamController is not implemented
+FAIL ReadableStreamBYOBReader constructor requires a ReadableStream argument ReadableByteStreamController is not implemented
+FAIL ReadableStreamBYOBReader constructor requires an unlocked ReadableStream ReadableByteStreamController is not implemented
+FAIL ReadableStreamBYOBReader constructor requires a ReadableStream with type "bytes" ReadableByteStreamController is not implemented
 
index 73695e3..1b414aa 100644 (file)
@@ -1,3 +1,8 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+FAIL Can get the ReadableStreamBYOBReader constructor indirectly ReadableByteStreamController is not implemented
+PASS ReadableStreamBYOBReader constructor should get a ReadableStream object as argument 
+FAIL ReadableStreamBYOBReader instances should have the correct list of properties ReadableByteStreamController is not implemented
+FAIL ReadableStreamBYOBRequest instances should have the correct list of properties ReadableByteStreamController is not implemented
+FAIL ReadableByteStreamController instances should have the correct list of properties ReadableByteStreamController is not implemented
 
index 73695e3..b00b2b1 100644 (file)
@@ -1,3 +1,10 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+PASS Readable stream: throwing strategy.size getter 
+PASS Readable stream: strategy.size errors the stream and then throws 
+PASS Readable stream: strategy.size errors the stream and then returns Infinity 
+PASS Readable stream: throwing strategy.size method 
+PASS Readable stream: throwing strategy.highWaterMark getter 
+PASS Readable stream: invalid strategy.highWaterMark 
+PASS Readable stream: invalid strategy.size return value 
 
index 73695e3..d827052 100644 (file)
@@ -1,3 +1,25 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+PASS Underlying source start: throwing getter 
+PASS Underlying source start: throwing method 
+PASS Underlying source: throwing pull getter (initial pull) 
+PASS Underlying source: throwing pull method (initial pull) 
+PASS Underlying source pull: throwing getter (second pull) 
+PASS Underlying source pull: throwing method (second pull) 
+PASS Underlying source cancel: throwing getter 
+PASS Underlying source cancel: throwing method 
+PASS Underlying source: calling enqueue on an empty canceled stream should throw 
+PASS Underlying source: calling enqueue on a non-empty canceled stream should throw 
+PASS Underlying source: calling enqueue on a closed stream should throw 
+PASS Underlying source: calling enqueue on an errored stream should throw 
+PASS Underlying source: calling close twice on an empty stream should throw the second time 
+PASS Underlying source: calling close twice on a non-empty stream should throw the second time 
+PASS Underlying source: calling close on an empty canceled stream should throw 
+PASS Underlying source: calling close on a non-empty canceled stream should throw 
+PASS Underlying source: calling close after error should throw 
+PASS Underlying source: calling error twice should throw the second time 
+PASS Underlying source: calling error after close should throw 
+PASS Underlying source: calling error and returning a rejected promise from start should cause the stream to error with the first error 
+PASS Underlying source: calling error and returning a rejected promise from pull should cause the stream to error with the first error 
+PASS read should not error if it dequeues and pull() throws 
 
index 73695e3..39a8e12 100644 (file)
@@ -1,3 +1,18 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+PASS Can get the ReadableStreamDefaultReader constructor indirectly 
+PASS Can get the ReadableStreamDefaultController constructor indirectly 
+PASS ReadableStream.prototype.cancel enforces a brand check 
+PASS ReadableStream.prototype.getReader enforces a brand check 
+PASS ReadableStream.prototype.tee enforces a brand check 
+PASS ReadableStreamDefaultReader enforces a brand check on its argument 
+PASS ReadableStreamDefaultReader.prototype.closed enforces a brand check 
+PASS ReadableStreamDefaultReader.prototype.cancel enforces a brand check 
+PASS ReadableStreamDefaultReader.prototype.read enforces a brand check 
+PASS ReadableStreamDefaultReader.prototype.releaseLock enforces a brand check 
+PASS ReadableStreamDefaultController enforces a brand check on its argument 
+PASS ReadableStreamDefaultController can't be given a fully-constructed ReadableStream 
+PASS ReadableStreamDefaultController.prototype.close enforces a brand check 
+PASS ReadableStreamDefaultController.prototype.enqueue enforces a brand check 
+PASS ReadableStreamDefaultController.prototype.error enforces a brand check 
 
index 73695e3..54187c8 100644 (file)
@@ -1,3 +1,13 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+PASS ReadableStream cancellation: integration test on an infinite stream derived from a random push source 
+PASS ReadableStream cancellation: cancel(reason) should pass through the given reason to the underlying source 
+PASS ReadableStream cancellation: cancel() on a locked stream should fail and not call the underlying source cancel 
+PASS ReadableStream cancellation: should fulfill promise when cancel callback went fine 
+PASS ReadableStream cancellation: returning a value from the underlying source's cancel should not affect the fulfillment value of the promise returned by the stream's cancel 
+PASS ReadableStream cancellation: should reject promise when cancel callback raises an exception 
+PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should fulfill when that one does (1) 
+PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should fulfill when that one does (2) 
+PASS ReadableStream cancellation: if the underlying source's cancel method returns a promise, the promise returned by the stream's cancel should reject when that one does 
+PASS ReadableStream cancellation: cancelling before start finishes should prevent pull() from being called 
 
index 73695e3..ebd8044 100644 (file)
@@ -1,3 +1,7 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+PASS Can construct a readable stream with a valid CountQueuingStrategy 
+PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 0) 
+PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 1) 
+PASS Correctly governs a ReadableStreamController's desiredSize property (HWM = 4) 
 
index 73695e3..2f7b9be 100644 (file)
@@ -1,3 +1,29 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+PASS Can get the ReadableStreamDefaultReader constructor indirectly 
+PASS ReadableStreamDefaultReader constructor should get a ReadableStream object as argument 
+PASS ReadableStreamDefaultReader instances should have the correct list of properties 
+PASS ReadableStreamDefaultReader closed should always return the same promise object 
+PASS Constructing a ReadableStreamDefaultReader directly should fail if the stream is already locked (via direct construction) 
+PASS Getting a ReadableStreamDefaultReader via getReader should fail if the stream is already locked (via direct construction) 
+PASS Constructing a ReadableStreamDefaultReader directly should fail if the stream is already locked (via getReader) 
+PASS Getting a ReadableStreamDefaultReader via getReader should fail if the stream is already locked (via getReader) 
+PASS Constructing a ReadableStreamDefaultReader directly should be OK if the stream is closed 
+PASS Constructing a ReadableStreamDefaultReader directly should be OK if the stream is errored 
+PASS Reading from a reader for an empty stream will wait until a chunk is available 
+PASS cancel() on a reader does not release the reader 
+PASS closed should be fulfilled after stream is closed (.closed access before acquiring) 
+PASS closed should be rejected after reader releases its lock (multiple stream locks) 
+PASS Multiple readers can access the stream in sequence 
+PASS Cannot use an already-released reader to unlock a stream again 
+PASS cancel() on a released reader is a no-op and does not pass through 
+PASS Getting a second reader after erroring the stream and releasing the reader should succeed 
+PASS ReadableStreamDefaultReader closed promise should be rejected with undefined if that is the error 
+PASS ReadableStreamDefaultReader: if start rejects with no parameter, it should error the stream with an undefined error 
+PASS Erroring a ReadableStream after checking closed should reject ReadableStreamDefaultReader closed promise 
+PASS Erroring a ReadableStream before checking closed should reject ReadableStreamDefaultReader closed promise 
+PASS Reading twice on a stream that gets closed 
+PASS Reading twice on a closed stream 
+PASS Reading twice on an errored stream 
+PASS Reading twice on a stream that gets errored 
 
index 73695e3..0840eeb 100644 (file)
@@ -1,3 +1,7 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+PASS Floating point arithmetic must manifest near NUMBER.MAX_SAFE_INTEGER (total ends up positive) 
+PASS Floating point arithmetic must manifest near 0 (total ends up positive, but clamped) 
+PASS Floating point arithmetic must manifest near 0 (total ends up positive, and not clamped) 
+PASS Floating point arithmetic must manifest near 0 (total ends up zero) 
 
index 73695e3..effb9b5 100644 (file)
@@ -1,3 +1,7 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+PASS ReadableStreamController methods should continue working properly when scripts lose their reference to the readable stream 
+PASS ReadableStream closed promise should fulfill even if the stream and reader JS references are lost 
+PASS ReadableStream closed promise should reject even if stream and reader JS references are lost 
+PASS Garbage-collecting a ReadableStreamDefaultReader should not unlock its stream 
 
index 73695e3..5280a42 100644 (file)
@@ -1,3 +1,41 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+PASS ReadableStream can be constructed with no errors 
+PASS ReadableStream can't be constructed with garbage 
+PASS ReadableStream can't be constructed with an invalid type 
+FAIL ReadableStream instances should have the correct list of properties assert_equals: getReader should have no parameters expected 0 but got 1
+PASS ReadableStream constructor should throw for non-function start arguments 
+PASS ReadableStream constructor can get initial garbage as cancel argument 
+PASS ReadableStream constructor can get initial garbage as pull argument 
+PASS ReadableStream start should be called with the proper parameters 
+PASS ReadableStream start controller parameter should be extensible 
+PASS default ReadableStream getReader() should only accept mode:undefined 
+PASS ReadableStream should be able to call start method within prototype chain of its source 
+PASS ReadableStream start should be able to return a promise 
+PASS ReadableStream start should be able to return a promise and reject it 
+PASS ReadableStream should be able to enqueue different objects. 
+PASS ReadableStream: if pull rejects, it should error the stream 
+PASS ReadableStream: should only call pull once upon starting the stream 
+PASS ReadableStream: should call pull when trying to read from a started, empty stream 
+PASS ReadableStream: should only call pull once on a non-empty stream read from before start fulfills 
+PASS ReadableStream: should only call pull once on a non-empty stream read from after start fulfills 
+PASS ReadableStream: should call pull in reaction to read()ing the last chunk, if not draining 
+PASS ReadableStream: should not call pull() in reaction to read()ing the last chunk, if draining 
+PASS ReadableStream: should not call pull until the previous pull call's promise fulfills 
+PASS ReadableStream: should pull after start, and after every read 
+PASS ReadableStream: should not call pull after start if the stream is now closed 
+PASS ReadableStream: should call pull after enqueueing from inside pull (with no read requests), if strategy allows 
+PASS ReadableStream pull should be able to close a stream. 
+PASS ReadableStream pull should be able to error a stream. 
+PASS ReadableStream pull should be able to error a stream and throw. 
+PASS ReadableStream: enqueue should throw when the stream is readable but draining 
+PASS ReadableStream: enqueue should throw when the stream is closed 
+PASS ReadableStream: should call underlying source methods as methods 
+PASS ReadableStream: desiredSize when closed 
+PASS ReadableStream: desiredSize when errored 
+PASS ReadableStream strategies: the default strategy should give desiredSize of 1 to start, decreasing by 1 per enqueue 
+PASS ReadableStream strategies: the default strategy should continue giving desiredSize of 1 if the chunks are read immediately 
+PASS ReadableStream integration test: adapting a random push source 
+PASS ReadableStream integration test: adapting a sync pull source 
+PASS ReadableStream integration test: adapting an async pull source 
 
index 73695e3..4a24348 100644 (file)
@@ -1,3 +1,29 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+PASS Can get the ReadableStreamReader constructor indirectly 
+PASS ReadableStreamReader constructor should get a ReadableStream object as argument 
+PASS ReadableStreamReader instances should have the correct list of properties 
+PASS ReadableStreamReader closed should always return the same promise object 
+PASS Constructing a ReadableStreamReader directly should fail if the stream is already locked (via direct construction) 
+PASS Getting a ReadableStreamReader via getReader should fail if the stream is already locked (via direct construction) 
+PASS Constructing a ReadableStreamReader directly should fail if the stream is already locked (via getReader) 
+PASS Getting a ReadableStreamReader via getReader should fail if the stream is already locked (via getReader) 
+PASS Constructing a ReadableStreamReader directly should be OK if the stream is closed 
+PASS Constructing a ReadableStreamReader directly should be OK if the stream is errored 
+PASS Reading from a reader for an empty stream will wait until a chunk is available 
+PASS cancel() on a reader does not release the reader 
+PASS closed should be fulfilled after stream is closed (.closed access before acquiring) 
+PASS closed should be rejected after reader releases its lock (multiple stream locks) 
+PASS Multiple readers can access the stream in sequence 
+PASS Cannot use an already-released reader to unlock a stream again 
+PASS cancel() on a released reader is a no-op and does not pass through 
+PASS Getting a second reader after erroring the stream and releasing the reader should succeed 
+PASS ReadableStreamReader closed promise should be rejected with undefined if that is the error 
+PASS ReadableStreamReader: if start rejects with no parameter, it should error the stream with an undefined error 
+PASS Erroring a ReadableStream after checking closed should reject ReadableStreamReader closed promise 
+PASS Erroring a ReadableStream before checking closed should reject ReadableStreamReader closed promise 
+PASS Reading twice on a stream that gets closed 
+PASS Reading twice on a closed stream 
+PASS Reading twice on an errored stream 
+PASS Reading twice on a stream that gets errored 
 
index 73695e3..cd6d7ab 100644 (file)
@@ -1,3 +1,13 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+PASS ReadableStream teeing: rs.tee() returns an array of two ReadableStreams 
+PASS ReadableStream teeing: should be able to read one branch to the end without affecting the other 
+PASS ReadableStream teeing: values should be equal across each branch 
+PASS ReadableStream teeing: errors in the source should propagate to both branches 
+PASS ReadableStream teeing: canceling branch1 should not impact branch2 
+PASS ReadableStream teeing: canceling branch2 should not impact branch2 
+PASS ReadableStream teeing: canceling both branches should aggregate the cancel reasons into an array 
+PASS ReadableStream teeing: failing to cancel the original stream should cause cancel() to reject on branches 
+PASS ReadableStream teeing: closing the original should immediately close the branches 
+PASS ReadableStream teeing: erroring the original should immediately error the branches 
 
index 73695e3..437a03a 100644 (file)
@@ -1,3 +1,89 @@
 
-FAIL Service worker test setup assert_unreached: unregister should not fail: serviceWorker.getRegistration() is not yet implemented Reached unreachable code
+PASS Service worker test setup 
+PASS Running templatedRSEmpty with ReadableStream (empty) 
+PASS ReadableStream (empty): instances have the correct methods and properties 
+PASS ReadableStream (empty): calling getReader with invalid arguments should throw appropriate errors 
+PASS Running templatedRSEmptyReader with ReadableStream (empty) reader 
+PASS ReadableStream (empty) reader: instances have the correct methods and properties 
+PASS ReadableStream (empty) reader: locked should be true 
+PASS ReadableStream (empty) reader: read() should never settle 
+PASS ReadableStream (empty) reader: two read()s should both never settle 
+PASS ReadableStream (empty) reader: read() should return distinct promises each time 
+PASS ReadableStream (empty) reader: getReader() again on the stream should fail 
+PASS ReadableStream (empty) reader: releasing the lock with pending read requests should throw but the read requests should stay pending 
+PASS ReadableStream (empty) reader: releasing the lock should cause further read() calls to reject with a TypeError 
+PASS ReadableStream (empty) reader: releasing the lock should cause closed calls to reject with a TypeError 
+PASS ReadableStream (empty) reader: releasing the lock should cause locked to become false 
+PASS ReadableStream (empty) reader: canceling via the reader should cause the reader to act closed 
+PASS ReadableStream (empty) reader: canceling via the stream should fail 
+PASS Running templatedRSClosed with ReadableStream (closed via call in start) 
+PASS ReadableStream (closed via call in start): cancel() should return a distinct fulfilled promise each time 
+PASS ReadableStream (closed via call in start): locked should be false 
+PASS ReadableStream (closed via call in start): getReader() should be OK 
+PASS ReadableStream (closed via call in start): should be able to acquire multiple readers if they are released in succession 
+PASS ReadableStream (closed via call in start): should not be able to acquire a second reader if we don't release the first one 
+PASS Running templatedRSClosedReader with ReadableStream reader (closed before getting reader) 
+PASS ReadableStream reader (closed before getting reader): read() should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed before getting reader): read() multiple times should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed before getting reader): read() should work when used within another read() fulfill callback 
+PASS ReadableStream reader (closed before getting reader): closed should fulfill with undefined 
+PASS ReadableStream reader (closed before getting reader): releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream reader (closed before getting reader): cancel() should return a distinct fulfilled promise each time 
+PASS Running templatedRSClosedReader with ReadableStream reader (closed after getting reader) 
+PASS ReadableStream reader (closed after getting reader): read() should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed after getting reader): read() multiple times should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed after getting reader): read() should work when used within another read() fulfill callback 
+PASS ReadableStream reader (closed after getting reader): closed should fulfill with undefined 
+PASS ReadableStream reader (closed after getting reader): releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream reader (closed after getting reader): cancel() should return a distinct fulfilled promise each time 
+PASS Running templatedRSClosed with ReadableStream (closed via cancel) 
+PASS ReadableStream (closed via cancel): cancel() should return a distinct fulfilled promise each time 
+PASS ReadableStream (closed via cancel): locked should be false 
+PASS ReadableStream (closed via cancel): getReader() should be OK 
+PASS ReadableStream (closed via cancel): should be able to acquire multiple readers if they are released in succession 
+PASS ReadableStream (closed via cancel): should not be able to acquire a second reader if we don't release the first one 
+PASS Running templatedRSClosedReader with ReadableStream reader (closed via cancel after getting reader) 
+PASS ReadableStream reader (closed via cancel after getting reader): read() should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed via cancel after getting reader): read() multiple times should fulfill with { value: undefined, done: true } 
+PASS ReadableStream reader (closed via cancel after getting reader): read() should work when used within another read() fulfill callback 
+PASS ReadableStream reader (closed via cancel after getting reader): closed should fulfill with undefined 
+PASS ReadableStream reader (closed via cancel after getting reader): releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream reader (closed via cancel after getting reader): cancel() should return a distinct fulfilled promise each time 
+PASS Running templatedRSErrored with ReadableStream (errored via call in start) 
+PASS ReadableStream (errored via call in start): getReader() should return a reader that acts errored 
+PASS ReadableStream (errored via call in start): read() twice should give the error each time 
+PASS ReadableStream (errored via call in start): locked should be false 
+PASS Running templatedRSErroredSyncOnly with ReadableStream (errored via call in start) 
+PASS ReadableStream (errored via call in start): should be able to obtain a second reader, with the correct closed promise 
+PASS ReadableStream (errored via call in start): should not be able to obtain additional readers if we don't release the first lock 
+PASS ReadableStream (errored via call in start): cancel() should return a distinct rejected promise each time 
+PASS ReadableStream (errored via call in start): reader cancel() should return a distinct rejected promise each time 
+PASS Running templatedRSErrored with ReadableStream (errored via returning a rejected promise in start) 
+PASS ReadableStream (errored via returning a rejected promise in start): getReader() should return a reader that acts errored 
+PASS ReadableStream (errored via returning a rejected promise in start): read() twice should give the error each time 
+PASS ReadableStream (errored via returning a rejected promise in start): locked should be false 
+PASS Running templatedRSErroredReader with ReadableStream (errored via returning a rejected promise in start) reader 
+PASS ReadableStream (errored via returning a rejected promise in start) reader: closed should reject with the error 
+PASS ReadableStream (errored via returning a rejected promise in start) reader: releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream (errored via returning a rejected promise in start) reader: read() should reject with the error 
+PASS Running templatedRSErroredReader with ReadableStream reader (errored before getting reader) 
+PASS ReadableStream reader (errored before getting reader): closed should reject with the error 
+PASS ReadableStream reader (errored before getting reader): releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream reader (errored before getting reader): read() should reject with the error 
+PASS Running templatedRSErroredReader with ReadableStream reader (errored after getting reader) 
+PASS ReadableStream reader (errored after getting reader): closed should reject with the error 
+PASS ReadableStream reader (errored after getting reader): releasing the lock should cause closed to reject and change identity 
+PASS ReadableStream reader (errored after getting reader): read() should reject with the error 
+PASS Running templatedRSTwoChunksOpenReader with ReadableStream (two chunks enqueued, still open) reader 
+PASS ReadableStream (two chunks enqueued, still open) reader: calling read() twice without waiting will eventually give both chunks (sequential) 
+PASS ReadableStream (two chunks enqueued, still open) reader: calling read() twice without waiting will eventually give both chunks (nested) 
+PASS ReadableStream (two chunks enqueued, still open) reader: read() should return distinct promises each time 
+PASS ReadableStream (two chunks enqueued, still open) reader: cancel() after a read() should still give that single read result 
+PASS Running templatedRSTwoChunksClosedReader with ReadableStream (two chunks enqueued, then closed) reader 
+PASS ReadableStream (two chunks enqueued, then closed) reader: third read(), without waiting, should give { value: undefined, done: true } (sequential) 
+PASS ReadableStream (two chunks enqueued, then closed) reader: third read(), without waiting, should give { value: undefined, done: true } (nested) 
+PASS ReadableStream (two chunks enqueued, then closed) reader: draining the stream via read() should cause the reader closed promise to fulfill, but locked stays true 
+PASS ReadableStream (two chunks enqueued, then closed) reader: releasing the lock after the stream is closed should cause locked to become false 
+PASS ReadableStream (two chunks enqueued, then closed) reader: releasing the lock should cause further read() calls to reject with a TypeError 
+PASS ReadableStream (two chunks enqueued, then closed) reader: reader's closed property always returns the same promise 
 
index b35ac9e..e6f8ffb 100644 (file)
@@ -1,3 +1,29 @@
+2017-10-31  Youenn Fablet  <youenn@apple.com>
+
+        rwt should allow service worker to load localhost HTTPS resources with any certificate
+        https://bugs.webkit.org/show_bug.cgi?id=179018
+
+        Reviewed by Chris Dumez.
+
+        Allowing ServiceWorkerProcessProxy to handle authentication challenge.
+        Temporarily adding a boolean flag through WebProcessPool to lower the SSL certificate verifications for service workers.
+        This allows reducing flakiness in our layout tests for rwt.
+        Future work should be done to expose a correct API for the application level to handle authentication challenges properly.
+
+        * UIProcess/API/C/WKContext.cpp:
+        (WKContextSetAllowsAnySSLCertificateForServiceWorkerTesting):
+        * UIProcess/API/C/WKContextPrivate.h:
+        * UIProcess/API/Cocoa/WKProcessPool.mm:
+        (-[WKProcessPool _setAllowsAnySSLCertificateForServiceWorker:]):
+        * UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
+        * UIProcess/Network/NetworkProcessProxy.cpp:
+        (WebKit::NetworkProcessProxy::didReceiveAuthenticationChallenge):
+        (WebKit::NetworkProcessProxy::canAuthenticateAgainstProtectionSpace):
+        * UIProcess/ServiceWorkerProcessProxy.cpp:
+        (WebKit::ServiceWorkerProcessProxy::didReceiveAuthenticationChallenge):
+        * UIProcess/ServiceWorkerProcessProxy.h:
+        * UIProcess/WebProcessPool.h:
+
 2017-10-31  Joseph Pecoraro  <pecoraro@apple.com>
 
         Web Inspector: UIProcess ASSERT in ~RemoteWebInspectorProxy when InspectorProcess crashes
index 134ba50..4209202 100644 (file)
@@ -556,6 +556,13 @@ void WKContextSetAllowsAnySSLCertificateForWebSocketTesting(WKContextRef context
     toImpl(context)->setAllowsAnySSLCertificateForWebSocket(allows);
 }
 
+void WKContextSetAllowsAnySSLCertificateForServiceWorkerTesting(WKContextRef context, bool allows)
+{
+#if ENABLE(SERVICE_WORKER)
+    toImpl(context)->setAllowsAnySSLCertificateForServiceWorker(allows);
+#endif
+}
+
 void WKContextClearCachedCredentials(WKContextRef context)
 {
     toImpl(context)->clearCachedCredentials();
index 152d6da..2de11de 100644 (file)
@@ -91,7 +91,8 @@ WK_EXPORT void WKContextSetUsesNetworkProcess(WKContextRef, bool);
 WK_EXPORT void WKContextTerminateNetworkProcess(WKContextRef);
 
 WK_EXPORT void WKContextSetAllowsAnySSLCertificateForWebSocketTesting(WKContextRef, bool);
-    
+WK_EXPORT void WKContextSetAllowsAnySSLCertificateForServiceWorkerTesting(WKContextRef, bool);
+
 // Test only. Should be called before any secondary processes are started.
 WK_EXPORT void WKContextUseTestingNetworkSession(WKContextRef context);
 
index 1802307..ed25c23 100644 (file)
@@ -446,6 +446,13 @@ static NSDictionary *policiesHashMapToDictionary(const HashMap<String, HashMap<S
     _processPool->setCookieStoragePartitioningEnabled(enabled);
 }
 
+- (void)_setAllowsAnySSLCertificateForServiceWorker:(BOOL) allows
+{
+#if ENABLE(SERVICE_WORKER)
+    _processPool->setAllowsAnySSLCertificateForServiceWorker(allows);
+#endif
+}
+
 #if PLATFORM(IOS)
 - (id <_WKGeolocationCoreLocationProvider>)_coreLocationProvider
 {
index 13fe59c..c0962b0 100644 (file)
@@ -89,6 +89,9 @@
 
 - (void)_preconnectToServer:(NSURL *)serverURL WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
 
+// Test only.
+- (void)_setAllowsAnySSLCertificateForServiceWorker:(BOOL)allows WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
+
 @property (nonatomic, getter=_isCookieStoragePartitioningEnabled, setter=_setCookieStoragePartitioningEnabled:) BOOL _cookieStoragePartitioningEnabled WK_API_AVAILABLE(macosx(10.12.3), ios(10.3));
 
 @end
index a60b440..fdf9251 100644 (file)
@@ -264,6 +264,14 @@ void NetworkProcessProxy::didCreateNetworkConnectionToWebProcess(const IPC::Atta
 
 void NetworkProcessProxy::didReceiveAuthenticationChallenge(uint64_t pageID, uint64_t frameID, const WebCore::AuthenticationChallenge& coreChallenge, uint64_t challengeID)
 {
+#if ENABLE(SERVICE_WORKER)
+    if (m_processPool.isServiceWorker(pageID)) {
+        auto authenticationChallenge = AuthenticationChallengeProxy::create(coreChallenge, challengeID, connection());
+        m_processPool.serviceWorkerProxy()->didReceiveAuthenticationChallenge(pageID, frameID, WTFMove(authenticationChallenge));
+        return;
+    }
+#endif
+
     WebPageProxy* page = WebProcessProxy::webPage(pageID);
     MESSAGE_CHECK(page);
 
@@ -374,8 +382,12 @@ void NetworkProcessProxy::canAuthenticateAgainstProtectionSpace(uint64_t loaderI
             page->canAuthenticateAgainstProtectionSpace(loaderID, frameID, protectionSpace);
             return;
         }
+#if ENABLE(SERVICE_WORKER)
+    } else if (m_processPool.isServiceWorker(pageID)) {
+        send(Messages::NetworkProcess::ContinueCanAuthenticateAgainstProtectionSpace(loaderID, true), 0);
+        return;
+#endif
     }
-    
     // In the case where we will not be able to reply to this message with a client reply,
     // we should message back a default to the Networking process.
     send(Messages::NetworkProcess::ContinueCanAuthenticateAgainstProtectionSpace(loaderID, false), 0);
index dc27f12..043ebc9 100644 (file)
 #import "config.h"
 #include "ServiceWorkerProcessProxy.h"
 
+#include "AuthenticationChallengeProxy.h"
+#include "WebCredential.h"
 #include "WebPreferencesStore.h"
 #include "WebProcessMessages.h"
+#include "WebProcessPool.h"
+#include <WebCore/NotImplemented.h>
 
 namespace WebKit {
 
@@ -46,4 +50,20 @@ void ServiceWorkerProcessProxy::start(const WebPreferencesStore& store)
     send(Messages::WebProcess::GetWorkerContextConnection(m_serviceWorkerPageID, store), 0);
 }
 
+void ServiceWorkerProcessProxy::didReceiveAuthenticationChallenge(uint64_t pageID, uint64_t frameID, Ref<AuthenticationChallengeProxy>&& challenge)
+{
+    UNUSED_PARAM(pageID);
+    UNUSED_PARAM(frameID);
+
+    // FIXME: Expose an API to delegate the actual decision to the application layer.
+    auto& protectionSpace = challenge->core().protectionSpace();
+    if (protectionSpace.authenticationScheme() == WebCore::ProtectionSpaceAuthenticationSchemeServerTrustEvaluationRequested && processPool().allowsAnySSLCertificateForServiceWorker()) {
+        auto credential = WebCore::Credential(ASCIILiteral("accept server trust"), emptyString(), WebCore::CredentialPersistenceNone);
+        challenge->useCredential(WebCredential::create(credential).ptr());
+        return;
+    }
+    notImplemented();
+    challenge->performDefaultHandling();
+}
+
 } // namespace WebKit
index 0a635a3..2960f9d 100644 (file)
@@ -28,6 +28,7 @@
 #include "WebProcessProxy.h"
 
 namespace WebKit {
+class AuthenticationChallengeProxy;
 struct WebPreferencesStore;
 
 class ServiceWorkerProcessProxy final : public WebProcessProxy {
@@ -38,7 +39,10 @@ public:
     }
     ~ServiceWorkerProcessProxy();
 
+    void didReceiveAuthenticationChallenge(uint64_t pageID, uint64_t frameID, Ref<AuthenticationChallengeProxy>&&);
+
     void start(const WebPreferencesStore&);
+    uint64_t pageID() const { return m_serviceWorkerPageID; }
 
 private:
     ServiceWorkerProcessProxy(WebProcessPool&, WebsiteDataStore&);
index ee09e42..a0540c6 100644 (file)
@@ -38,6 +38,7 @@
 #include "PlugInAutoStartProvider.h"
 #include "PluginInfoStore.h"
 #include "ProcessThrottler.h"
+#include "ServiceWorkerProcessProxy.h"
 #include "StatisticsRequest.h"
 #include "StorageProcessProxy.h"
 #include "VisitedLinkStore.h"
@@ -322,6 +323,10 @@ public:
     void storageProcessCrashed(StorageProcessProxy*);
 #if ENABLE(SERVICE_WORKER)
     void getWorkerContextProcessConnection(StorageProcessProxy&);
+    bool isServiceWorker(uint64_t pageID) const { return m_serviceWorkerProcess && m_serviceWorkerProcess->pageID() == pageID; }
+    ServiceWorkerProcessProxy* serviceWorkerProxy() const { return m_serviceWorkerProcess; }
+    void setAllowsAnySSLCertificateForServiceWorker(bool allows) { m_allowsAnySSLCertificateForServiceWorker = allows; }
+    bool allowsAnySSLCertificateForServiceWorker() const { return m_allowsAnySSLCertificateForServiceWorker; }
 #endif
 
 #if PLATFORM(COCOA)
@@ -488,6 +493,7 @@ private:
 #if ENABLE(SERVICE_WORKER)
     ServiceWorkerProcessProxy* m_serviceWorkerProcess { nullptr };
     bool m_waitingForWorkerContextProcessConnection { false };
+    bool m_allowsAnySSLCertificateForServiceWorker { false };
 #endif
 
     Ref<WebPageGroup> m_defaultPageGroup;
index 873d81a..ed6aedb 100644 (file)
@@ -1,3 +1,13 @@
+2017-10-31  Youenn Fablet  <youenn@apple.com>
+
+        rwt should allow service worker to load localhost HTTPS resources with any certificate
+        https://bugs.webkit.org/show_bug.cgi?id=179018
+
+        Reviewed by Chris Dumez.
+
+        * WebKitTestRunner/TestController.cpp:
+        (WTR::TestController::resetStateToConsistentValues): allowing any SSL certificate for service workers.
+
 2017-10-31  Wenson Hsieh  <wenson_hsieh@apple.com>
 
         [Attachment Support] Implement WKWebView SPI for inserting attachment elements
index bc45a73..90df04a 100644 (file)
@@ -782,6 +782,8 @@ bool TestController::resetStateToConsistentValues(const TestOptions& options)
 
     clearDOMCaches();
 
+    WKContextSetAllowsAnySSLCertificateForServiceWorkerTesting(platformContext(), true);
+
     // FIXME: This function should also ensure that there is only one page open.
 
     // Reset the EventSender for each test.