Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Unified Diff: third_party/WebKit/LayoutTests/http/tests/serviceworker/navigation-preload/getState.html

Issue 2443103002: service worker: Implement NavigationPreloadManager.getState (Closed)
Patch Set: reject Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>

Powered by Google App Engine
This is Rietveld 408576698