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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/budget_service/budget_test.js
diff --git a/chrome/test/data/budget_service/budget_test.js b/chrome/test/data/budget_service/budget_test.js
index 72bd50e8019961478c2f42a431181df2ceceb316..bfa587538f10a5a63c32a3323d0dff3cb9f936dd 100644
--- a/chrome/test/data/budget_service/budget_test.js
+++ b/chrome/test/data/budget_service/budget_test.js
@@ -8,12 +8,37 @@
// framework.
var resultQueue = new ResultQueue();
+// Waits for the given ServiceWorkerRegistration to become ready.
+// Shim for https://github.com/w3c/ServiceWorker/issues/770.
+function swRegistrationReady(reg) {
+ return new Promise((resolve, reject) => {
+ if (reg.active) {
+ resolve();
+ return;
+ }
+
+ if (!reg.installing && !reg.waiting) {
+ reject(Error('Install failed'));
+ return;
+ }
+
+ (reg.installing || reg.waiting).addEventListener('statechange', function() {
+ if (this.state == 'redundant') {
+ reject(Error('Install failed'));
+ } else if (this.state == 'activated') {
+ resolve();
+ }
+ });
+ });
+}
+
function registerServiceWorker() {
// The base dir used to resolve service_worker.js.
- navigator.serviceWorker.register('service_worker.js', {scope: './'}).then(
- function(swRegistration) {
- sendResultToTest('ok - service worker registered');
- }, sendErrorToTest);
+ navigator.serviceWorker.register('service_worker.js', {
+ scope: './'
+ }).then(swRegistrationReady).then(() => {
+ sendResultToTest('ok - service worker registered');
+ }).catch(sendErrorToTest);
}
// Query for the budget and return the current total.
« 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