Name Description Size
404.py 259
about-blank-replacement-blank-dynamic-nested-frame.html 424
about-blank-replacement-blank-nested-frame.html 551
about-blank-replacement-frame.py <!doctype html> <html> <body> <script> function nestedLoaded() { parent.postMessage({ type: 'NESTED_LOADED' }, '*'); } </script> <iframe src="?nested=true" id="nested" onload="nestedLoaded()"></iframe> <script> // Helper routine to make it slightly easier for our parent to find // the nested frame. function nested() { return document.getElementById('nested').contentWindow; } // NOTE: Make sure not to touch the iframe directly here. We want to // test the case where the initial about:blank document is not // directly accessed before load. </script> </body> </html> 836
about-blank-replacement-ping-frame.py <!doctype html> <html> <body> <script> function nestedLoaded() { parent.postMessage({ type: 'NESTED_LOADED' }, '*'); } </script> <iframe src="?nested=true&amp;ping=true" id="nested" onload="nestedLoaded()"></iframe> <script> // Helper routine to make it slightly easier for our parent to find // the nested frame. function nested() { return document.getElementById('nested').contentWindow; } // This modifies the nested iframe immediately and does not wait for it to // load. This effectively modifies the global for the initial about:blank // document. Any modifications made here should be preserved after the // frame loads because the global should be re-used. let win = nested(); if (win.location.href !== 'about:blank') { parent.postMessage({ type: 'NESTED_LOADED', result: 'failed: nested iframe does not have an initial about:blank URL' }, '*'); } else { win.navigator.serviceWorker.addEventListener('message', evt => { if (evt.data.type === 'PING') { evt.source.postMessage({ type: 'PONG', location: win.location.toString() }); } }); win.navigator.serviceWorker.startMessages(); } </script> </body> </html> 1425
about-blank-replacement-popup-frame.py <!doctype html> <html> <body> <script> function nestedLoaded() { parent.postMessage({ type: 'NESTED_LOADED' }, '*'); } let popup = window.open('?nested=true'); popup.onload = nestedLoaded; addEventListener('unload', evt => { popup.close(); }, { once: true }); // Helper routine to make it slightly easier for our parent to find // the nested popup window. function nested() { return popup; } </script> </body> </html> 675
about-blank-replacement-srcdoc-nested-frame.html 590
about-blank-replacement-uncontrolled-nested-frame.html 598
about-blank-replacement-worker.js 2923
basic-module-2.js 31
basic-module.js 25
blank.html Empty doc 41
bytecheck-worker-imported-script.py // %s 537
bytecheck-worker.py // %s import '%sbytecheck-worker-imported-script.py%s'; 1166
claim-blob-url-worker-fetch-iframe.html 600
claim-nested-worker-fetch-iframe.html 485
claim-nested-worker-fetch-parent-worker.js 268
claim-shared-worker-fetch-iframe.html 300
claim-shared-worker-fetch-worker.js 213
claim-with-redirect-iframe.html 1578
claim-worker-fetch-iframe.html 270
claim-worker-fetch-worker.js 135
claim-worker.js 623
classic-worker.js 47
client-id-worker.js 770
client-navigate-frame.html 267
client-navigate-worker.js 3922
client-navigated-frame.html 84
client-url-of-blob-url-worker.html 795
client-url-of-blob-url-worker.js 348
clients-frame-freeze.html 370
clients-get-client-types-frame-worker.js 268
clients-get-client-types-frame.html 406
clients-get-client-types-shared-worker.js 227
clients-get-client-types-worker.js 268
clients-get-cross-origin-frame.html 1578
clients-get-frame.html 217
clients-get-other-origin.html 1890
clients-get-resultingClientId-worker.js 1841
clients-get-worker.js 1480
clients-matchall-blob-url-worker.html 443
clients-matchall-client-types-dedicated-worker.js 52
clients-matchall-client-types-iframe.html Empty doc 244
clients-matchall-client-types-shared-worker.js 85
clients-matchall-on-evaluation-worker.js 338
clients-matchall-worker.js 1560
controlled-frame-postMessage.html 835
controlled-worker-late-postMessage.js 173
controlled-worker-postMessage.js 141
cors-approved.txt 10
cors-approved.txt.headers 57
cors-denied.txt 112
create-blob-url-worker.js 657
create-out-of-scope-worker.html 532
echo-content.py 652
echo-cookie-worker.py // %d self.addEventListener('message', e => { e.source.postMessage({%s}) }); 700
echo-message-to-source-worker.js 77
embed-and-object-are-not-intercepted-worker.js 552
embed-image-is-not-intercepted-iframe.html iframe for embed-and-object-are-not-intercepted test 679
embed-is-not-intercepted-iframe.html iframe for embed-and-object-are-not-intercepted test 503
embed-navigation-is-not-intercepted-iframe.html iframe for embed-and-object-are-not-intercepted test 709
embedded-content-from-server.html embed for embed-and-object-are-not-intercepted test 206
embedded-content-from-service-worker.html embed for embed-and-object-are-not-intercepted test 221
empty-but-slow-worker.js 266
empty-worker.js 15
empty.h2.js 0
empty.html 58
empty.js 0
enable-client-message-queue.html 1430
end-to-end-worker.js 202
events-worker.js 281
extendable-event-async-waituntil.js 7811
extendable-event-waituntil.js 2600
fail-on-fetch-worker.js 142
fetch-access-control-login.html 494
fetch-access-control.py 5128
fetch-canvas-tainting-double-write-worker.js 229
fetch-canvas-tainting-iframe.html iframe for fetch canvas tainting test 2144
fetch-canvas-tainting-tests.js 9374
fetch-cors-exposed-header-names-worker.js 83
fetch-cors-xhr-iframe.html 5461
fetch-csp-iframe.html 484
fetch-csp-iframe.html.sub.headers 106
fetch-error-worker.js 672
fetch-event-add-async-worker.js 234
fetch-event-after-navigation-within-page-iframe.html 730
fetch-event-async-respond-with-worker.js 2008
fetch-event-handled-worker.js 1103
fetch-event-network-error-controllee-iframe.html 1760
fetch-event-network-error-worker.js 1408
fetch-event-network-fallback-worker.js 60
fetch-event-respond-with-argument-iframe.html 1497
fetch-event-respond-with-argument-worker.js 419
fetch-event-respond-with-body-loaded-in-chunk-worker.js 219
fetch-event-respond-with-custom-response-worker.js 1043
fetch-event-respond-with-partial-stream-worker.js 620
fetch-event-respond-with-readable-stream-chunk-worker.js 1131
fetch-event-respond-with-readable-stream-worker.js 1939
fetch-event-respond-with-response-body-with-invalid-chunk-iframe.html respond-with-response-body-with-invalid-chunk 445
fetch-event-respond-with-response-body-with-invalid-chunk-worker.js 444
fetch-event-respond-with-stops-propagation-worker.js 354
fetch-event-test-worker.js 6625
fetch-event-within-sw-worker.js 1287
fetch-header-visibility-iframe.html 2137
fetch-mixed-content-iframe-inscope-to-inscope.html 1732
fetch-mixed-content-iframe-inscope-to-outscope.html 1748
fetch-mixed-content-iframe.html 2146
fetch-request-css-base-url-iframe.html iframe for css base url test 651
fetch-request-css-base-url-style.css 47
fetch-request-css-base-url-worker.js 1659
fetch-request-css-cross-origin-mime-check-cross.css 33
fetch-request-css-cross-origin-mime-check-cross.html 33
fetch-request-css-cross-origin-mime-check-iframe.html 833
fetch-request-css-cross-origin-mime-check-same.css 32
fetch-request-css-cross-origin-mime-check-same.html 33
fetch-request-css-cross-origin-read-contents.html iframe: cross-origin CSS via service worker 703
fetch-request-css-cross-origin-worker.js 2082
fetch-request-fallback-iframe.html 812
fetch-request-fallback-worker.js 302
fetch-request-html-imports-iframe.html 488
fetch-request-html-imports-worker.js 1195
fetch-request-no-freshness-headers-iframe.html 71
fetch-request-no-freshness-headers-script.py 255
fetch-request-no-freshness-headers-worker.js 443
fetch-request-redirect-iframe.html 906
fetch-request-resources-iframe.https.html 2158
fetch-request-resources-worker.js 567
fetch-request-xhr-iframe.https.html 6789
fetch-request-xhr-sync-error-worker.js 625
fetch-request-xhr-sync-iframe.html Service Worker: Synchronous XHR is intercepted iframe 262
fetch-request-xhr-sync-on-worker-worker.js 1407
fetch-request-xhr-sync-worker.js 191
fetch-request-xhr-worker.js 708
fetch-response-taint-iframe.html 30
fetch-response-xhr-iframe.https.html 1412
fetch-response-xhr-worker.js 396
fetch-response.html 857
fetch-response.js 1277
fetch-rewrite-worker-referrer-policy.js 169
fetch-rewrite-worker-referrer-policy.js.headers 61
fetch-rewrite-worker.js 6193
fetch-rewrite-worker.js.headers 56
fetch-variants-worker.js 1242
fetch-waits-for-activate-worker.js 765
form-poster.html 361
frame-for-getregistrations.html Service Worker: frame for getRegistrations() 519
get-resultingClientId-worker.js 2728
http-to-https-redirect-and-register-iframe.html register, unregister, and report result to opener 686
iframe-with-fetch-variants.html 446
iframe-with-image.html 35
immutable-prototype-serviceworker.js 409
import-echo-cookie-worker-module.py 272
import-echo-cookie-worker.js 58
import-mime-type-worker.py 359
import-relative.xsl 177
import-scripts-404-after-update-plus-update-worker.js 432
import-scripts-404-after-update.js 311
import-scripts-404.js 25
import-scripts-cross-origin-worker.sub.js 131
import-scripts-data-url-worker.js 40
import-scripts-diff-resource-map-worker.js 289
import-scripts-echo.py 231
import-scripts-get.py 246
import-scripts-mime-types-worker.js 1297
import-scripts-redirect-import.js 16
import-scripts-redirect-on-second-time-worker.js 387
import-scripts-redirect-worker.js 65
import-scripts-resource-map-worker.js 531
import-scripts-updated-flag-worker.js 736
import-scripts-version.py 459
imported-classic-script.js 38
imported-module-script.js 44
indexeddb-worker.js 1685
install-event-type-worker.js 432
install-worker.html 439
interface-requirements-worker.sub.js 2492
invalid-blobtype-iframe.https.html 822
invalid-blobtype-worker.js 311
invalid-chunked-encoding-with-flush.py 266
invalid-chunked-encoding.py 138
invalid-header-iframe.https.html 699
invalid-header-worker.js 430
iso-latin1-header-iframe.html 657
iso-latin1-header-worker.js 416
load_worker.js 1012
loaded.html 204
local-url-inherit-controller-frame.html 4150
local-url-inherit-controller-worker.js 137
location-setter.html 260
malformed-http-response.asis 75
malformed-worker.py 869
message-vs-microtask.html 542
mime-sniffing-worker.js 403
mime-type-worker.py 141
mint-new-worker.py onactivate = (e) => e.waitUntil(clients.claim()); var resolve_wait_until; var wait_until = new Promise(resolve => { resolve_wait_until = resolve; }); onmessage = (e) => { if (e.data == 'wait') e.waitUntil(wait_until); if (e.data == 'go') resolve_wait_until(); }; 727
missing.asis 70
module-worker.js 55
multipart-image-iframe.html 665
multipart-image-worker.js 1015
multipart-image.py 698
navigate-window-worker.js 644
navigation-headers-server.py <script> self.addEventListener('load', evt => { self.parent.postMessage({ origin: '%s', referer: '%s', 'sec-fetch-site': '%s', 'sec-fetch-mode': '%s', 'sec-fetch-dest': '%s', }); }); </script> 735
navigation-redirect-body-worker.js 315
navigation-redirect-body.py 317
navigation-redirect-other-origin.html 2503
navigation-redirect-out-scope.py <!DOCTYPE html> <script> onmessage = event => { window.parent.postMessage( { id: event.data.id, result: location.href }, '*'); }; </script> 466
navigation-redirect-scope1.py <!DOCTYPE html> <script> onmessage = event => { window.parent.postMessage( { id: event.data.id, result: location.href }, '*'); }; </script> 466
navigation-redirect-scope2.py <!DOCTYPE html> <script> onmessage = event => { window.parent.postMessage( { id: event.data.id, result: location.href }, '*'); }; </script> 466
navigation-redirect-to-http-iframe.html 1350
navigation-redirect-to-http-worker.js 772
navigation-timing-worker-extended.js 804
navigation-timing-worker.js 314
nested-blob-url-worker-created-from-worker.html 425
nested-blob-url-workers.html 1201
nested-iframe-parent.html 161
nested-parent.html 533
nested-worker-created-from-blob-url-worker.html 969
nested_load_worker.js 655
no-dynamic-import.js @type {[name: string, url: string][]} 533
notification_icon.py 307
object-image-is-not-intercepted-iframe.html iframe for embed-and-object-are-not-intercepted test 682
object-is-not-intercepted-iframe.html iframe for embed-and-object-are-not-intercepted test 509
object-navigation-is-not-intercepted-iframe.html iframe for embed-and-object-are-not-intercepted test 714
onactivate-throw-error-from-nested-event-worker.js 384
onactivate-throw-error-then-cancel-worker.js 125
onactivate-throw-error-then-prevent-default-worker.js 401
onactivate-throw-error-with-empty-onerror-worker.js 127
onactivate-throw-error-worker.js 402
onactivate-waituntil-forever.js 244
onfetch-waituntil-forever.js 268
oninstall-throw-error-from-nested-event-worker.js 382
oninstall-throw-error-then-cancel-worker.js 124
oninstall-throw-error-then-prevent-default-worker.js 400
oninstall-throw-error-with-empty-onerror-worker.js 126
oninstall-throw-error-worker.js 397
oninstall-waituntil-forever.js 243
oninstall-waituntil-throw-error-worker.js 151
onparse-infiniteloop-worker.js 148
opaque-response-being-preloaded-xhr.html 1028
opaque-response-preloaded-worker.js 353
opaque-response-preloaded-xhr.html 1081
opaque-script-frame.html 443
opaque-script-large.js 2732
opaque-script-small.js 66
opaque-script-sw.js 1113
other.html Other 64
override_assert_object_equals.js 2812
partitioned-cookies-3p-credentialless-frame.html Service Worker: Partitioned Cookies 3P Credentialless Iframe 4029
partitioned-cookies-3p-frame.html Service Worker: Partitioned Cookies 3P Iframe 2790
partitioned-cookies-3p-sw.js 173
partitioned-cookies-3p-window.html Service Worker: Partitioned Cookies 3P Window 1105
partitioned-cookies-sw.js 1589
partitioned-cookies-test-helpers.js 795
partitioned-service-worker-iframe-claim.html Service Worker: 3P iframe for partitioned service workers 1941
partitioned-service-worker-nested-iframe-child.html Service Worker: Innermost nested iframe for partitioned service workers 1864
partitioned-service-worker-nested-iframe-parent.html Service Worker: Middle nested iframe for partitioned service workers 1042
partitioned-service-worker-third-party-iframe-getRegistrations.html Service Worker: 3P iframe for partitioned service workers 1404
partitioned-service-worker-third-party-iframe-matchAll.html Service Worker: 3P iframe for partitioned service workers 924
partitioned-service-worker-third-party-iframe.html Service Worker: 3P iframe for partitioned service workers 1230
partitioned-service-worker-third-party-window.html Service Worker: 3P window for partitioned service workers 1050
partitioned-storage-sw.js 2423
partitioned-utils.js 3228
pass-through-worker.js 78
pass.txt 5
performance-timeline-worker.js 2798
postmessage-blob-url.js 143
postmessage-dictionary-transferables-worker.js 664
postmessage-echo-worker.js 88
postmessage-fetched-text.js 139
postmessage-msgport-to-client-worker.js 626
postmessage-on-load-worker.js 334
postmessage-to-client-worker.js 356
postmessage-transferables-worker.js 652
postmessage-worker.js 430
range-request-to-different-origins-worker.js 1552
range-request-with-different-cors-modes-worker.js 2217
range-request-with-synth-head-worker.js 1024
redirect-worker.js 4544
redirect.py 855
referer-iframe.html 1422
referrer-policy-iframe.html 1182
register-closed-window-iframe.html 357
register-iframe.html 161
register-rewrite-worker.html 1093
registration-tests-mime-types.js ServiceWorkerContainer.register() should throw a TypeError, according to step 17.1 of https://w3c.github.io/ServiceWorker/#importscripts "[17] If an uncaught runtime script error occurs during the above step, then: [17.1] Invoke Reject Job Promise with job and TypeError" (Where the "uncaught runtime script error" is thrown by an unsuccessful importScripts()) 3658
registration-tests-scope.js 5053
registration-tests-script-url.js 3565
registration-tests-script.js 5248
registration-tests-security-error.js 3391
registration-worker.js 17
reject-install-worker.js 75
reply-to-message.html 152
request-end-to-end-worker.js 858
request-headers.py 277
resource-timing-iframe.sub.html 488
resource-timing-worker.js 466
respond-then-throw-worker.js 999
respond-with-body-accessed-response-iframe.html 657
respond-with-body-accessed-response-worker.js 2833
respond-with-body-accessed-response.jsonp 16
sample-worker-interceptor.js 2144
sample.html 34
sample.js 21
sample.txt 12
sandboxed-iframe-fetch-event-iframe.html 1872
sandboxed-iframe-fetch-event-iframe.py 652
sandboxed-iframe-fetch-event-worker.js 596
sandboxed-iframe-navigator-serviceworker-iframe.html 598
scope1
scope2
secure-context
secure-context-service-worker.js 761
service-worker-csp-worker.py importScripts('worker-testharness.js'); importScripts('test-helpers.sub.js'); importScripts('/common/get-host-info.sub.js'); var host_info = get_host_info(); test(function() { var import_script_failed = false; try { importScripts(host_info.HTTPS_REMOTE_ORIGIN + base_path() + 'empty.js'); } catch(e) { import_script_failed = true; } assert_true(import_script_failed, 'Importing the other origins script should fail.'); }, 'importScripts test for default-src'); test(function() { assert_throws_js(EvalError, function() { eval('1 + 1'); }, 'eval() should throw EvalError.') assert_throws_js(EvalError, function() { new Function('1 + 1'); }, 'new Function() should throw EvalError.') }, 'eval test for default-src'); async_test(function(t) { fetch(host_info.HTTPS_REMOTE_ORIGIN + base_path() + 'fetch-access-control.py?ACAOrigin=*', {mode: 'cors'}) .then(function(response){ assert_unreached('fetch should fail.'); }, function(){ t.done(); }) .catch(unreached_rejection(t)); }, 'Fetch test for default-src'); async_test(function(t) { var REDIRECT_URL = host_info.HTTPS_ORIGIN + base_path() + 'redirect.py?Redirect='; var OTHER_BASE_URL = host_info.HTTPS_REMOTE_ORIGIN + base_path() + 'fetch-access-control.py?' fetch(REDIRECT_URL + encodeURIComponent(OTHER_BASE_URL + 'ACAOrigin=*'), {mode: 'cors'}) .then(function(response){ assert_unreached('Redirected fetch should fail.'); }, function(){ t.done(); }) .catch(unreached_rejection(t)); }, 'Redirected fetch test for default-src'); 6035
service-worker-header.py 795
service-worker-interception-dynamic-import-worker.js 59
service-worker-interception-network-worker.js 36
service-worker-interception-service-worker.js 371
service-worker-interception-static-import-worker.js 58
silence.oga 0
simple-intercept-worker.js 174
simple-intercept-worker.js.headers 37
simple.html Simple 65
simple.txt 19
skip-waiting-installed-worker.js 995
skip-waiting-worker.js 675
square.png 0
square.png.sub.headers 55
stalling-service-worker.js 1693
subdir
success.py 261
svg-target-reftest-001-frame.html 69
svg-target-reftest-001.html Green svg box reference file 174
svg-target-reftest-frame.html 53
test-helpers.sub.js @param options an object that represents RegistrationOptions except for scope. @param options.type a WorkerType. @param options.updateViaCache a ServiceWorkerUpdateViaCache. @see https://w3c.github.io/ServiceWorker/#dictdef-registrationoptions 10485
test-request-headers-worker.js 325
test-request-headers-worker.py 668
test-request-mode-worker.js 325
test-request-mode-worker.py 666
testharness-helpers.js testharness-helpers contains various useful extensions to testharness.js to allow them to be used across multiple tests before they have been upstreamed. This file is intended to be usable from both document and worker environments, so code should for example not rely on the DOM. 5511
trickle.py 434
type-check-worker.js 157
unregister-controller-page.html 445
unregister-immediately-helpers.js 632
unregister-rewrite-worker.html 519
update
update-claim-worker.py // Time stamp: %s // (This ensures the source text is *not* a byte-for-byte match with any // previously-fetched version of this script.) // This no-op fetch handler is necessary to bypass explicitly the no fetch // handler optimization by which this service worker script can be skipped. addEventListener('fetch', event => { return; }); addEventListener('install', event => { event.waitUntil(self.skipWaiting()); }); addEventListener('activate', event => { event.waitUntil(self.clients.claim()); }); 661
update-during-installation-worker.js 1706
update-during-installation-worker.py // %s importScripts('update-during-installation-worker.js'); 379
update-fetch-worker.py 615
update-max-aged-worker-imported-script.py const importTime = {time:8f}; 430
update-max-aged-worker.py const mainTime = {time:8f}; const testName = {test}; importScripts('update-max-aged-worker-imported-script.py'); addEventListener('message', event => {{ event.source.postMessage({{ mainTime, importTime, test: {test} }}); }}); 859
update-missing-import-scripts-imported-worker.py 376
update-missing-import-scripts-main-worker.py 555
update-nocookie-worker.py 488
update-recovery-worker.py 1084
update-registration-with-type.py importScripts('./imported-classic-script.js'); self.onmessage = e => { e.source.postMessage(imported); }; 1077
update-smaller-body-after-update-worker.js 16
update-smaller-body-before-update-worker.js 39
update-worker-from-file.py 983
update-worker.py 2257
update_shell.py 1114
vtt-frame.html Page Title 92
wait-forever-in-install-worker.js 309
websocket-worker.js 696
websocket.js 219
window-opener.html 471
windowclient-navigate-worker.js 2327
worker-client-id-worker.js 678
worker-fetching-cross-origin.js 541
worker-interception-redirect-serviceworker.js 2094
worker-interception-redirect-webworker.js 1906
worker-load-interceptor.js 564
worker-testharness.js worker-test-harness should be considered a temporary polyfill around testharness.js for supporting Service Worker based tests. It should not be necessary once the test harness is able to drive worker based tests natively. See https://github.com/w3c/testharness.js/pull/82 for status of effort to update upstream testharness.js. Once the upstreaming is complete, tests that reference worker-test-harness should be updated to directly import testharness.js. 1768
worker_interception_redirect_webworker.py 676
xhr-content-length-worker.js 716
xhr-iframe.html iframe for xhr tests 495
xhr-response-url-worker.js 807
xsl-base-url-iframe.xml 216
xsl-base-url-worker.js 494
xslt-pass.xsl 256