+2017-08-04 Youenn Fablet <youenn@apple.com>
+
+ [Cache API] Add Cache and CacheStorage IDL definitions
+ https://bugs.webkit.org/show_bug.cgi?id=175201
+
+ Reviewed by Brady Eidson.
+
+ * TestExpectations:
+ * platform/ios-wk1/TestExpectations:
+ * platform/mac-wk1/TestExpectations:
+ * js/dom/global-constructors-attributes-dedicated-worker-expected.txt:
+ * platform/mac-highsierra/js/dom/global-constructors-attributes-expected.txt:
+
2017-08-04 Brady Eidson <beidson@apple.com>
Have navigator.serviceWorker() actually return a ServiceWorkerContainer object.
imported/w3c/web-platform-tests/secure-contexts/shared-worker-insecure-first.https.html [ Skip ]
imported/w3c/web-platform-tests/secure-contexts/shared-worker-secure-first.https.html [ Skip ]
-# Service Workers are unsupported
+# Skip service worker tests until the implementation is more actionnable
imported/w3c/web-platform-tests/service-workers [ Skip ]
+imported/w3c/web-platform-tests/service-workers/stub-4.6.2-cache.html [ Pass ]
+imported/w3c/web-platform-tests/service-workers/stub-4.6.3-cache-storage.html [ Pass ]
+imported/w3c/web-platform-tests/service-workers/cache-storage [ Pass ]
+imported/w3c/web-platform-tests/service-workers/cache-storage/window [ Pass Failure ]
#//////////////////////////////////////////////////////////////////////////////////////////
# End platform-specific tests.
+2017-08-04 Youenn Fablet <youenn@apple.com>
+
+ [Cache API] Add Cache and CacheStorage IDL definitions
+ https://bugs.webkit.org/show_bug.cgi?id=175201
+
+ Reviewed by Brady Eidson.
+
+ * web-platform-tests/service-workers/cache-storage/common.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/serviceworker/cache-add.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/serviceworker/cache-delete.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/serviceworker/cache-keys.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/serviceworker/cache-match.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/serviceworker/cache-matchAll.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/serviceworker/cache-put.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage-keys.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage-match.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/serviceworker/cache-storage.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/serviceworker/credentials.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/window/cache-add.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/window/cache-delete.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/window/cache-keys.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/window/cache-match.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/window/cache-matchAll.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/window/cache-put.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/window/cache-storage-keys.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/window/cache-storage-match.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/window/cache-storage.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/window/sandboxed-iframes.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/worker/cache-add.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/worker/cache-delete.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/worker/cache-keys.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/worker/cache-match.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/worker/cache-matchAll.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/worker/cache-put.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/worker/cache-storage-keys.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/worker/cache-storage-match.https-expected.txt: Added.
+ * web-platform-tests/service-workers/cache-storage/worker/cache-storage.https-expected.txt: Added.
+ * web-platform-tests/service-workers/stub-4.6.2-cache-expected.txt: Added.
+ * web-platform-tests/service-workers/stub-4.6.3-cache-storage-expected.txt: Added.
+
2017-08-04 Brady Eidson <beidson@apple.com>
Have navigator.serviceWorker() actually return a ServiceWorkerContainer object.
var credentials = {"givenValues" : ["omit", "same-origin", "include"],
"expectedValues" : ["omit", "same-origin", "include"]
};
- var caches = {"givenValues" : [ "default", "no-store", "reload", "no-cache", "force-cache"],
+ var cacheModes = {"givenValues" : [ "default", "no-store", "reload", "no-cache", "force-cache"],
"expectedValues" : [ "default", "no-store", "reload", "no-cache", "force-cache"]
};
var redirects = {"givenValues" : ["follow", "error", "manual"],
"referrerPolicy" : referrerPolicies,
"mode" : modes,
"credentials" : credentials,
- "cache" : caches,
+ "cache" : cacheModes,
"redirect" : redirects,
"integrity" : integrities,
"window" : windows
--- /dev/null
+
+FAIL Window sees cache puts by Worker promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL Cache.add and Cache.addAll null is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
--- /dev/null
+
+FAIL Cache.delete null is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
--- /dev/null
+
+FAIL Cache.keys null is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
--- /dev/null
+
+FAIL Cache.match null is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
--- /dev/null
+
+FAIL Cache.matchAll null is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
--- /dev/null
+
+FAIL Cache.put null is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
--- /dev/null
+
+FAIL CacheStorage.keys null is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
--- /dev/null
+
+FAIL CacheStorage.match null is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
--- /dev/null
+
+FAIL CacheStorage null is not an object (evaluating 'navigator.serviceWorker.getRegistration')
+
--- /dev/null
+
+FAIL Cache API matching includes credentials promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL Cache.add called with no arguments promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add called with relative URL specified as a string promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add called with non-HTTP/HTTPS URL promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add called with Request object promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add called with POST request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add called twice with the same Request object promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add with request with null body (not consumed) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add with 206 response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.addAll with 206 response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add with request that results in a status of 404 promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add with request that results in a status of 500 promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.addAll with no arguments promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.addAll with a mix of valid and undefined arguments promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.addAll with an empty array promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.addAll with string URL arguments promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.addAll with Request arguments promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.addAll with a mix of succeeding and failing requests promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.addAll called with the same Request object specified twice promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL Cache.delete with no arguments promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.delete called with a string URL promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.delete called with a Request object promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.delete called with a HEAD request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.delete supports ignoreVary promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.delete with a non-existent entry promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.delete with ignoreSearch option (request with search parameters) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.delete with ignoreSearch option (when it is specified as false) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL Cache.keys() called on an empty cache promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with no matching entries promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with URL promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with Request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with new Request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with ignoreSearch option (request with no search parameters) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with ignoreSearch option (request with search parameters) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys supports ignoreMethod promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys supports ignoreVary promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with URL containing fragment promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with string fragment "http" as query promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys without parameters promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with a HEAD Request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL Cache.match with no matching entries promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with URL promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with Request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with multiple cache hits promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with new Request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with HEAD promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with ignoreSearch option (request with no search parameters) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with ignoreSearch option (request with search parameter) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match supports ignoreMethod promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match supports ignoreVary promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with URL containing fragment promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with string fragment "http" as query promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with responses containing "Vary" header promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with Request and Response objects with different URLs promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match invoked multiple times for the same Request/Response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match blob should be sliceable promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with POST Request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with a non-2xx Response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with a network error Response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache produces large Responses that can be cloned and read correctly. promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL Cache.matchAll with no matching entries promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with URL promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with Request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with new Request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with HEAD promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with ignoreSearch option (request with no search parameters) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with ignoreSearch option (request with search parameters) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll supports ignoreMethod promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll supports ignoreVary promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with URL containing fragment promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with string fragment "http" as query promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll without parameters promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with responses containing "Vary" header promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with multiple vary pairs promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL Cache.put called with simple Request and Response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put called with Request and Response from fetch() promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with Request without a body promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with Response without a body promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a Response containing an empty URL promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with an empty response body promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with synthetic 206 response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with HTTP 206 response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with HTTP 500 response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put called twice with matching Requests and different Responses promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put called twice with request URLs that differ only by a fragment promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a string request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with an invalid response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a non-HTTP/HTTPS request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a relative URL promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a non-GET request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a null response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a POST request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a used response body promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL getReader() after Cache.put promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a VARY:* Response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with an embedded VARY:* Response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put should store Response.redirect() correctly promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL CacheStorage keys promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL CacheStorageMatch with no cache name provided promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch from one of many caches promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch from one of many caches by name promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch a string request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch a HEAD request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch with no cached entry promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch with no caches available but name provided promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch with empty cache name provided promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch supports ignoreSearch promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match supports ignoreMethod promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch supports ignoreVary promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL CacheStorage.open promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorage.delete dooms, but does not delete immediately promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorage.open with an empty name promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+PASS CacheStorage.open with no arguments
+FAIL CacheStorage.has with existing cache promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorage.has with nonexistent cache promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorage.open with existing cache promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorage.delete with existing cache promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorage.delete with nonexistent cache promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorage names are DOMStrings not USVStrings promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+
+FAIL Sandboxed iframe with allow-same-origin is allowed access assert_equals: Access should be allowed if sandbox has allow-same-origin expected "allowed" but got "denied"
+FAIL Sandboxed iframe without allow-same-origin is denied access assert_equals: Failure should be a SecurityError expected "SecurityError" but got "TypeError"
+
--- /dev/null
+
+FAIL Cache.add called with no arguments promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add called with relative URL specified as a string promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add called with non-HTTP/HTTPS URL promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add called with Request object promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add called with POST request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add called twice with the same Request object promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add with request with null body (not consumed) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add with 206 response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.addAll with 206 response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add with request that results in a status of 404 promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.add with request that results in a status of 500 promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.addAll with no arguments promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.addAll with a mix of valid and undefined arguments promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.addAll with an empty array promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.addAll with string URL arguments promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.addAll with Request arguments promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.addAll with a mix of succeeding and failing requests promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.addAll called with the same Request object specified twice promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL Cache.delete with no arguments promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.delete called with a string URL promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.delete called with a Request object promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.delete called with a HEAD request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.delete supports ignoreVary promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.delete with a non-existent entry promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.delete with ignoreSearch option (request with search parameters) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.delete with ignoreSearch option (when it is specified as false) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL Cache.keys() called on an empty cache promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with no matching entries promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with URL promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with Request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with new Request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with ignoreSearch option (request with no search parameters) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with ignoreSearch option (request with search parameters) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys supports ignoreMethod promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys supports ignoreVary promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with URL containing fragment promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with string fragment "http" as query promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys without parameters promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.keys with a HEAD Request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL Cache.match with no matching entries promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with URL promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with Request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with multiple cache hits promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with new Request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with HEAD promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with ignoreSearch option (request with no search parameters) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with ignoreSearch option (request with search parameter) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match supports ignoreMethod promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match supports ignoreVary promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with URL containing fragment promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with string fragment "http" as query promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with responses containing "Vary" header promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with Request and Response objects with different URLs promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match invoked multiple times for the same Request/Response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match blob should be sliceable promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with POST Request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with a non-2xx Response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match with a network error Response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache produces large Responses that can be cloned and read correctly. promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL Cache.matchAll with no matching entries promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with URL promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with Request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with new Request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with HEAD promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with ignoreSearch option (request with no search parameters) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with ignoreSearch option (request with search parameters) promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll supports ignoreMethod promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll supports ignoreVary promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with URL containing fragment promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with string fragment "http" as query promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll without parameters promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with responses containing "Vary" header promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.matchAll with multiple vary pairs promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL Cache.put called with simple Request and Response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put called with Request and Response from fetch() promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with Request without a body promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with Response without a body promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a Response containing an empty URL promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with an empty response body promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with synthetic 206 response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with HTTP 206 response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with HTTP 500 response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put called twice with matching Requests and different Responses promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put called twice with request URLs that differ only by a fragment promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a string request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with an invalid response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a non-HTTP/HTTPS request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a relative URL promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a non-GET request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a null response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a POST request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a used response body promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL getReader() after Cache.put promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with a VARY:* Response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put with an embedded VARY:* Response promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.put should store Response.redirect() correctly promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL CacheStorage keys promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL CacheStorageMatch with no cache name provided promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch from one of many caches promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch from one of many caches by name promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch a string request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch a HEAD request promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch with no cached entry promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch with no caches available but name provided promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch with empty cache name provided promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch supports ignoreSearch promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL Cache.match supports ignoreMethod promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorageMatch supports ignoreVary promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+FAIL CacheStorage.open promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorage.delete dooms, but does not delete immediately promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorage.open with an empty name promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+PASS CacheStorage.open with no arguments
+FAIL CacheStorage.has with existing cache promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorage.has with nonexistent cache promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorage.open with existing cache promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorage.delete with existing cache promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorage.delete with nonexistent cache promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+FAIL CacheStorage names are DOMStrings not USVStrings promise_test: Unhandled rejection with value: object "TypeError: Not implemented"
+
--- /dev/null
+
+PASS Cache interface: existence and properties of interface object
+PASS Cache interface object length
+PASS Cache interface object name
+PASS Cache interface: existence and properties of interface prototype object
+PASS Cache interface: existence and properties of interface prototype object's "constructor" property
+PASS Cache interface: operation match(RequestInfo,CacheQueryOptions)
+PASS Cache interface: operation matchAll(RequestInfo,CacheQueryOptions)
+PASS Cache interface: operation add(RequestInfo)
+PASS Cache interface: operation addAll([object Object])
+PASS Cache interface: operation put(RequestInfo,Response)
+PASS Cache interface: operation delete(RequestInfo,CacheQueryOptions)
+PASS Cache interface: operation keys(RequestInfo,CacheQueryOptions)
+FAIL Cache interface: throw new Error ('No object defined for the Cache interface') must inherit property "match" with the proper type (0) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the Cache interface"
+FAIL Cache interface: calling match(RequestInfo,CacheQueryOptions) on throw new Error ('No object defined for the Cache interface') with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the Cache interface"
+FAIL Cache interface: throw new Error ('No object defined for the Cache interface') must inherit property "matchAll" with the proper type (1) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the Cache interface"
+FAIL Cache interface: calling matchAll(RequestInfo,CacheQueryOptions) on throw new Error ('No object defined for the Cache interface') with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the Cache interface"
+FAIL Cache interface: throw new Error ('No object defined for the Cache interface') must inherit property "add" with the proper type (2) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the Cache interface"
+FAIL Cache interface: calling add(RequestInfo) on throw new Error ('No object defined for the Cache interface') with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the Cache interface"
+FAIL Cache interface: throw new Error ('No object defined for the Cache interface') must inherit property "addAll" with the proper type (3) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the Cache interface"
+FAIL Cache interface: calling addAll([object Object]) on throw new Error ('No object defined for the Cache interface') with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the Cache interface"
+FAIL Cache interface: throw new Error ('No object defined for the Cache interface') must inherit property "put" with the proper type (4) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the Cache interface"
+FAIL Cache interface: calling put(RequestInfo,Response) on throw new Error ('No object defined for the Cache interface') with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the Cache interface"
+FAIL Cache interface: throw new Error ('No object defined for the Cache interface') must inherit property "delete" with the proper type (5) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the Cache interface"
+FAIL Cache interface: calling delete(RequestInfo,CacheQueryOptions) on throw new Error ('No object defined for the Cache interface') with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the Cache interface"
+FAIL Cache interface: throw new Error ('No object defined for the Cache interface') must inherit property "keys" with the proper type (6) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the Cache interface"
+FAIL Cache interface: calling keys(RequestInfo,CacheQueryOptions) on throw new Error ('No object defined for the Cache interface') with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the Cache interface"
+
--- /dev/null
+CONSOLE MESSAGE: line 251: callback not yet supported
+
+PASS CacheStorage interface: existence and properties of interface object
+FAIL CacheStorage interface object length assert_equals: wrong value for CacheStorage.length expected 1 but got 0
+PASS CacheStorage interface object name
+PASS CacheStorage interface: existence and properties of interface prototype object
+PASS CacheStorage interface: existence and properties of interface prototype object's "constructor" property
+PASS CacheStorage interface: operation match(ScalarValueString,DOMString)
+FAIL CacheStorage interface: operation get(DOMString) assert_own_property: interface prototype object missing non-static operation expected property "get" missing
+PASS CacheStorage interface: operation has(DOMString)
+FAIL CacheStorage interface: operation set(DOMString,Cache) assert_own_property: interface prototype object missing non-static operation expected property "set" missing
+FAIL CacheStorage interface: operation clear() assert_own_property: interface prototype object missing non-static operation expected property "clear" missing
+PASS CacheStorage interface: operation delete(DOMString)
+FAIL CacheStorage interface: operation forEach(CacheStorageIterationCallback,object) assert_own_property: interface prototype object missing non-static operation expected property "forEach" missing
+FAIL CacheStorage interface: operation entries() assert_own_property: interface prototype object missing non-static operation expected property "entries" missing
+PASS CacheStorage interface: operation keys()
+FAIL CacheStorage interface: operation values() assert_own_property: interface prototype object missing non-static operation expected property "values" missing
+FAIL CacheStorage interface: operation size() assert_own_property: interface prototype object missing non-static operation expected property "size" missing
+FAIL CacheStorage interface: throw new Error ('No object defined for the CacheStorage interface') must inherit property "match" with the proper type (0) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+FAIL CacheStorage interface: calling match(ScalarValueString,DOMString) on throw new Error ('No object defined for the CacheStorage interface') with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+FAIL CacheStorage interface: throw new Error ('No object defined for the CacheStorage interface') must inherit property "get" with the proper type (1) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+FAIL CacheStorage interface: calling get(DOMString) on throw new Error ('No object defined for the CacheStorage interface') with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+FAIL CacheStorage interface: throw new Error ('No object defined for the CacheStorage interface') must inherit property "has" with the proper type (2) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+FAIL CacheStorage interface: calling has(DOMString) on throw new Error ('No object defined for the CacheStorage interface') with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+FAIL CacheStorage interface: throw new Error ('No object defined for the CacheStorage interface') must inherit property "set" with the proper type (3) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+FAIL CacheStorage interface: calling set(DOMString,Cache) on throw new Error ('No object defined for the CacheStorage interface') with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+FAIL CacheStorage interface: throw new Error ('No object defined for the CacheStorage interface') must inherit property "clear" with the proper type (4) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+FAIL CacheStorage interface: throw new Error ('No object defined for the CacheStorage interface') must inherit property "delete" with the proper type (5) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+FAIL CacheStorage interface: calling delete(DOMString) on throw new Error ('No object defined for the CacheStorage interface') with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+FAIL CacheStorage interface: throw new Error ('No object defined for the CacheStorage interface') must inherit property "forEach" with the proper type (6) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+FAIL CacheStorage interface: calling forEach(CacheStorageIterationCallback,object) on throw new Error ('No object defined for the CacheStorage interface') with too few arguments must throw TypeError assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+FAIL CacheStorage interface: throw new Error ('No object defined for the CacheStorage interface') must inherit property "entries" with the proper type (7) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+FAIL CacheStorage interface: throw new Error ('No object defined for the CacheStorage interface') must inherit property "keys" with the proper type (8) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+FAIL CacheStorage interface: throw new Error ('No object defined for the CacheStorage interface') must inherit property "values" with the proper type (9) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+FAIL CacheStorage interface: throw new Error ('No object defined for the CacheStorage interface') must inherit property "size" with the proper type (10) assert_equals: Unexpected exception when evaluating object expected null but got object "Error: No object defined for the CacheStorage interface"
+
PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ByteLengthQueuingStrategy').hasOwnProperty('set') is false
PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ByteLengthQueuingStrategy').enumerable is false
PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ByteLengthQueuingStrategy').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Cache').value is Cache
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Cache').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Cache').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Cache').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Cache').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CacheStorage').value is CacheStorage
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CacheStorage').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CacheStorage').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CacheStorage').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CacheStorage').configurable is true
PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CountQueuingStrategy').value is CountQueuingStrategy
PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CountQueuingStrategy').hasOwnProperty('get') is false
PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CountQueuingStrategy').hasOwnProperty('set') is false
editing/input/focus-change-with-marked-text.html [ Pass ]
+# No service worker implementation for WK1
+imported/w3c/web-platform-tests/service-workers [ Skip ]
+
# Skip WebRTC for now in WK1
imported/w3c/web-platform-tests/webrtc [ Skip ]
webrtc [ Skip ]
PASS Object.getOwnPropertyDescriptor(global, 'CSSValueList').hasOwnProperty('set') is false
PASS Object.getOwnPropertyDescriptor(global, 'CSSValueList').enumerable is false
PASS Object.getOwnPropertyDescriptor(global, 'CSSValueList').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'Cache').value is Cache
+PASS Object.getOwnPropertyDescriptor(global, 'Cache').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Cache').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'Cache').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'Cache').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'CacheStorage').value is CacheStorage
+PASS Object.getOwnPropertyDescriptor(global, 'CacheStorage').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CacheStorage').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'CacheStorage').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'CacheStorage').configurable is true
PASS Object.getOwnPropertyDescriptor(global, 'CanvasCaptureMediaStreamTrack').value is CanvasCaptureMediaStreamTrack
PASS Object.getOwnPropertyDescriptor(global, 'CanvasCaptureMediaStreamTrack').hasOwnProperty('get') is false
PASS Object.getOwnPropertyDescriptor(global, 'CanvasCaptureMediaStreamTrack').hasOwnProperty('set') is false
PASS Object.getOwnPropertyDescriptor(global, 'Selection').hasOwnProperty('set') is false
PASS Object.getOwnPropertyDescriptor(global, 'Selection').enumerable is false
PASS Object.getOwnPropertyDescriptor(global, 'Selection').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'ServiceWorker').value is ServiceWorker
+PASS Object.getOwnPropertyDescriptor(global, 'ServiceWorker').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ServiceWorker').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ServiceWorker').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'ServiceWorker').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'ServiceWorkerContainer').value is ServiceWorkerContainer
+PASS Object.getOwnPropertyDescriptor(global, 'ServiceWorkerContainer').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ServiceWorkerContainer').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ServiceWorkerContainer').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'ServiceWorkerContainer').configurable is true
+PASS Object.getOwnPropertyDescriptor(global, 'ServiceWorkerRegistration').value is ServiceWorkerRegistration
+PASS Object.getOwnPropertyDescriptor(global, 'ServiceWorkerRegistration').hasOwnProperty('get') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ServiceWorkerRegistration').hasOwnProperty('set') is false
+PASS Object.getOwnPropertyDescriptor(global, 'ServiceWorkerRegistration').enumerable is false
+PASS Object.getOwnPropertyDescriptor(global, 'ServiceWorkerRegistration').configurable is true
PASS Object.getOwnPropertyDescriptor(global, 'Set').value is Set
PASS Object.getOwnPropertyDescriptor(global, 'Set').hasOwnProperty('get') is false
PASS Object.getOwnPropertyDescriptor(global, 'Set').hasOwnProperty('set') is false
http/tests/media/media-stream
http/tests/ssl/media-stream
+# No service worker implementation for WK1
+imported/w3c/web-platform-tests/service-workers [ Skip ]
+
# Skip WebRTC for now in WK1
imported/w3c/web-platform-tests/webrtc [ Skip ]
webrtc [ Skip ]
--- /dev/null
+Test to ensure that global constructors have the right attributes in the dedicated worker context
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+Starting worker: script-tests/global-constructors-attributes.js
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Array').value is Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ArrayBuffer').value is ArrayBuffer
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ArrayBuffer').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ArrayBuffer').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ArrayBuffer').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ArrayBuffer').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Blob').value is Blob
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Blob').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Blob').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Blob').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Blob').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Boolean').value is Boolean
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Boolean').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Boolean').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Boolean').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Boolean').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ByteLengthQueuingStrategy').value is ByteLengthQueuingStrategy
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ByteLengthQueuingStrategy').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ByteLengthQueuingStrategy').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ByteLengthQueuingStrategy').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ByteLengthQueuingStrategy').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CountQueuingStrategy').value is CountQueuingStrategy
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CountQueuingStrategy').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CountQueuingStrategy').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CountQueuingStrategy').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CountQueuingStrategy').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Crypto').value is Crypto
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Crypto').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Crypto').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Crypto').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Crypto').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CryptoKey').value is CryptoKey
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CryptoKey').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CryptoKey').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CryptoKey').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'CryptoKey').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMException').value is DOMException
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMException').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMException').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMException').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMException').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMPoint').value is DOMPoint
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMPoint').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMPoint').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMPoint').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMPoint').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMPointReadOnly').value is DOMPointReadOnly
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMPointReadOnly').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMPointReadOnly').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMPointReadOnly').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMPointReadOnly').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMQuad').value is DOMQuad
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMQuad').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMQuad').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMQuad').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMQuad').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMRect').value is DOMRect
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMRect').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMRect').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMRect').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMRect').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMRectReadOnly').value is DOMRectReadOnly
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMRectReadOnly').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMRectReadOnly').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMRectReadOnly').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DOMRectReadOnly').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DataView').value is DataView
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DataView').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DataView').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DataView').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DataView').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Date').value is Date
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Date').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Date').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Date').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Date').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DedicatedWorkerGlobalScope').value is DedicatedWorkerGlobalScope
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DedicatedWorkerGlobalScope').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DedicatedWorkerGlobalScope').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DedicatedWorkerGlobalScope').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'DedicatedWorkerGlobalScope').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Error').value is Error
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Error').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Error').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Error').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Error').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ErrorEvent').value is ErrorEvent
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ErrorEvent').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ErrorEvent').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ErrorEvent').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ErrorEvent').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EvalError').value is EvalError
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EvalError').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EvalError').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EvalError').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EvalError').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Event').value is Event
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Event').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Event').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Event').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Event').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EventSource').value is EventSource
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EventSource').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EventSource').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EventSource').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EventSource').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EventTarget').value is EventTarget
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EventTarget').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EventTarget').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EventTarget').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'EventTarget').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'FileReader').value is FileReader
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'FileReader').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'FileReader').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'FileReader').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'FileReader').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'FileReaderSync').value is FileReaderSync
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'FileReaderSync').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'FileReaderSync').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'FileReaderSync').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'FileReaderSync').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float32Array').value is Float32Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float32Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float32Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float32Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float32Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float64Array').value is Float64Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float64Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float64Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float64Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Float64Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Function').value is Function
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Function').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Function').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Function').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Function').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Headers').value is Headers
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Headers').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Headers').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Headers').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Headers').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ImageData').value is ImageData
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ImageData').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ImageData').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ImageData').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ImageData').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int16Array').value is Int16Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int16Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int16Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int16Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int16Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int32Array').value is Int32Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int32Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int32Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int32Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int32Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int8Array').value is Int8Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int8Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int8Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int8Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Int8Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Map').value is Map
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Map').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Map').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Map').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Map').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageChannel').value is MessageChannel
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageChannel').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageChannel').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageChannel').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageChannel').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageEvent').value is MessageEvent
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageEvent').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageEvent').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageEvent').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessageEvent').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessagePort').value is MessagePort
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessagePort').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessagePort').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessagePort').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'MessagePort').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Number').value is Number
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Number').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Number').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Number').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Number').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Object').value is Object
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Object').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Object').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Object').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Object').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Performance').value is Performance
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Performance').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Performance').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Performance').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').value is PerformanceEntry
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceEntry').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceMark').value is PerformanceMark
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceMark').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceMark').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceMark').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').value is PerformanceMeasure
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceMeasure').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceObserver').value is PerformanceObserver
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceObserver').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceObserver').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceObserver').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceObserver').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceObserverEntryList').value is PerformanceObserverEntryList
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceObserverEntryList').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceObserverEntryList').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceObserverEntryList').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceObserverEntryList').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceResourceTiming').value is PerformanceResourceTiming
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceResourceTiming').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceResourceTiming').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceResourceTiming').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'PerformanceResourceTiming').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ProgressEvent').value is ProgressEvent
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ProgressEvent').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ProgressEvent').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ProgressEvent').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ProgressEvent').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Promise').value is Promise
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Promise').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Promise').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Promise').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Promise').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RangeError').value is RangeError
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RangeError').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RangeError').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RangeError').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RangeError').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReadableStream').value is ReadableStream
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReadableStream').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReadableStream').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReadableStream').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReadableStream').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReferenceError').value is ReferenceError
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReferenceError').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReferenceError').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReferenceError').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'ReferenceError').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RegExp').value is RegExp
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RegExp').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RegExp').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RegExp').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'RegExp').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Request').value is Request
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Request').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Request').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Request').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Request').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Response').value is Response
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Response').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Response').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Response').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Response').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Set').value is Set
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Set').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Set').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Set').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Set').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').value is SharedArrayBuffer
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SharedArrayBuffer').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'String').value is String
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'String').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'String').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'String').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'String').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SubtleCrypto').value is SubtleCrypto
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SubtleCrypto').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SubtleCrypto').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SubtleCrypto').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SubtleCrypto').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Symbol').value is Symbol
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Symbol').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Symbol').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Symbol').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Symbol').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SyntaxError').value is SyntaxError
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SyntaxError').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SyntaxError').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SyntaxError').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'SyntaxError').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TextDecoder').value is TextDecoder
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TextDecoder').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TextDecoder').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TextDecoder').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TextDecoder').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TextEncoder').value is TextEncoder
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TextEncoder').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TextEncoder').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TextEncoder').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TextEncoder').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TypeError').value is TypeError
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TypeError').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TypeError').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TypeError').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'TypeError').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URIError').value is URIError
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URIError').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URIError').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URIError').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URIError').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URL').value is URL
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URL').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URL').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URL').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URL').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URLSearchParams').value is URLSearchParams
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URLSearchParams').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URLSearchParams').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URLSearchParams').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'URLSearchParams').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint16Array').value is Uint16Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint16Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint16Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint16Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint16Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint32Array').value is Uint32Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint32Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint32Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint32Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint32Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8Array').value is Uint8Array
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8Array').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8Array').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8Array').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8Array').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8ClampedArray').value is Uint8ClampedArray
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8ClampedArray').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8ClampedArray').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8ClampedArray').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'Uint8ClampedArray').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakMap').value is WeakMap
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakMap').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakMap').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakMap').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakMap').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakSet').value is WeakSet
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakSet').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakSet').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakSet').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WeakSet').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WebSocket').value is WebSocket
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WebSocket').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WebSocket').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WebSocket').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WebSocket').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WorkerGlobalScope').value is WorkerGlobalScope
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WorkerGlobalScope').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WorkerGlobalScope').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WorkerGlobalScope').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WorkerGlobalScope').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WorkerLocation').value is WorkerLocation
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WorkerLocation').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WorkerLocation').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WorkerLocation').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WorkerLocation').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WorkerNavigator').value is WorkerNavigator
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WorkerNavigator').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WorkerNavigator').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WorkerNavigator').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'WorkerNavigator').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').value is XMLHttpRequest
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'XMLHttpRequest').configurable is true
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestEventTarget').value is XMLHttpRequestEventTarget
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestEventTarget').hasOwnProperty('get') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestEventTarget').hasOwnProperty('set') is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestEventTarget').enumerable is false
+PASS [Worker] Object.getOwnPropertyDescriptor(global, 'XMLHttpRequestEventTarget').configurable is true
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
+2017-08-04 Youenn Fablet <youenn@apple.com>
+
+ [Cache API] Add Cache and CacheStorage IDL definitions
+ https://bugs.webkit.org/show_bug.cgi?id=175201
+
+ Reviewed by Brady Eidson.
+
+ * runtime/CommonIdentifiers.h:
+
2017-08-04 Mark Lam <mark.lam@apple.com>
Fix typo in testmasm.cpp: ENABLE(JSVALUE64) should be USE(JSVALUE64).
macro(Audio) \
macro(BYTES_PER_ELEMENT) \
macro(Boolean) \
+ macro(Cache) \
+ macro(CacheStorage) \
macro(Collator) \
macro(Credential) \
macro(CredentialsContainer) \
macro(bytecodeIndex) \
macro(bytecodes) \
macro(bytecodesID) \
+ macro(caches) \
macro(calendar) \
macro(callee) \
macro(caller) \
"${WEBCORE_DIR}/Modules/airplay"
"${WEBCORE_DIR}/Modules/beacon"
"${WEBCORE_DIR}/Modules/applepay"
+ "${WEBCORE_DIR}/Modules/cache"
"${WEBCORE_DIR}/Modules/credentials"
"${WEBCORE_DIR}/Modules/encryptedmedia"
"${WEBCORE_DIR}/Modules/encryptedmedia/legacy"
xml
Modules/airplay
+ Modules/cache
Modules/credentials
Modules/encryptedmedia/legacy
Modules/fetch
Modules/beacon/NavigatorBeacon.idl
+ Modules/cache/Cache.idl
+ Modules/cache/CacheQueryOptions.idl
+ Modules/cache/CacheStorage.idl
+ Modules/cache/DOMWindowCaches.idl
+ Modules/cache/WorkerGlobalScopeCaches.idl
+
Modules/credentials/BasicCredential.idl
Modules/credentials/CredentialCreationOptions.idl
Modules/credentials/CredentialData.idl
Modules/beacon/NavigatorBeacon.cpp
+ Modules/cache/Cache.cpp
+ Modules/cache/CacheStorage.cpp
+ Modules/cache/DOMWindowCaches.cpp
+ Modules/cache/WorkerGlobalScopeCaches.cpp
+
Modules/credentials/BasicCredential.cpp
Modules/credentials/CredentialsContainer.cpp
Modules/credentials/FederatedCredential.cpp
+2017-08-04 Youenn Fablet <youenn@apple.com>
+
+ [Cache API] Add Cache and CacheStorage IDL definitions
+ https://bugs.webkit.org/show_bug.cgi?id=175201
+
+ Reviewed by Brady Eidson.
+
+ Covered by activated tests.
+ Adding IDLs as per https://www.w3.org/TR/service-workers-1/#idl-index.
+ Implementation is guarded by a runtime flag which is off by default.
+ It is off for DRT but on for WTR.
+
+ * CMakeLists.txt:
+ * DerivedSources.make:
+ * Modules/cache/Cache.cpp: Added.
+ (WebCore::Cache::match):
+ (WebCore::Cache::matchAll):
+ (WebCore::Cache::add):
+ (WebCore::Cache::addAll):
+ (WebCore::Cache::put):
+ (WebCore::Cache::remove):
+ (WebCore::Cache::keys):
+ * Modules/cache/Cache.h: Added.
+ (WebCore::Cache::create):
+ (WebCore::Cache::Cache):
+ * Modules/cache/Cache.idl: Added.
+ * Modules/cache/CacheQueryOptions.h: Added.
+ * Modules/cache/CacheQueryOptions.idl: Added.
+ * Modules/cache/CacheStorage.cpp: Added.
+ (WebCore::CacheStorage::match):
+ (WebCore::CacheStorage::has):
+ (WebCore::CacheStorage::open):
+ (WebCore::CacheStorage::remove):
+ (WebCore::CacheStorage::keys):
+ * Modules/cache/CacheStorage.h: Added.
+ (WebCore::CacheStorage::create):
+ * Modules/cache/CacheStorage.idl: Added.
+ * Modules/cache/DOMWindowCaches.cpp: Added.
+ (WebCore::DOMWindowCaches::DOMWindowCaches):
+ (WebCore::DOMWindowCaches::supplementName):
+ (WebCore::DOMWindowCaches::from):
+ (WebCore::DOMWindowCaches::caches):
+ (WebCore::DOMWindowCaches::caches const):
+ * Modules/cache/DOMWindowCaches.h: Added.
+ * Modules/cache/DOMWindowCaches.idl: Added.
+ * Modules/cache/WorkerGlobalScopeCaches.cpp: Added.
+ (WebCore::WorkerGlobalScopeCaches::supplementName):
+ (WebCore::WorkerGlobalScopeCaches::from):
+ (WebCore::WorkerGlobalScopeCaches::caches):
+ (WebCore::WorkerGlobalScopeCaches::caches const):
+ * Modules/cache/WorkerGlobalScopeCaches.h: Added.
+ * Modules/cache/WorkerGlobalScopeCaches.idl: Added.
+ * WebCore.xcodeproj/project.pbxproj:
+ * page/RuntimeEnabledFeatures.h:
+ (WebCore::RuntimeEnabledFeatures::setCacheAPIEnabled):
+ (WebCore::RuntimeEnabledFeatures::cacheAPIEnabled const):
+
2017-08-04 Brady Eidson <beidson@apple.com>
Have navigator.serviceWorker() actually return a ServiceWorkerContainer object.
$(WebCore)/Modules/airplay \
$(WebCore)/Modules/applepay \
$(WebCore)/Modules/beacon \
+ $(WebCore)/Modules/cache \
$(WebCore)/Modules/credentials \
$(WebCore)/Modules/encryptedmedia \
$(WebCore)/Modules/encryptedmedia/legacy \
$(WebCore)/css \
$(WebCore)/dom \
$(WebCore)/editing \
- $(WebCore)/fetch \
$(WebCore)/fileapi \
$(WebCore)/html \
$(WebCore)/html/canvas \
$(WebCore)/Modules/applepay/ApplePayShippingMethodUpdate.idl \
$(WebCore)/Modules/applepay/ApplePayValidateMerchantEvent.idl \
$(WebCore)/Modules/beacon/NavigatorBeacon.idl \
+ $(WebCore)/Modules/cache/DOMWindowCaches.idl \
+ $(WebCore)/Modules/cache/Cache.idl \
+ $(WebCore)/Modules/cache/CacheQueryOptions.idl \
+ $(WebCore)/Modules/cache/CacheStorage.idl \
+ $(WebCore)/Modules/cache/WorkerGlobalScopeCaches.idl \
$(WebCore)/Modules/credentials/BasicCredential.idl \
$(WebCore)/Modules/credentials/CredentialCreationOptions.idl \
$(WebCore)/Modules/credentials/CredentialData.idl \
--- /dev/null
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "Cache.h"
+
+namespace WebCore {
+
+void Cache::match(RequestInfo&&, std::optional<CacheQueryOptions>&&, Ref<DeferredPromise>&& promise)
+{
+ promise->reject(Exception { TypeError, ASCIILiteral("Not implemented")});
+}
+
+void Cache::matchAll(std::optional<RequestInfo>&&, std::optional<CacheQueryOptions>&&, MatchAllPromise&& promise)
+{
+ promise.reject(Exception { TypeError, ASCIILiteral("Not implemented")});
+}
+
+void Cache::add(RequestInfo&&, DOMPromiseDeferred<void>&& promise)
+{
+ promise.reject(Exception { TypeError, ASCIILiteral("Not implemented")});
+}
+
+void Cache::addAll(Vector<RequestInfo>&&, DOMPromiseDeferred<void>&& promise)
+{
+ promise.reject(Exception { TypeError, ASCIILiteral("Not implemented")});
+}
+
+void Cache::put(RequestInfo&&, Ref<FetchResponse>&&, DOMPromiseDeferred<void>&& promise)
+{
+ promise.reject(Exception { TypeError, ASCIILiteral("Not implemented")});
+}
+
+void Cache::remove(RequestInfo&&, std::optional<CacheQueryOptions>&&, DOMPromiseDeferred<IDLBoolean>&& promise)
+{
+ promise.reject(Exception { TypeError, ASCIILiteral("Not implemented")});
+}
+
+void Cache::keys(std::optional<RequestInfo>&&, std::optional<CacheQueryOptions>&&, KeysPromise&& promise)
+{
+ promise.reject(Exception { TypeError, ASCIILiteral("Not implemented")});
+}
+
+
+} // namespace WebCore
--- /dev/null
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "FetchRequest.h"
+
+namespace WebCore {
+
+class FetchResponse;
+
+struct CacheQueryOptions;
+
+class Cache : public RefCounted<Cache> {
+public:
+ static Ref<Cache> create(String&& name) { return adoptRef(*new Cache(WTFMove(name))); }
+
+ using RequestInfo = FetchRequest::Info;
+
+ using MatchAllPromise = DOMPromiseDeferred<IDLSequence<IDLInterface<FetchResponse>>>;
+ using KeysPromise = DOMPromiseDeferred<IDLSequence<IDLInterface<FetchRequest>>>;
+
+ void match(RequestInfo&&, std::optional<CacheQueryOptions>&&, Ref<DeferredPromise>&&);
+ void matchAll(std::optional<RequestInfo>&&, std::optional<CacheQueryOptions>&&, MatchAllPromise&&);
+ void add(RequestInfo&&, DOMPromiseDeferred<void>&&);
+
+ void addAll(Vector<RequestInfo>&&, DOMPromiseDeferred<void>&&);
+ void put(RequestInfo&&, Ref<FetchResponse>&&, DOMPromiseDeferred<void>&&);
+ void remove(RequestInfo&&, std::optional<CacheQueryOptions>&&, DOMPromiseDeferred<IDLBoolean>&&);
+ void keys(std::optional<RequestInfo>&&, std::optional<CacheQueryOptions>&&, KeysPromise&&);
+
+private:
+ explicit Cache(String&& name) : m_name(WTFMove(name)) { }
+
+ String m_name;
+};
+
+} // namespace WebCore
--- /dev/null
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+typedef (FetchRequest or USVString) RequestInfo;
+
+[
+ SecureContext,
+ Exposed=(Window,Worker),
+ EnabledAtRuntime=CacheAPI,
+ ImplementationLacksVTable,
+] interface Cache {
+ [NewObject] Promise<any> match(RequestInfo request, optional CacheQueryOptions options);
+ [NewObject] Promise<sequence<FetchResponse>> matchAll(optional RequestInfo request, optional CacheQueryOptions options);
+ [NewObject] Promise<void> add(RequestInfo request);
+ [NewObject] Promise<void> addAll(sequence<RequestInfo> requests);
+ [NewObject] Promise<void> put(RequestInfo request, FetchResponse response);
+ [NewObject, ImplementedAs=remove] Promise<boolean> delete(RequestInfo request, optional CacheQueryOptions options);
+ [NewObject] Promise<sequence<Request>> keys(optional RequestInfo request, optional CacheQueryOptions options);
+};
--- /dev/null
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+struct CacheQueryOptions {
+ bool ignoreSearch { false };
+ bool ignoreMethod { false };
+ bool ignoreVary { false };
+ String cacheName;
+};
+
+} // namespace WebCore
--- /dev/null
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+dictionary CacheQueryOptions {
+ boolean ignoreSearch = false;
+ boolean ignoreMethod = false;
+ boolean ignoreVary = false;
+ DOMString cacheName;
+};
--- /dev/null
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "CacheStorage.h"
+
+namespace WebCore {
+
+void CacheStorage::match(RequestInfo&&, std::optional<CacheQueryOptions>&&, Ref<DeferredPromise>&& promise)
+{
+ promise->reject(Exception { TypeError, ASCIILiteral("Not implemented")});
+}
+
+void CacheStorage::has(const String&, DOMPromiseDeferred<IDLBoolean>&& promise)
+{
+ promise.reject(Exception { TypeError, ASCIILiteral("Not implemented")});
+}
+
+void CacheStorage::open(const String&, DOMPromiseDeferred<IDLInterface<Cache>>&& promise)
+{
+ promise.reject(Exception { TypeError, ASCIILiteral("Not implemented")});
+}
+
+void CacheStorage::remove(const String&, DOMPromiseDeferred<IDLBoolean>&& promise)
+{
+ promise.reject(Exception { TypeError, ASCIILiteral("Not implemented")});
+}
+
+void CacheStorage::keys(KeysPromise&& promise)
+{
+ promise.reject(Exception { TypeError, ASCIILiteral("Not implemented")});
+}
+
+} // namespace WebCore
--- /dev/null
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "FetchRequest.h"
+
+namespace WebCore {
+
+class Cache;
+
+struct CacheQueryOptions;
+
+class CacheStorage : public RefCounted<CacheStorage> {
+public:
+ static Ref<CacheStorage> create() { return adoptRef(*new CacheStorage()); }
+
+ using RequestInfo = FetchRequest::Info;
+ using KeysPromise = DOMPromiseDeferred<IDLSequence<IDLDOMString>>;
+
+ void match(RequestInfo&&, std::optional<CacheQueryOptions>&&, Ref<DeferredPromise>&&);
+ void has(const String&, DOMPromiseDeferred<IDLBoolean>&&);
+ void open(const String&, DOMPromiseDeferred<IDLInterface<Cache>>&&);
+ void remove(const String&, DOMPromiseDeferred<IDLBoolean>&&);
+ void keys(KeysPromise&&);
+
+private:
+ CacheStorage() = default;
+};
+
+} // namespace WebCore
--- /dev/null
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+typedef (FetchRequest or USVString) RequestInfo;
+
+[
+ SecureContext,
+ Exposed=(Window,Worker),
+ EnabledAtRuntime=CacheAPI,
+ ImplementationLacksVTable,
+] interface CacheStorage {
+ [NewObject] Promise<any> match(RequestInfo request, optional CacheQueryOptions options);
+ [NewObject] Promise<boolean> has(DOMString cacheName);
+ [NewObject] Promise<Cache> open(DOMString cacheName);
+ [NewObject, ImplementedAs=remove] Promise<boolean> delete(DOMString cacheName);
+ [NewObject] Promise<sequence<DOMString>> keys();
+};
--- /dev/null
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "DOMWindowCaches.h"
+
+#include "CacheStorage.h"
+#include "DOMWindow.h"
+
+namespace WebCore {
+
+DOMWindowCaches::DOMWindowCaches(DOMWindow* window)
+ : DOMWindowProperty(window->frame())
+{
+}
+
+const char* DOMWindowCaches::supplementName()
+{
+ return "DOMWindowCaches";
+}
+
+DOMWindowCaches* DOMWindowCaches::from(DOMWindow* window)
+{
+ auto* supplement = static_cast<DOMWindowCaches*>(Supplement<DOMWindow>::from(window, supplementName()));
+ if (!supplement) {
+ auto newSupplement = std::make_unique<DOMWindowCaches>(window);
+ supplement = newSupplement.get();
+ provideTo(window, supplementName(), WTFMove(newSupplement));
+ }
+ return supplement;
+}
+
+CacheStorage* DOMWindowCaches::caches(DOMWindow& window)
+{
+ return DOMWindowCaches::from(&window)->caches();
+}
+
+CacheStorage* DOMWindowCaches::caches() const
+{
+ if (!m_caches && frame())
+ m_caches = CacheStorage::create();
+ return m_caches.get();
+}
+
+} // namespace WebCore
--- /dev/null
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "DOMWindowProperty.h"
+#include "Supplementable.h"
+
+namespace WebCore {
+
+class DOMWindow;
+class CacheStorage;
+
+class DOMWindowCaches : public Supplement<DOMWindow>, public DOMWindowProperty {
+public:
+ explicit DOMWindowCaches(DOMWindow*);
+
+ static DOMWindowCaches* from(DOMWindow*);
+ static CacheStorage* caches(DOMWindow&);
+
+private:
+ static const char* supplementName();
+ CacheStorage* caches() const;
+
+ mutable RefPtr<CacheStorage> m_caches;
+};
+
+} // namespace WebCore
--- /dev/null
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+ EnabledAtRuntime=CacheAPI,
+] partial interface DOMWindow {
+ [SecureContext, SameObject] readonly attribute CacheStorage caches;
+};
--- /dev/null
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "WorkerGlobalScopeCaches.h"
+
+#include "CacheStorage.h"
+#include "WorkerGlobalScope.h"
+
+namespace WebCore {
+
+const char* WorkerGlobalScopeCaches::supplementName()
+{
+ return "WorkerGlobalScopeCaches";
+}
+
+WorkerGlobalScopeCaches* WorkerGlobalScopeCaches::from(WorkerGlobalScope& scope)
+{
+ auto* supplement = static_cast<WorkerGlobalScopeCaches*>(Supplement<WorkerGlobalScope>::from(&scope, supplementName()));
+ if (!supplement) {
+ auto newSupplement = std::make_unique<WorkerGlobalScopeCaches>();
+ supplement = newSupplement.get();
+ provideTo(&scope, supplementName(), WTFMove(newSupplement));
+ }
+ return supplement;
+}
+
+CacheStorage* WorkerGlobalScopeCaches::caches(WorkerGlobalScope& scope)
+{
+ return WorkerGlobalScopeCaches::from(scope)->caches();
+}
+
+CacheStorage* WorkerGlobalScopeCaches::caches() const
+{
+ if (!m_caches)
+ m_caches = CacheStorage::create();
+ return m_caches.get();
+}
+
+} // namespace WebCore
--- /dev/null
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "Supplementable.h"
+
+namespace WebCore {
+
+class CacheStorage;
+class WorkerGlobalScope;
+
+class WorkerGlobalScopeCaches : public Supplement<WorkerGlobalScope> {
+public:
+ WorkerGlobalScopeCaches() = default;
+
+ static CacheStorage* caches(WorkerGlobalScope&);
+
+private:
+ static WorkerGlobalScopeCaches* from(WorkerGlobalScope&);
+ static const char* supplementName();
+ CacheStorage* caches() const;
+
+ mutable RefPtr<CacheStorage> m_caches;
+};
+
+} // namespace WebCore
+
--- /dev/null
+/*
+* Copyright (C) 2017 Apple Inc. All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+* 1. Redistributions of source code must retain the above copyright
+* notice, this list of conditions and the following disclaimer.
+* 2. Redistributions in binary form must reproduce the above copyright
+* notice, this list of conditions and the following disclaimer in the
+* documentation and/or other materials provided with the distribution.
+*
+* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+* THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+[
+ EnabledAtRuntime=CacheAPI,
+] partial interface WorkerGlobalScope {
+ [SecureContext, SameObject] readonly attribute CacheStorage caches;
+};
4129DF861BB5B80C00322A16 /* JSReadableStreamPrivateConstructors.h in Headers */ = {isa = PBXBuildFile; fileRef = 4129DF841BB5B7F700322A16 /* JSReadableStreamPrivateConstructors.h */; settings = {ATTRIBUTES = (Private, ); }; };
413015D91C7B571400091C6E /* FetchResponse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 413015D51C7B570400091C6E /* FetchResponse.cpp */; };
413015D91C7B571400091C6F /* FetchResponseSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 413015D51C7B570400091C6F /* FetchResponseSource.cpp */; };
+ 41380C261F3436A600155FDA /* Cache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41380C201F34368A00155FDA /* Cache.cpp */; };
+ 41380C271F3436AC00155FDA /* Cache.h in Headers */ = {isa = PBXBuildFile; fileRef = 41380C251F34369A00155FDA /* Cache.h */; };
+ 41380C281F3436AC00155FDA /* CacheStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41380C211F34368D00155FDA /* CacheStorage.cpp */; };
+ 41380C291F3436AC00155FDA /* CacheStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 41380C221F34369000155FDA /* CacheStorage.h */; };
4138D3351244054800323D33 /* EventContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 4138D3331244054800323D33 /* EventContext.h */; };
4138D3361244054800323D33 /* EventContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4138D3341244054800323D33 /* EventContext.cpp */; };
4138F8571D253F08001CB61E /* JSDOMIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4138F8551D253EEE001CB61E /* JSDOMIterator.cpp */; };
41F54F8E1C50C50C00338488 /* FetchRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41F54F871C50C4F600338488 /* FetchRequest.cpp */; };
41FA303E1316C29C00C0BFC5 /* RenderMediaControls.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41FA303C1316C29C00C0BFC5 /* RenderMediaControls.cpp */; };
41FA303F1316C29C00C0BFC5 /* RenderMediaControls.h in Headers */ = {isa = PBXBuildFile; fileRef = 41FA303D1316C29C00C0BFC5 /* RenderMediaControls.h */; };
+ 41FB279C1F34DB8A00795487 /* DOMWindowCaches.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41FB278E1F34C28200795487 /* DOMWindowCaches.cpp */; };
+ 41FB279D1F34DB8E00795487 /* WorkerGlobalScopeCaches.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41FB278F1F34C28200795487 /* WorkerGlobalScopeCaches.cpp */; };
43107BE218CC19DE00CC18E8 /* SelectorPseudoTypeMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 43107BE118CC19DE00CC18E8 /* SelectorPseudoTypeMap.h */; };
43142E7A13B1E97700F1C871 /* SVGAnimatedRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43142E7913B1E97700F1C871 /* SVGAnimatedRect.cpp */; };
431A2F9C13B6F2B0007791E4 /* SVGAnimatedNumberOptionalNumber.h in Headers */ = {isa = PBXBuildFile; fileRef = 431A2F9A13B6F2B0007791E4 /* SVGAnimatedNumberOptionalNumber.h */; };
7CE191701F2ABE7100272F78 /* JSFetchReferrerPolicy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CE191671F2AB70100272F78 /* JSFetchReferrerPolicy.cpp */; };
7CE191711F2ABE7100272F78 /* JSFetchReferrerPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CE191681F2AB70300272F78 /* JSFetchReferrerPolicy.h */; };
7CE191721F2ABE7100272F78 /* JSFetchRequestCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CE1916E1F2AB70D00272F78 /* JSFetchRequestCache.cpp */; };
+ 7CE191721F2ABE7100272F79 /* JSCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CE1916E1F2AB70D00272F79 /* JSCache.cpp */; };
+ 7CE191721F2ABE7100272F7A /* JSCacheStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CE1916E1F2AB70D00272F7A /* JSCacheStorage.cpp */; };
+ 7CE191721F2ABE7100272F7B /* JSCacheQueryOptions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CE1916E1F2AB70D00272F7B /* JSCacheQueryOptions.cpp */; };
7CE191731F2ABE7100272F78 /* JSFetchRequestCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CE191641F2AB6FB00272F78 /* JSFetchRequestCache.h */; };
+ 7CE191731F2ABE7100272F79 /* JSCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CE191641F2AB6FB00272F79 /* JSCache.h */; };
+ 7CE191731F2ABE7100272F7A /* JSCacheStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CE191641F2AB6FB00272F7A /* JSCacheStorage.h */; };
7CE191741F2ABE7100272F78 /* JSFetchRequestCredentials.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CE1916B1F2AB70800272F78 /* JSFetchRequestCredentials.cpp */; };
7CE191751F2ABE7100272F78 /* JSFetchRequestCredentials.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CE191661F2AB6FF00272F78 /* JSFetchRequestCredentials.h */; };
7CE191761F2ABE7100272F78 /* JSFetchRequestInit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CE1916D1F2AB70C00272F78 /* JSFetchRequestInit.cpp */; };
413015D61C7B570400091C6F /* FetchResponseSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FetchResponseSource.h; sourceTree = "<group>"; };
413015D71C7B570400091C6E /* FetchResponse.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = FetchResponse.idl; sourceTree = "<group>"; };
413015D81C7B570400091C6E /* FetchResponse.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = FetchResponse.js; sourceTree = "<group>"; };
+ 41380C201F34368A00155FDA /* Cache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Cache.cpp; path = Modules/cache/Cache.cpp; sourceTree = SOURCE_ROOT; };
+ 41380C211F34368D00155FDA /* CacheStorage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = CacheStorage.cpp; path = Modules/cache/CacheStorage.cpp; sourceTree = SOURCE_ROOT; };
+ 41380C221F34369000155FDA /* CacheStorage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CacheStorage.h; path = Modules/cache/CacheStorage.h; sourceTree = SOURCE_ROOT; };
+ 41380C231F34369400155FDA /* Cache.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = Cache.idl; path = Modules/cache/Cache.idl; sourceTree = SOURCE_ROOT; };
+ 41380C241F34369700155FDA /* CacheStorage.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = CacheStorage.idl; path = Modules/cache/CacheStorage.idl; sourceTree = SOURCE_ROOT; };
+ 41380C251F34369A00155FDA /* Cache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Cache.h; path = Modules/cache/Cache.h; sourceTree = SOURCE_ROOT; };
+ 41380C2A1F343E2F00155FDA /* WorkerGlobalScopeCaches.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = WorkerGlobalScopeCaches.idl; path = Modules/cache/WorkerGlobalScopeCaches.idl; sourceTree = SOURCE_ROOT; };
+ 41380C2B1F343E2F00155FDA /* DOMWindowCaches.idl */ = {isa = PBXFileReference; lastKnownFileType = text; name = DOMWindowCaches.idl; path = Modules/cache/DOMWindowCaches.idl; sourceTree = SOURCE_ROOT; };
4138D3331244054800323D33 /* EventContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventContext.h; sourceTree = "<group>"; };
4138D3341244054800323D33 /* EventContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventContext.cpp; sourceTree = "<group>"; };
4138F8551D253EEE001CB61E /* JSDOMIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMIterator.cpp; sourceTree = "<group>"; };
41F54F891C50C4F600338488 /* FetchRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = FetchRequest.idl; sourceTree = "<group>"; };
41FA303C1316C29C00C0BFC5 /* RenderMediaControls.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderMediaControls.cpp; sourceTree = "<group>"; };
41FA303D1316C29C00C0BFC5 /* RenderMediaControls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderMediaControls.h; sourceTree = "<group>"; };
+ 41FB278C1F34C28200795487 /* DOMWindowCaches.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DOMWindowCaches.h; sourceTree = "<group>"; };
+ 41FB278D1F34C28200795487 /* WorkerGlobalScopeCaches.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WorkerGlobalScopeCaches.h; sourceTree = "<group>"; };
+ 41FB278E1F34C28200795487 /* DOMWindowCaches.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DOMWindowCaches.cpp; sourceTree = "<group>"; };
+ 41FB278F1F34C28200795487 /* WorkerGlobalScopeCaches.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerGlobalScopeCaches.cpp; sourceTree = "<group>"; };
+ 41FB27991F34CE9C00795487 /* CacheQueryOptions.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = CacheQueryOptions.idl; sourceTree = "<group>"; };
+ 41FB279B1F34CEF000795487 /* CacheQueryOptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CacheQueryOptions.h; sourceTree = "<group>"; };
43107BE118CC19DE00CC18E8 /* SelectorPseudoTypeMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SelectorPseudoTypeMap.h; sourceTree = "<group>"; };
43142E7913B1E97700F1C871 /* SVGAnimatedRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGAnimatedRect.cpp; sourceTree = "<group>"; };
431A2F9A13B6F2B0007791E4 /* SVGAnimatedNumberOptionalNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGAnimatedNumberOptionalNumber.h; sourceTree = "<group>"; };
7CE1915D1F2A9B4F00272F78 /* FetchRequestRedirect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FetchRequestRedirect.h; sourceTree = "<group>"; };
7CE1915F1F2A9B4F00272F78 /* FetchRequestRedirect.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = FetchRequestRedirect.idl; sourceTree = "<group>"; };
7CE191641F2AB6FB00272F78 /* JSFetchRequestCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSFetchRequestCache.h; sourceTree = "<group>"; };
+ 7CE191641F2AB6FB00272F79 /* JSCache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSCache.h; sourceTree = "<group>"; };
+ 7CE191641F2AB6FB00272F7A /* JSCacheStorage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSCacheStorage.h; sourceTree = "<group>"; };
7CE191651F2AB6FD00272F78 /* JSFetchRequestMode.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSFetchRequestMode.cpp; sourceTree = "<group>"; };
7CE191661F2AB6FF00272F78 /* JSFetchRequestCredentials.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSFetchRequestCredentials.h; sourceTree = "<group>"; };
7CE191671F2AB70100272F78 /* JSFetchReferrerPolicy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSFetchReferrerPolicy.cpp; sourceTree = "<group>"; };
7CE1916C1F2AB70A00272F78 /* JSFetchRequestMode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSFetchRequestMode.h; sourceTree = "<group>"; };
7CE1916D1F2AB70C00272F78 /* JSFetchRequestInit.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSFetchRequestInit.cpp; sourceTree = "<group>"; };
7CE1916E1F2AB70D00272F78 /* JSFetchRequestCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSFetchRequestCache.cpp; sourceTree = "<group>"; };
+ 7CE1916E1F2AB70D00272F79 /* JSCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSCache.cpp; sourceTree = "<group>"; };
+ 7CE1916E1F2AB70D00272F7A /* JSCacheStorage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSCacheStorage.cpp; sourceTree = "<group>"; };
+ 7CE1916E1F2AB70D00272F7B /* JSCacheQueryOptions.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSCacheQueryOptions.cpp; sourceTree = "<group>"; };
7CE1916F1F2AB70F00272F78 /* JSFetchRequestRedirect.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = JSFetchRequestRedirect.cpp; sourceTree = "<group>"; };
7CE58D491DD64A5B00128552 /* SVGPoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGPoint.h; sourceTree = "<group>"; };
7CE58D4D1DD694FE00128552 /* SVGRectTraits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGRectTraits.h; sourceTree = "<group>"; };
children = (
1221E0581C02B409006A1A00 /* Animation */,
1AE96A791D1A0A5C00B86768 /* ApplePay */,
+ 41FB27881F34461B00795488 /* CacheAPI */,
A83B79100CCB001B000B0825 /* Core */,
57C7A68D1E569A8400C67D71 /* Credentials */,
E1FF8F61180745C600132674 /* Crypto */,
path = opentype;
sourceTree = "<group>";
};
+ 41380C1E1F34366000155FDA /* cache */ = {
+ isa = PBXGroup;
+ children = (
+ 41380C201F34368A00155FDA /* Cache.cpp */,
+ 41380C251F34369A00155FDA /* Cache.h */,
+ 41380C231F34369400155FDA /* Cache.idl */,
+ 41FB279B1F34CEF000795487 /* CacheQueryOptions.h */,
+ 41FB27991F34CE9C00795487 /* CacheQueryOptions.idl */,
+ 41380C211F34368D00155FDA /* CacheStorage.cpp */,
+ 41380C221F34369000155FDA /* CacheStorage.h */,
+ 41380C241F34369700155FDA /* CacheStorage.idl */,
+ 41FB278E1F34C28200795487 /* DOMWindowCaches.cpp */,
+ 41FB278C1F34C28200795487 /* DOMWindowCaches.h */,
+ 41380C2B1F343E2F00155FDA /* DOMWindowCaches.idl */,
+ 41FB278F1F34C28200795487 /* WorkerGlobalScopeCaches.cpp */,
+ 41FB278D1F34C28200795487 /* WorkerGlobalScopeCaches.h */,
+ 41380C2A1F343E2F00155FDA /* WorkerGlobalScopeCaches.idl */,
+ );
+ path = cache;
+ sourceTree = "<group>";
+ };
4150F9ED12B6E0990008C860 /* shadow */ = {
isa = PBXGroup;
children = (
path = fetch;
sourceTree = "<group>";
};
+ 41FB27881F34461B00795488 /* CacheAPI */ = {
+ isa = PBXGroup;
+ children = (
+ 7CE1916E1F2AB70D00272F79 /* JSCache.cpp */,
+ 7CE1916E1F2AB70D00272F7A /* JSCacheStorage.cpp */,
+ 7CE1916E1F2AB70D00272F7B /* JSCacheQueryOptions.cpp */,
+ 7CE191641F2AB6FB00272F79 /* JSCache.h */,
+ 7CE191641F2AB6FB00272F7A /* JSCacheStorage.h */,
+ );
+ name = CacheAPI;
+ sourceTree = "<group>";
+ };
42A023FA1A39F13A00F722CF /* FetchAPI */ = {
isa = PBXGroup;
children = (
CE26169D187E6554007955F3 /* airplay */,
1A58E8611D19D37300C0EA73 /* applepay */,
832150791F27E96B0095B136 /* beacon */,
+ 41380C1E1F34366000155FDA /* cache */,
57C7A6881E56946D00C67D71 /* credentials */,
CDA98DBD16014E0800FEA3B1 /* encryptedmedia */,
41F54F7C1C50C4F600338488 /* fetch */,
E1BD331A182D8DDD00C05D9F /* CryptoAlgorithmRSASSA_PKCS1_v1_5.h in Headers */,
E1BD331C182D8EE900C05D9F /* CryptoAlgorithmRsaSsaParamsDeprecated.h in Headers */,
E125F82C1822CFEC00D84CD9 /* CryptoAlgorithmSHA1.h in Headers */,
+ 41380C291F3436AC00155FDA /* CacheStorage.h in Headers */,
E19AC3EF1824DC7900349426 /* CryptoAlgorithmSHA224.h in Headers */,
E19AC3F11824DC7900349426 /* CryptoAlgorithmSHA256.h in Headers */,
E19AC3F31824DC7900349426 /* CryptoAlgorithmSHA384.h in Headers */,
0F580B0D0F12A2690051D689 /* GraphicsLayer.h in Headers */,
499B3ED7128CD31400E726C2 /* GraphicsLayerCA.h in Headers */,
0F580B0E0F12A2690051D689 /* GraphicsLayerClient.h in Headers */,
+ 41380C271F3436AC00155FDA /* Cache.h in Headers */,
1AC69593161A1E53003732CB /* GraphicsLayerFactory.h in Headers */,
0FA24D7A162DF91900A3F4C0 /* GraphicsLayerUpdater.h in Headers */,
CEC337AF1A46086D009B8523 /* GraphicsServicesSPI.h in Headers */,
7CE191711F2ABE7100272F78 /* JSFetchReferrerPolicy.h in Headers */,
7E4C96DD1AD4483500365A50 /* JSFetchRequest.h in Headers */,
7CE191731F2ABE7100272F78 /* JSFetchRequestCache.h in Headers */,
+ 7CE191731F2ABE7100272F79 /* JSCache.h in Headers */,
+ 7CE191731F2ABE7100272F7A /* JSCacheStorage.h in Headers */,
7CE191751F2ABE7100272F78 /* JSFetchRequestCredentials.h in Headers */,
7CE191771F2ABE7100272F78 /* JSFetchRequestInit.h in Headers */,
7CE191791F2ABE7100272F78 /* JSFetchRequestMode.h in Headers */,
7CE191781F2ABE7100272F78 /* JSFetchRequestMode.cpp in Sources */,
7CE1917A1F2ABE7100272F78 /* JSFetchRequestRedirect.cpp in Sources */,
8E4C96DC1AD4483500365A50 /* JSFetchResponse.cpp in Sources */,
+ 7CE191721F2ABE7100272F79 /* JSCache.cpp in Sources */,
+ 7CE191721F2ABE7100272F7A /* JSCacheStorage.cpp in Sources */,
+ 7CE191721F2ABE7100272F7B /* JSCacheQueryOptions.cpp in Sources */,
BC00F0140E0A189500FD04E3 /* JSFile.cpp in Sources */,
2E3BC0CA117D3E0800B9409A /* JSFileError.cpp in Sources */,
BC00F0160E0A189500FD04E3 /* JSFileList.cpp in Sources */,
B2FA3DE50AB75A6F000E5AC4 /* JSSVGPolygonElement.cpp in Sources */,
B2FA3DE70AB75A6F000E5AC4 /* JSSVGPolylineElement.cpp in Sources */,
B2FA3DE90AB75A6F000E5AC4 /* JSSVGPreserveAspectRatio.cpp in Sources */,
+ 41FB279C1F34DB8A00795487 /* DOMWindowCaches.cpp in Sources */,
B2FA3DEB0AB75A6F000E5AC4 /* JSSVGRadialGradientElement.cpp in Sources */,
8542A7940AE5C94000DF58DF /* JSSVGRect.cpp in Sources */,
B2FA3DED0AB75A6F000E5AC4 /* JSSVGRectElement.cpp in Sources */,
07846342145B151A00A58DF1 /* JSTrackEvent.cpp in Sources */,
E17B492216A9B8FF001C8839 /* JSTransitionEvent.cpp in Sources */,
1A750D5C0A90DEE1000FF215 /* JSTreeWalker.cpp in Sources */,
+ 41380C261F3436A600155FDA /* Cache.cpp in Sources */,
516BB7940CE91E6800512F79 /* JSTreeWalkerCustom.cpp in Sources */,
A86629D009DA2B48009633A5 /* JSUIEvent.cpp in Sources */,
465307D11DB6EE4A00E4137C /* JSUIEventInit.cpp in Sources */,
93F19AB908245E59001E9ABC /* Range.cpp in Sources */,
F55B3DCD1251F12D003EF269 /* RangeInputType.cpp in Sources */,
5182C25B1F3143CD0059BA7C /* JSServiceWorkerRegistration.cpp in Sources */,
+ 41FB279D1F34DB8E00795487 /* WorkerGlobalScopeCaches.cpp in Sources */,
6E84E9E017668BEE00815B68 /* RasterShape.cpp in Sources */,
418C39611C8F0AB10051C8A3 /* ReadableStreamDefaultController.cpp in Sources */,
FD31603B12B0267600C1A359 /* RealtimeAnalyser.cpp in Sources */,
0F3F0E59157030C3006DA57F /* RenderGeometryMap.cpp in Sources */,
BC128B01137C8D4600CAC845 /* RenderGrid.cpp in Sources */,
BCEA4869097D93020094C9E4 /* RenderHTMLCanvas.cpp in Sources */,
+ 41380C281F3436AC00155FDA /* CacheStorage.cpp in Sources */,
0FD308D5117D168500A791F7 /* RenderIFrame.cpp in Sources */,
BCEA4875097D93020094C9E4 /* RenderImage.cpp in Sources */,
08F2F0091213E61700DCEC48 /* RenderImageResource.cpp in Sources */,
bool webGPUEnabled() const { return m_isWebGPUEnabled; }
#endif
+ void setCacheAPIEnabled(bool isEnabled) { m_isCacheAPIEnabled = isEnabled; }
+ bool cacheAPIEnabled() const { return m_isCacheAPIEnabled; }
+
void setFetchAPIEnabled(bool isEnabled) { m_isFetchAPIEnabled = isEnabled; }
bool fetchAPIEnabled() const { return m_isFetchAPIEnabled; }
bool m_isWebGPUEnabled { false };
#endif
+ bool m_isCacheAPIEnabled { false };
bool m_isFetchAPIEnabled { true };
#if ENABLE(DOWNLOAD_ATTRIBUTE)
+2017-08-04 Youenn Fablet <youenn@apple.com>
+
+ [Cache API] Add Cache and CacheStorage IDL definitions
+ https://bugs.webkit.org/show_bug.cgi?id=175201
+
+ Reviewed by Brady Eidson.
+
+ * Shared/WebPreferencesDefinitions.h:
+ * WebProcess/InjectedBundle/InjectedBundle.cpp:
+ (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::updatePreferences):
+
2017-08-04 Brian Burg <bburg@apple.com>
Expose WKPreferences SPI for toggling mock capture devices prompt
macro(WebRTCLegacyAPIDisabled, webRTCLegacyAPIDisabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "Remove Legacy WebRTC API", "Remove Legacy WebRTC API") \
macro(IsSecureContextAttributeEnabled, isSecureContextAttributeEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "Secure Contexts API", "Enable Secure Contexts API") \
macro(ServiceWorkersEnabled, serviceWorkersEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "ServiceWorkers", "Enable ServiceWorkers") \
+ macro(CacheAPIEnabled, cacheAPIEnabled, Bool, bool, false, "Cache API", "Enable Cache API") \
macro(SubresourceIntegrityEnabled, subresourceIntegrityEnabled, Bool, bool, DEFAULT_EXPERIMENTAL_FEATURES_ENABLED, "SubresourceIntegrity", "Enable SubresourceIntegrity") \
macro(ViewportFitEnabled, viewportFitEnabled, Bool, bool, true, "Viewport Fit", "Enable viewport-fit viewport parameter") \
macro(WebAnimationsEnabled, webAnimationsEnabled, Bool, bool, false, "Web Animations", "Web Animations prototype") \
RuntimeEnabledFeatures::sharedFeatures().setWebAnimationsEnabled(enabled);
#endif
+ if (preference == "WebKitCacheAPIEnabled")
+ RuntimeEnabledFeatures::sharedFeatures().setCacheAPIEnabled(enabled);
+
#if ENABLE(STREAMS_API)
if (preference == "WebKitReadableByteStreamAPIEnabled")
RuntimeEnabledFeatures::sharedFeatures().setReadableByteStreamAPIEnabled(enabled);
settings.setServiceControlsEnabled(store.getBoolValueForKey(WebPreferencesKey::serviceControlsEnabledKey()));
#endif
+ RuntimeEnabledFeatures::sharedFeatures().setCacheAPIEnabled(store.getBoolValueForKey(WebPreferencesKey::cacheAPIEnabledKey()));
RuntimeEnabledFeatures::sharedFeatures().setFetchAPIEnabled(store.getBoolValueForKey(WebPreferencesKey::fetchAPIEnabledKey()));
#if ENABLE(DOWNLOAD_ATTRIBUTE)
+2017-08-04 Youenn Fablet <youenn@apple.com>
+
+ [Cache API] Add Cache and CacheStorage IDL definitions
+ https://bugs.webkit.org/show_bug.cgi?id=175201
+
+ Reviewed by Brady Eidson.
+
+ * WebView/WebPreferenceKeysPrivate.h:
+ * WebView/WebPreferences.mm:
+ (+[WebPreferences initialize]):
+ (-[WebPreferences cacheAPIEnabled]):
+ (-[WebPreferences setCacheAPIEnabled:]):
+ * WebView/WebPreferencesPrivate.h:
+ * WebView/WebView.mm:
+ (-[WebView _preferencesChanged:]):
+
2017-08-04 Matt Lewis <jlewis3@apple.com>
Unreviewed, rolling out r220271.
#define WebKitMediaKeysStorageDirectoryKey @"WebKitMediaKeysStorageDirectory"
#define WebKitShadowDOMEnabledPreferenceKey @"WebKitShadowDOMEnabled"
#define WebKitCustomElementsEnabledPreferenceKey @"WebKitCustomElementsEnabled"
+#define WebKitCacheAPIEnabledPreferenceKey @"WebKitCacheAPIEnabled"
#define WebKitFetchAPIEnabledPreferenceKey @"WebKitFetchAPIEnabled"
#define WebKitWritableStreamAPIEnabledPreferenceKey @"WebKitWritableStreamAPIEnabled"
#define WebKitReadableByteStreamAPIEnabledPreferenceKey @"WebKitReadableByteStreamAPIEnabled"
#if ENABLE(WEBGPU)
[NSNumber numberWithBool:NO], WebKitWebGPUEnabledPreferenceKey,
#endif
+ [NSNumber numberWithBool:NO], WebKitCacheAPIEnabledPreferenceKey,
[NSNumber numberWithBool:YES], WebKitFetchAPIEnabledPreferenceKey,
#if ENABLE(STREAMS_API)
[self _setBoolValue:flag forKey:WebKitCustomElementsEnabledPreferenceKey];
}
+- (BOOL)cacheAPIEnabled
+{
+ return [self _boolValueForKey:WebKitCacheAPIEnabledPreferenceKey];
+}
+
+- (void)setCacheAPIEnabled:(BOOL)flag
+{
+ [self _setBoolValue:flag forKey:WebKitCacheAPIEnabledPreferenceKey];
+}
+
- (BOOL)fetchAPIEnabled
{
return [self _boolValueForKey:WebKitFetchAPIEnabledPreferenceKey];
- (void)setCustomElementsEnabled:(BOOL)flag;
- (BOOL)customElementsEnabled;
+- (BOOL)cacheAPIEnabled;
+- (void)setCacheAPIEnabled:(BOOL)enabled;
+
- (void)setFetchAPIEnabled:(BOOL)flag;
- (BOOL)fetchAPIEnabled;
RuntimeEnabledFeatures::sharedFeatures().setCustomElementsEnabled([preferences customElementsEnabled]);
+ RuntimeEnabledFeatures::sharedFeatures().setCacheAPIEnabled([preferences cacheAPIEnabled]);
RuntimeEnabledFeatures::sharedFeatures().setFetchAPIEnabled([preferences fetchAPIEnabled]);
#if ENABLE(STREAMS_API)
+2017-08-04 Youenn Fablet <youenn@apple.com>
+
+ [Cache API] Add Cache and CacheStorage IDL definitions
+ https://bugs.webkit.org/show_bug.cgi?id=175201
+
+ Reviewed by Brady Eidson.
+
+ * DumpRenderTree/mac/DumpRenderTree.mm:
+ (enableExperimentalFeatures):
+ (resetWebPreferencesToConsistentValues):
+ * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
+ (WTR::InjectedBundle::beginTesting):
+ * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
+ (WTR::TestRunner::setCacheAPIEnabled):
+ * WebKitTestRunner/InjectedBundle/TestRunner.h:
+
2017-08-04 John Wilander <wilander@apple.com>
Resource Load Statistics: Report user interaction immediately, but only when needed
// FIXME: AsyncFrameScrollingEnabled
[preferences setWebRTCLegacyAPIEnabled:YES];
[preferences setCredentialManagementEnabled:YES];
+ [preferences setCacheAPIEnabled:NO];
[preferences setReadableByteStreamAPIEnabled:YES];
[preferences setWritableStreamAPIEnabled:YES];
}
[preferences setResourceTimingEnabled:YES];
[preferences setUserTimingEnabled:YES];
+ [preferences setCacheAPIEnabled:NO];
+
[WebPreferences _clearNetworkLoaderSession];
[WebPreferences _setCurrentNetworkLoaderSessionCookieAcceptPolicy:NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain];
}
m_testRunner->setWebGL2Enabled(true);
m_testRunner->setWebGPUEnabled(true);
+ m_testRunner->setCacheAPIEnabled(true);
+
m_testRunner->setWritableStreamAPIEnabled(true);
m_testRunner->setReadableByteStreamAPIEnabled(true);
WKBundleOverrideBoolPreferenceForTestRunner(injectedBundle.bundle(), injectedBundle.pageGroup(), key.get(), enabled);
}
+void TestRunner::setCacheAPIEnabled(bool enabled)
+{
+ WKRetainPtr<WKStringRef> key(AdoptWK, WKStringCreateWithUTF8CString("WebKitCacheAPIEnabled"));
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleOverrideBoolPreferenceForTestRunner(injectedBundle.bundle(), injectedBundle.pageGroup(), key.get(), enabled);
+}
+
void TestRunner::setWritableStreamAPIEnabled(bool enabled)
{
WKRetainPtr<WKStringRef> key(AdoptWK, WKStringCreateWithUTF8CString("WebKitWritableStreamAPIEnabled"));
void setModernMediaControlsEnabled(bool);
void setWebGL2Enabled(bool);
void setWebGPUEnabled(bool);
+ void setCacheAPIEnabled(bool);
void setWritableStreamAPIEnabled(bool);
void setReadableByteStreamAPIEnabled(bool);