mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-05 15:28:39 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
|
|
@ -0,0 +1,71 @@
|
|||
<!DOCTYPE html>
|
||||
<title>Service Worker: recovery by navigation update</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/testharness-helpers.js"></script>
|
||||
<script src="resources/test-helpers.sub.js"></script>
|
||||
<script>
|
||||
async_test(function(t) {
|
||||
var scope = 'resources/simple.txt';
|
||||
var worker_url = 'resources/update-recovery-worker.py';
|
||||
var expected_url = normalizeURL(worker_url);
|
||||
var registration;
|
||||
|
||||
function with_bad_iframe(url) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
var frame = document.createElement('iframe');
|
||||
|
||||
// There is no cross-browser event to listen for to detect an
|
||||
// iframe that fails to load due to a bad interception. Unfortunately
|
||||
// we have to use a timeout.
|
||||
var timeout = setTimeout(function() {
|
||||
frame.remove();
|
||||
resolve();
|
||||
}, 5000);
|
||||
|
||||
// If we do get a load event, though, we know something went wrong.
|
||||
frame.addEventListener('load', function() {
|
||||
clearTimeout(timeout);
|
||||
frame.remove();
|
||||
reject('expected bad iframe should not fire a load event!');
|
||||
});
|
||||
|
||||
frame.src = url;
|
||||
document.body.appendChild(frame);
|
||||
});
|
||||
}
|
||||
|
||||
function with_update(t) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
registration.addEventListener('updatefound', function onUpdate() {
|
||||
registration.removeEventListener('updatefound', onUpdate);
|
||||
wait_for_state(t, registration.installing, 'activated').then(function() {
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
service_worker_unregister_and_register(t, worker_url, scope)
|
||||
.then(function(r) {
|
||||
registration = r;
|
||||
return wait_for_state(t, registration.installing, 'activated');
|
||||
})
|
||||
.then(function() {
|
||||
return Promise.all([
|
||||
with_update(t),
|
||||
with_bad_iframe(scope)
|
||||
]);
|
||||
})
|
||||
.then(function() {
|
||||
return with_iframe(scope);
|
||||
})
|
||||
.then(function(frame) {
|
||||
assert_equals(frame.contentWindow.navigator.serviceWorker.controller.scriptURL,
|
||||
expected_url);
|
||||
frame.remove();
|
||||
return service_worker_unregister_and_done(t, scope);
|
||||
})
|
||||
.catch(unreached_rejection(t));
|
||||
}, 'Recover from a bad service worker by updating after a failed navigation.');
|
||||
</script>
|
||||
Loading…
Add table
Add a link
Reference in a new issue