<!DOCTYPE html> <title>Service Worker: CSS's base URL must be the request URL even when fetched from other URL</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <script src="resources/get-host-info.sub.js"></script> <script src="resources/test-helpers.sub.js?pipe=sub"></script> <script> async_test(function(t) { var SCOPE = 'resources/fetch-request-css-base-url-iframe.html'; var SCRIPT = 'resources/fetch-request-css-base-url-worker.js'; var worker; var testDonePromise; return service_worker_unregister_and_register(t, SCRIPT, SCOPE) .then(function(registration) { worker = registration.installing; return wait_for_state(t, worker, 'activated'); }) .then(function() { return new Promise(function(resolve) { var channel = new MessageChannel(); testDonePromise = new Promise(function(resolveTestDone) { channel.port1.onmessage = t.step_func(function(msg) { if (msg.data.ready) { resolve(); return; } var result = msg.data; var base = get_host_info()['HTTPS_ORIGIN'] + base_path(); assert_equals( result.url, base + 'resources/dummy.png', 'The base URL while loading the images referred from CSS ' + 'must be the request URL of CSS.'); assert_equals( result.referrer, base + 'resources/fetch-request-css-base-url-style.css', 'While loading the image defined in CSS the referrer must ' + 'be the request URL of CSS.'); resolveTestDone(); }); }); worker.postMessage( {port: channel.port2}, [channel.port2]); }); }) .then(function() { return with_iframe(SCOPE); }) .then(function(f) { return testDonePromise.then(function() { f.remove(); return service_worker_unregister_and_done(t, SCOPE); }); }) .catch(unreached_rejection(t)); }, 'CSS\'s base URL must be the request URL even when fetched from other URL.'); </script>