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

Side by Side Diff: LayoutTests/http/tests/serviceworker/service-worker-gc.html

Issue 330173003: Make ServiceWorker an ActiveDOMObject (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: patch for landing Created 6 years, 6 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 <!DOCTYPE html>
2 <script src="/js-test-resources/js-test.js"></script>
3 <body>
4 <script>
5 window.jsTestIsAsync = true;
6 description('Test that a registered Service Worker with an event handler is not garbage collected prematurely');
7 swObservation = null;
8 scope = 'gc';
9
10 if (!window.internals) {
11 testFailed('This test requires internals.observeGC');
12 finishJSTest();
13 } else {
14 setup();
15 }
16
17 function setup() {
18 var worker = 'resources/empty-worker.js';
19 unregisterAndRegister(worker, scope).then(onRegister);
20 }
21
22 function unregisterAndRegister(url, scope) {
23 return navigator.serviceWorker.unregister(scope).then(function() {
24 return navigator.serviceWorker.register(url, { scope: scope });
25 }).catch(function(error) {
26 testFailed('Could not register worker: ' + error);
27 finishJSTest();
28 });
29 }
30
31 function assertServiceWorkerIsNotCollected() {
32 gc();
33 shouldBeFalse('swObservation.wasCollected')
34 }
35
36 function onRegister(sw) {
37 swObservation = internals.observeGC(sw);
38 sw.addEventListener('statechange', onStateChange);
39 setTimeout(assertServiceWorkerIsNotCollected, 0);
40 }
41
42 function onStateChange(event) {
43 assertServiceWorkerIsNotCollected();
44
45 if (event.target.state != 'active')
46 return;
47 navigator.serviceWorker.unregister(scope).then(onUnregister);
48 }
49
50 function onUnregister()
51 {
52 // FIXME: Assert that the ServiceWorker *is* collected when the 'redundant' state is implemented.
53 assertServiceWorkerIsNotCollected();
54
55 finishJSTest();
56 }
57 </script>
58 </body>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698