author | Hiroki Nakagawa <nhiroki@chromium.org> |
Tue, 28 Apr 2020 11:37:45 +0000 | |
changeset 527576 | e4f2dd72c208f41d4cccb483eeead7523e60e0fc |
parent 527575 | 4cdada5d87dffd05db728efe8e1c5d43bc6cd7f8 |
child 527577 | c810496118ef82f0f29650c7deebfda23ab36ea9 |
push id | 37368 |
push user | btara@mozilla.com |
push date | Fri, 01 May 2020 21:45:51 +0000 |
treeherder | mozilla-central@0f9c5a59e45d [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | testonly |
bugs | 1631356, 23105, 21162, 22086, 1057682, 2155760, 760974 |
milestone | 77.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/testing/web-platform/tests/resources/testharness.js +++ b/testing/web-platform/tests/resources/testharness.js @@ -393,30 +393,17 @@ policies and contribution forms [3]. function ServiceWorkerTestEnvironment() { WorkerTestEnvironment.call(this); this.all_loaded = false; this.on_loaded_callback = null; var this_obj = this; self.addEventListener("message", function(event) { if (event.data && event.data.type && event.data.type === "connect") { - if (event.ports && event.ports[0]) { - // If a MessageChannel was passed, then use it to - // send results back to the main window. This - // allows the tests to work even if the browser - // does not fully support MessageEvent.source in - // ServiceWorkers yet. - this_obj._add_message_port(event.ports[0]); - event.ports[0].start(); - } else { - // If there is no MessageChannel, then attempt to - // use the MessageEvent.source to send results - // back to the main window. - this_obj._add_message_port(event.source); - } + this_obj._add_message_port(event.source); } }, false); // The oninstall event is received after the service worker script and // all imported scripts have been fetched and executed. It's the // equivalent of an onload event for a document. All tests should have // been added by the time this event is received, thus it's not // necessary to wait until the onactivate event. However, tests for
--- a/testing/web-platform/tests/service-workers/service-worker/client-navigate.https.html +++ b/testing/web-platform/tests/service-workers/service-worker/client-navigate.https.html @@ -33,21 +33,23 @@ } promise_test(function(t) { var worker = "resources/client-navigate-worker.js"; var scope = "resources/client-navigate-frame.html"; var controller, frame, clientId; return service_worker_unregister_and_register(t, worker, scope) - .then(reg => wait_for_state(t, reg.installing, "activated")) + .then(reg => { + controller = reg.installing; + return wait_for_state(t, reg.installing, "activated"); + }) .then(___ => with_iframe(scope)) .then(f => { frame = f; - controller = frame.contentWindow.navigator.serviceWorker.controller; fetch_tests_from_worker(controller); return wait_for_message() }) .then(({id}) => clientId = id) .then(___ => run_test(controller, clientId, "test_client_navigate_success")) .then(({result, url}) => { assert_equals(result, "test_client_navigate_success"); assert_equals( @@ -64,21 +66,23 @@ }, "Frame location should update on successful navigation"); promise_test(function(t) { var worker = "resources/client-navigate-worker.js"; var scope = "resources/client-navigate-frame.html"; var controller, frame, clientId; return service_worker_unregister_and_register(t, worker, scope) - .then(reg => wait_for_state(t, reg.installing, "activated")) + .then(reg => { + controller = reg.installing; + return wait_for_state(t, reg.installing, "activated"); + }) .then(___ => with_iframe(scope)) .then(f => { frame = f; - controller = frame.contentWindow.navigator.serviceWorker.controller; fetch_tests_from_worker(controller); return wait_for_message() }) .then(({id}) => clientId = id) .then(___ => run_test(controller, clientId, "test_client_navigate_redirect")) .then(({result, url}) => { assert_equals(result, "test_client_navigate_redirect"); assert_equals(url, ""); @@ -90,21 +94,23 @@ }, "Frame location should not be accessible after redirect"); promise_test(function(t) { var worker = "resources/client-navigate-worker.js"; var scope = "resources/client-navigate-frame.html"; var controller, frame, clientId; return service_worker_unregister_and_register(t, worker, scope) - .then(reg => wait_for_state(t, reg.installing, "activated")) + .then(reg => { + controller = reg.installing; + return wait_for_state(t, reg.installing, "activated"); + }) .then(___ => with_iframe(scope)) .then(f => { frame = f; - controller = frame.contentWindow.navigator.serviceWorker.controller; fetch_tests_from_worker(controller); return wait_for_message() }) .then(({id}) => clientId = id) .then(___ => run_test(controller, clientId, "test_client_navigate_cross_origin")) .then(({result, url}) => { assert_equals(result, "test_client_navigate_cross_origin"); assert_equals(url, ""); @@ -116,21 +122,23 @@ }, "Frame location should not be accessible after cross-origin navigation"); promise_test(function(t) { var worker = "resources/client-navigate-worker.js"; var scope = "resources/client-navigate-frame.html"; var controller, frame, clientId; return service_worker_unregister_and_register(t, worker, scope) - .then(reg => wait_for_state(t, reg.installing, "activated")) + .then(reg => { + controller = reg.installing; + return wait_for_state(t, reg.installing, "activated"); + }) .then(___ => with_iframe(scope)) .then(f => { frame = f; - controller = frame.contentWindow.navigator.serviceWorker.controller; fetch_tests_from_worker(controller); return wait_for_message() }) .then(({id}) => clientId = id) .then(___ => run_test(controller, clientId, "test_client_navigate_about_blank")) .then(({result, url}) => { assert_equals(result, "test_client_navigate_about_blank"); assert_equals( @@ -146,22 +154,22 @@ promise_test(function(t) { var worker = "resources/client-navigate-worker.js"; var scope = "resources/client-navigate-frame.html"; var controller, frame, clientId; return service_worker_unregister_and_register(t, worker, scope) .then(reg => { + controller = reg.installing; return wait_for_state(t, reg.installing, "activated"); }) .then(___ => with_iframe(scope)) .then(f => { frame = f; - controller = frame.contentWindow.navigator.serviceWorker.controller; fetch_tests_from_worker(controller); return wait_for_message() }) .then(({id}) => clientId = id) .then(___ => run_test(controller, clientId, "test_client_navigate_mixed_content")) .then(({result, url}) => { assert_equals(result, "test_client_navigate_mixed_content"); assert_equals(