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

Side by Side Diff: chrome/test/data/budget_service/budget_test.js

Issue 2452833004: Fix flaky SW registration in PushMessaging/BudgetManager browser tests (Closed)
Patch Set: Rebase Created 4 years, 1 month 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 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 'use strict'; 5 'use strict';
6 6
7 // The ResultQueue is a mechanism for passing messages back to the test 7 // The ResultQueue is a mechanism for passing messages back to the test
8 // framework. 8 // framework.
9 var resultQueue = new ResultQueue(); 9 var resultQueue = new ResultQueue();
10 10
11 // Waits for the given ServiceWorkerRegistration to become ready.
12 // Shim for https://github.com/w3c/ServiceWorker/issues/770.
13 function swRegistrationReady(reg) {
14 return new Promise((resolve, reject) => {
15 if (reg.active) {
16 resolve();
17 return;
18 }
19
20 if (!reg.installing && !reg.waiting) {
21 reject(Error('Install failed'));
22 return;
23 }
24
25 (reg.installing || reg.waiting).addEventListener('statechange', function() {
26 if (this.state == 'redundant') {
27 reject(Error('Install failed'));
28 } else if (this.state == 'activated') {
29 resolve();
30 }
31 });
32 });
33 }
34
11 function registerServiceWorker() { 35 function registerServiceWorker() {
12 // The base dir used to resolve service_worker.js. 36 // The base dir used to resolve service_worker.js.
13 navigator.serviceWorker.register('service_worker.js', {scope: './'}).then( 37 navigator.serviceWorker.register('service_worker.js', {
14 function(swRegistration) { 38 scope: './'
15 sendResultToTest('ok - service worker registered'); 39 }).then(swRegistrationReady).then(() => {
16 }, sendErrorToTest); 40 sendResultToTest('ok - service worker registered');
41 }).catch(sendErrorToTest);
17 } 42 }
18 43
19 // Query for the budget and return the current total. 44 // Query for the budget and return the current total.
20 function documentGetBudget() { 45 function documentGetBudget() {
21 navigator.budget.getBudget().then(function(budget) { 46 navigator.budget.getBudget().then(function(budget) {
22 sendResultToTest("ok - budget returned value of " + budget[0].budgetAt); 47 sendResultToTest("ok - budget returned value of " + budget[0].budgetAt);
23 }, function() { 48 }, function() {
24 sendResultToTest("failed - unable to get budget values"); 49 sendResultToTest("failed - unable to get budget values");
25 }); 50 });
26 } 51 }
(...skipping 26 matching lines...) Expand all
53 } 78 }
54 } 79 }
55 80
56 navigator.serviceWorker.addEventListener('message', function(event) { 81 navigator.serviceWorker.addEventListener('message', function(event) {
57 var message = JSON.parse(event.data); 82 var message = JSON.parse(event.data);
58 if (message.type == 'push') 83 if (message.type == 'push')
59 resultQueue.push(message.data); 84 resultQueue.push(message.data);
60 else 85 else
61 sendResultToTest(message.data); 86 sendResultToTest(message.data);
62 }, false); 87 }, false);
OLDNEW
« no previous file with comments | « chrome/browser/push_messaging/push_messaging_browsertest.cc ('k') | chrome/test/data/budget_service/service_worker.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698