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

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

Issue 466723002: ServiceWorker: Enable ServiceWorkerRegistration and update layout tests (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@updatefound
Patch Set: apply horo@'s patch (PatchSet 25 on https://codereview.chromium.org/468753003/) Created 6 years, 4 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
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <script src="/js-test-resources/js-test.js"></script> 2 <script src="/js-test-resources/js-test.js"></script>
3 <script> 3 <script>
4 window.jsTestIsAsync = true; 4 window.jsTestIsAsync = true;
5 description('Test that a registered Service Worker with an event handler is not garbage collected prematurely'); 5 description('Test that a registered Service Worker with an event handler is not garbage collected prematurely');
6 var swObservation = null; 6 var swObservation = null;
7 var scope = 'gc'; 7 var scope = 'gc';
8 8
9 if (!window.internals) { 9 if (!window.internals) {
10 testFailed('This test requires internals.observeGC'); 10 testFailed('This test requires internals.observeGC');
11 finishJSTest(); 11 finishJSTest();
12 } else { 12 } else {
13 setup(); 13 setup();
14 } 14 }
15 15
16 function setup() { 16 function setup() {
17 var worker = '../resources/empty-worker.js'; 17 var worker = '../resources/empty-worker.js';
18 unregisterAndRegister(worker, scope).then(onRegister); 18 unregisterAndRegister(worker, scope).then(onRegister);
19 } 19 }
20 20
21 function unregisterAndRegister(url, scope) { 21 function unregisterAndRegister(url, scope) {
22 return navigator.serviceWorker.unregister(scope).then(function() { 22 return navigator.serviceWorker.unregister(scope).then(function() {
23 return navigator.serviceWorker.register(url, { scope: scope }); 23 return navigator.serviceWorker.register(url, { scope: scope });
24 }).catch(function(error) { 24 }).catch(function(error) {
25 testFailed('Could not register worker: ' + error); 25 testFailed('Could not register worker: ' + error);
26 finishJSTest(); 26 finishJSTest();
27 }); 27 });
28 } 28 }
29 29
30 function onRegister(sw) { 30 function onRegister(registration) {
31 registrationObservation = internals.observeGC(registration);
falken 2014/08/14 04:46:11 observeGC just returns an observer you can use to
horo 2014/08/14 07:11:46 Done.
32 registration.addEventListener('updatefound', (function() {
33 onUpdate(registration.installing);
34 }));
35 }
36
37 function onUpdate(sw) {
31 swObservation = internals.observeGC(sw); 38 swObservation = internals.observeGC(sw);
32 sw.addEventListener('statechange', onStateChange); 39 sw.addEventListener('statechange', onStateChange);
33 } 40 }
34 41
35 function onStateChange(event) { 42 function onStateChange(event) {
36 // Use setTimeout to ensure a fresh stack with no references to the worker. 43 // Use setTimeout to ensure a fresh stack with no references to the worker.
37 switch (event.target.state) { 44 switch (event.target.state) {
38 case 'activated': 45 case 'activated':
39 setTimeout(unregister, 0); 46 setTimeout(unregister, 0);
40 break; 47 break;
(...skipping 14 matching lines...) Expand all
55 }); 62 });
56 } 63 }
57 64
58 function finish() 65 function finish()
59 { 66 {
60 gc(); 67 gc();
61 shouldBeTrue('swObservation.wasCollected'); 68 shouldBeTrue('swObservation.wasCollected');
62 finishJSTest(); 69 finishJSTest();
63 } 70 }
64 </script> 71 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698