Commit 15cdafe9 authored by Makoto Shimazu's avatar Makoto Shimazu Committed by Commit Bot

Modernize update-bytecheck.https.html and split into two files

The test sometimes fails due to timeout on Windows. This CL splits the
test into two to mitigate the workload.

Bug: 1002377, 1150000
Change-Id: I1cfb2198b304cc21e3aeb9dc00b4db66e7eeb4e1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2546145
Commit-Queue: Makoto Shimazu <shimazu@chromium.org>
Reviewed-by: default avatarAsami Doi <asamidoi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#828656}
parent 60683192
<!doctype html>
<meta charset=utf-8>
<title></title>
<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="resources/testharness-helpers.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/test-helpers.sub.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script>
// Tests of updating a service worker. This file contains cors cases only.
// The cases of cors: false are in update-bytecheck.https.html.
/*
* @param string main
* Decide the content of the main script, where 'default' is for constant
* content while 'time' is for time-variant content.
* @param string imported
* Decide the content of the imported script, where 'default' is for constant
* content while 'time' is for time-variant content.
*/
const settings = [{main: 'default', imported: 'default'},
{main: 'default', imported: 'time' },
{main: 'time', imported: 'default'},
{main: 'time', imported: 'time' }];
const host_info = get_host_info();
settings.forEach(({cors, main, imported}) => {
promise_test(async (t) => {
// Specify a cross origin path to load imported scripts from a cross origin.
const path = host_info.HTTPS_REMOTE_ORIGIN +
'/service-workers/service-worker/resources/';
const script = 'resources/bytecheck-worker.py' +
'?main=' + main +
'&imported=' + imported +
'&path=' + path;
const scope = 'resources/blank.html';
// Register a service worker.
const swr = await service_worker_unregister_and_register(t, script, scope);
t.add_cleanup(() => swr.unregister());
const sw = await wait_for_update(t, swr);
await wait_for_state(t, sw, 'activated');
assert_array_equals([swr.active, swr.waiting, swr.installing],
[sw, null, null]);
// Update the service worker registration.
await swr.update();
// If there should be a new service worker.
if (main === 'time' || imported === 'time') {
return wait_for_update(t, swr);
}
// Otherwise, make sure there is no newly created service worker.
assert_array_equals([swr.active, swr.waiting, swr.installing],
[sw, null, null]);
}, `Test(main: ${main}, imported: ${imported})`);
});
</script>
......@@ -8,10 +8,10 @@
<script src="resources/test-helpers.sub.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script>
// Tests of updating a service worker. This file contains non-cors cases only.
// The cases of cors: true are in update-bytecheck-cors-import.https.html.
/*
* @param bolean cors
* Determine wether the imported script should be a cross origin script.
* @param string main
* Decide the content of the main script, where 'default' is for constant
* content while 'time' is for time-variant content.
......@@ -19,57 +19,40 @@
* Decide the content of the imported script, where 'default' is for constant
* content while 'time' is for time-variant content.
*/
const settings = [{cors: false, main: 'default', imported: 'default'},
{cors: false, main: 'default', imported: 'time' },
{cors: false, main: 'time', imported: 'default'},
{cors: false, main: 'time', imported: 'time' },
{cors: true, main: 'default', imported: 'default'},
{cors: true, main: 'default', imported: 'time' },
{cors: true, main: 'time', imported: 'default'},
{cors: true, main: 'time', imported: 'time' }];
const settings = [{main: 'default', imported: 'default'},
{main: 'default', imported: 'time' },
{main: 'time', imported: 'default'},
{main: 'time', imported: 'time' }];
const host_info = get_host_info();
settings.reduce((p, s) => {
return p.then(promise_test(function(t) {
var path = !s.cors ? ''
: host_info.HTTPS_REMOTE_ORIGIN +
'/service-workers/service-worker/resources/';
var script = 'resources/bytecheck-worker.py' +
'?main=' + s.main +
'&imported=' + s.imported +
'&path=' + path;
var scope = 'resources/blank.html';
settings.forEach(({main, imported}) => {
promise_test(async (t) => {
// Empty path results in the same origin imported scripts.
const path = '';
const script = 'resources/bytecheck-worker.py' +
'?main=' + main +
'&imported=' + imported +
'&path=' + path;
const scope = 'resources/blank.html';
var swr, sw;
return Promise.resolve()
// Register a service worker.
.then(_ => service_worker_unregister_and_register(t, script, scope))
.then(r => {
t.add_cleanup(() => service_worker_unregister(t, scope));
swr = r;
return wait_for_update(t, swr);
})
.then(w => sw = w)
.then(_ => wait_for_state(t, sw, 'activated'))
.then(_ => assert_array_equals([swr.active,
swr.waiting,
swr.installing],
[sw, null, null]))
// Register a service worker.
const swr = await service_worker_unregister_and_register(t, script, scope);
t.add_cleanup(() => swr.unregister());
const sw = await wait_for_update(t, swr);
await wait_for_state(t, sw, 'activated');
assert_array_equals([swr.active, swr.waiting, swr.installing],
[sw, null, null]);
// Update the service worker registration.
.then(_ => swr.update())
.then(_ => {
// If there should be a new service worker.
if (s.main === 'time' || s.imported === 'time') {
return wait_for_update(t, swr);
}
// Otherwise, make sure there is no newly created service worker.
assert_array_equals([swr.active,
swr.waiting,
swr.installing],
[sw, null, null]);
});
}, `Test(cors: ${s.cors}, main: ${s.main}, imported: ${s.imported})`));
}, Promise.resolve());
// Update the service worker registration.
await swr.update();
// If there should be a new service worker.
if (main === 'time' || imported === 'time') {
return wait_for_update(t, swr);
}
// Otherwise, make sure there is no newly created service worker.
assert_array_equals([swr.active, swr.waiting, swr.installing],
[sw, null, null]);
}, `Test(main: ${main}, imported: ${imported})`);
});
</script>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment