| 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>
|
|
|