| Index: chrome/test/data/notifications/notification_test_utils.js
|
| diff --git a/chrome/test/data/notifications/notification_test_utils.js b/chrome/test/data/notifications/notification_test_utils.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..464238c1dd1769069483ef93abdfd58a3e3b0051
|
| --- /dev/null
|
| +++ b/chrome/test/data/notifications/notification_test_utils.js
|
| @@ -0,0 +1,46 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +// Returns a promise that will be resolved with an activated Service
|
| +// Worker, or rejects when the Service Worker could not be started. There
|
| +// will be a message port to and from the worker in |messagePort|.
|
| +function GetActivatedServiceWorker(script, scope) {
|
| + return navigator.serviceWorker.getRegistration(scope)
|
| + .then(function(registration) {
|
| + // Unregister any existing Service Worker.
|
| + if (registration)
|
| + return registration.unregister();
|
| + }).then(function() {
|
| + // Register the Service Worker again.
|
| + return navigator.serviceWorker.register(script, { scope: scope });
|
| + }).then(function(registration) {
|
| + if (registration.active) {
|
| + return registration;
|
| + } else if (registration.waiting || registration.installing) {
|
| + var worker = registration.waiting || registration.installing;
|
| + return new Promise(function(resolve) {
|
| + worker.addEventListener('statechange', function () {
|
| + if (worker.state === 'activated')
|
| + resolve(registration);
|
| + });
|
| + });
|
| + } else {
|
| + return Promise.reject('Service Worker in invalid state.');
|
| + }
|
| + }).then(function(registration) {
|
| + return new Promise(function(resolve) {
|
| + var channel = new MessageChannel();
|
| + channel.port1.addEventListener('message', function(event) {
|
| + if (event.data == 'ready')
|
| + resolve(registration);
|
| + });
|
| +
|
| + registration.active.postMessage(channel.port2,
|
| + [ channel.port2 ]);
|
| +
|
| + messagePort = channel.port1;
|
| + messagePort.start();
|
| + });
|
| + });
|
| +}
|
|
|