Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/http/tests/serviceworker/navigation-preload/getState.html |
| diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/navigation-preload/getState.html b/third_party/WebKit/LayoutTests/http/tests/serviceworker/navigation-preload/getState.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..01bbe3399168aaebebd861aaef1990e395ffcf97 |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/navigation-preload/getState.html |
| @@ -0,0 +1,103 @@ |
| +<!DOCTYPE html> |
|
horo
2016/10/25 07:51:47
Nit:
Why are you using camelCase filename?
I don't
falken
2016/10/25 08:06:29
Done. No reason, just forgot.
|
| +<meta charset="utf-8"> |
| +<title>NavigationPreloadManager.getState</title> |
| +<script src="../../resources/testharness.js"></script> |
| +<script src="../../resources/testharnessreport.js"></script> |
| +<script src="../resources/test-helpers.js"></script> |
| +<body> |
| +<script> |
| +function post_and_wait_for_reply(worker, message) { |
| + return new Promise(resolve => { |
| + navigator.serviceWorker.onmessage = e => { resolve(e.data); }; |
| + worker.postMessage(message); |
| + }); |
| +} |
| + |
| +promise_test(t => { |
| + const scope = '../resources/getState'; |
| + const script = '../resources/empty-worker.js'; |
| + var registration; |
| + |
| + return service_worker_unregister_and_register(t, script, scope) |
| + .then(r => { |
| + registration = r; |
| + add_completion_callback(() => registration.unregister()); |
| + return registration.navigationPreload.getState(); |
| + }) |
| + .then(state => { |
| + assert_equals(state.enabled, false, |
| + '.enabled should be false by default'); |
| + return registration.navigationPreload.enable(); |
| + }) |
| + .then(() => registration.navigationPreload.getState()) |
| + .then(state => { |
| + assert_equals(state.enabled, true, |
| + '.enabled should be true after enable()'); |
| + return registration.navigationPreload.disable(); |
| + }) |
| + .then(() => registration.navigationPreload.getState()) |
| + .then(state => { |
| + assert_equals(state.enabled, false, |
| + '.enabled should be false after disable()'); |
| + }); |
| + }, 'getState'); |
| + |
| +// This test sends commands to a worker to call enable()/disable()/getState(). |
| +// It checks the results from the worker and verifies that they match the |
| +// navigation preload state accessible from the page. |
| +promise_test(t => { |
| + const scope = 'resources/getState-worker'; |
| + const script = 'resources/get-state-worker.js'; |
| + var worker; |
| + |
| + return service_worker_unregister_and_register(t, script, scope) |
| + .then(r => { |
| + registration = r; |
| + add_completion_callback(() => registration.unregister()); |
| + worker = registration.installing; |
| + // Call getState(). |
| + return post_and_wait_for_reply(worker, 'getState'); |
| + }) |
| + .then(data => { |
| + return Promise.all([data, registration.navigationPreload.getState()]); |
| + }) |
| + .then(states => { |
| + assert_equals(states[0].enabled, false, |
| + '.enabled should be false by default (from worker)'); |
| + assert_equals(states[1].enabled, false, |
| + '.enabled should be false by default (from page)'); |
| + // Call enable() and then getState(). |
| + return post_and_wait_for_reply(worker, 'enable'); |
| + }) |
| + .then(data => { |
| + assert_equals(data, undefined, 'enable() should resolve to undefined'); |
| + return Promise.all([ |
| + post_and_wait_for_reply(worker, 'getState'), |
| + registration.navigationPreload.getState() |
| + ]) |
|
horo
2016/10/25 07:51:47
]);
falken
2016/10/25 08:06:29
Done.
|
| + }) |
| + .then(states => { |
| + assert_equals(states[0].enabled, true, |
| + '.enabled should be true after enable() (from worker)'); |
| + assert_equals(states[1].enabled, true, |
| + '.enabled should be true after enable() (from page)'); |
| + // Call disable() and then getState(). |
| + return post_and_wait_for_reply(worker, 'disable'); |
| + }) |
| + .then(data => { |
| + assert_equals(data, undefined, |
| + '.disable() should resolve to undefined'); |
| + return Promise.all([ |
| + post_and_wait_for_reply(worker, 'getState'), |
| + registration.navigationPreload.getState() |
| + ]) |
|
horo
2016/10/25 07:51:47
]);
falken
2016/10/25 08:06:29
Done.
|
| + }) |
| + .then(states => { |
| + assert_equals(states[0].enabled, false, |
| + '.enabled should be false after disable() (from worker)'); |
| + assert_equals(states[1].enabled, false, |
| + '.enabled should be false after disable() (from page)'); |
| + }); |
| + }, 'getState from a worker'); |
| +</script> |
| +</body> |