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

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

Issue 2451373003: service worker: Implement NavigationPreloadManager.setHeaderValue (Closed)
Patch Set: rebase Created 4 years, 1 month 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/get-state.html
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/navigation-preload/get-state.html b/third_party/WebKit/LayoutTests/http/tests/serviceworker/navigation-preload/get-state.html
index 07555e976790ee17b13b6d23ee8513693497e7ba..46b71f9110045add9985fa6d88f6a9bbbecbb3a9 100644
--- a/third_party/WebKit/LayoutTests/http/tests/serviceworker/navigation-preload/get-state.html
+++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/navigation-preload/get-state.html
@@ -13,32 +13,87 @@ function post_and_wait_for_reply(worker, message) {
});
}
+function expect_state(state, enabled, header, desc) {
+ assert_equals(Object.keys(state).length, 2, desc + ': # of keys');
+ assert_equals(state.enabled, enabled, desc + ': enabled');
+ assert_equals(state.headerValue, header, desc + ': header');
+}
+
promise_test(t => {
- const scope = '../resources/getState';
+ const scope = '../resources/get-state';
const script = '../resources/empty-worker.js';
- var registration;
+ var np;
return service_worker_unregister_and_register(t, script, scope)
.then(r => {
- registration = r;
- add_completion_callback(() => registration.unregister());
- return registration.navigationPreload.getState();
+ np = r.navigationPreload;
+ add_completion_callback(() => r.unregister());
+ return np.getState();
+ })
+ .then(state => {
+ expect_state(state, false, 'true', 'default state');
+ return np.enable();
+ })
+ .then(result => {
+ assert_equals(result, undefined,
+ 'enable() should resolve to undefined');
+ return np.getState();
+ })
+ .then(state => {
+ expect_state(state, true, 'true', 'state after enable()');
+ return np.disable();
+ })
+ .then(result => {
+ assert_equals(result, undefined,
+ 'disable() should resolve to undefined');
+ return np.getState();
+ })
+ .then(state => {
+ expect_state(state, false, 'true', 'state after disable()');
+ return np.setHeaderValue('dreams that cannot be');
+ })
+ .then(result => {
+ assert_equals(result, undefined,
+ 'setHeaderValue() should resolve to undefined');
+ return np.getState();
})
.then(state => {
- assert_equals(state.enabled, false,
- '.enabled should be false by default');
- return registration.navigationPreload.enable();
+ expect_state(state, false, 'dreams that cannot be',
+ 'state after setHeaderValue()');
+ return np.setHeaderValue('').then(() => np.getState());
})
- .then(() => registration.navigationPreload.getState())
.then(state => {
- assert_equals(state.enabled, true,
- '.enabled should be true after enable()');
- return registration.navigationPreload.disable();
+ expect_state(state, false, '', 'after setHeaderValue to empty string');
+ return np.setHeaderValue(null).then(() => np.getState());
})
- .then(() => registration.navigationPreload.getState())
.then(state => {
- assert_equals(state.enabled, false,
- '.enabled should be false after disable()');
+ expect_state(state, false, 'null', 'after setHeaderValue to null');
+ return promise_rejects(t,
+ new TypeError,
+ np.setHeaderValue('what\uDC00\uD800this'),
+ 'setHeaderValue() should throw if passed surrogates');
+ })
+ .then(() => {
+ return promise_rejects(t,
+ new TypeError,
+ np.setHeaderValue('zer\0o'),
+ 'setHeaderValue() should throw if passed \\0');
+ })
+ .then(() => {
+ return promise_rejects(t,
+ new TypeError,
+ np.setHeaderValue('\rcarriage'),
+ 'setHeaderValue() should throw if passed \\r');
+ })
+ .then(() => {
+ return promise_rejects(t,
+ new TypeError,
+ np.setHeaderValue('newline\n'),
+ 'setHeaderValue() should throw if passed \\n');
+ })
+ .then(() => np.enable().then(() => np.getState()))
+ .then(state => {
+ expect_state(state, true, 'null', 'enable() should not change header');
});
}, 'getState');
@@ -46,7 +101,7 @@ promise_test(t => {
// 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 scope = 'resources/get-state-worker';
const script = 'resources/get-state-worker.js';
var worker;
var registration;
@@ -63,10 +118,10 @@ promise_test(t => {
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)');
+ expect_state(states[0], false, 'true',
+ 'default state (from worker)');
+ expect_state(states[1], false, 'true',
+ 'default state (from page)');
// Call enable() and then getState().
return post_and_wait_for_reply(worker, 'enable');
})
@@ -78,10 +133,10 @@ promise_test(t => {
]);
})
.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)');
+ expect_state(states[0], true, 'true',
+ 'state after enable() (from worker)');
+ expect_state(states[1], true, 'true',
+ 'state after enable() (from page)');
// Call disable() and then getState().
return post_and_wait_for_reply(worker, 'disable');
})
@@ -94,10 +149,24 @@ promise_test(t => {
]);
})
.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)');
+ expect_state(states[0], false, 'true',
+ 'state after disable() (from worker)');
+ expect_state(states[1], false, 'true',
+ 'state after disable() (from page)');
+ return post_and_wait_for_reply(worker, 'setHeaderValue');
+ })
+ .then(data => {
+ assert_equals(data, undefined,
+ '.setHeaderValue() should resolve to undefined');
+ return Promise.all([
+ post_and_wait_for_reply(worker, 'getState'),
+ registration.navigationPreload.getState()]);
+ })
+ .then(states => {
+ expect_state(states[0], false, 'insightful',
+ 'state after setHeaderValue() (from worker)');
+ expect_state(states[1], false, 'insightful',
+ 'state after setHeaderValue() (from page)');
});
}, 'getState from a worker');
</script>

Powered by Google App Engine
This is Rietveld 408576698