blob: 87791d2e487db7d83725d14215eff08125b05762 [file] [log] [blame]
// This worker remains in the installing phase so that the
// navigation preload API can be tested when there is no
// active worker.
importScripts('/resources/testharness.js');
importScripts('helpers.js');
function expect_rejection(promise) {
return promise.then(
() => { return Promise.reject('unexpected fulfillment'); },
err => { assert_equals('InvalidStateError', err.name); });
}
function test_before_activation() {
const np = self.registration.navigationPreload;
return expect_rejection(np.enable())
.then(() => expect_rejection(np.disable()))
.then(() => expect_rejection(np.setHeaderValue('hi')))
.then(() => np.getState())
.then(state => expect_navigation_preload_state(
state, false, 'true', 'state should be the default'))
.then(() => 'PASS')
.catch(err => 'FAIL: ' + err);
}
var resolve_done_promise;
var done_promise = new Promise(resolve => { resolve_done_promise = resolve; });
// Run the test once the page messages this worker.
self.addEventListener('message', e => {
e.waitUntil(test_before_activation()
.then(result => {
e.source.postMessage(result);
resolve_done_promise();
}));
});
// Don't become the active worker until the test is done.
self.addEventListener('install', e => {
e.waitUntil(done_promise);
});