Chromium Code Reviews| Index: telemetry/telemetry/internal/browser/wait_for_serviceworker_registration.js |
| diff --git a/telemetry/telemetry/internal/browser/wait_for_serviceworker_registration.js b/telemetry/telemetry/internal/browser/wait_for_serviceworker_registration.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..20e645233d984d3eadddd5a4a454891160a21239 |
| --- /dev/null |
| +++ b/telemetry/telemetry/internal/browser/wait_for_serviceworker_registration.js |
| @@ -0,0 +1,40 @@ |
| +// Copyright 2017 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. |
| + |
| +'use strict'; |
| + |
| +/** |
| + * @fileoverview This file provides a JavaScript helper function that |
| + * determines whether service worker registration has completed. |
| + */ |
| +(function() { |
| + // Make executing this code idempotent. |
| + if (window.__telemetry_queryServiceWorkerState) { |
| + return; |
| + } |
| + |
| + // These variable is used for detecting and waiting service worker |
|
falken
2017/09/05 02:16:45
"variable is" => "variables are", "waiting" => "wa
|
| + // registration. |
| + let isServiceWorkerRegistered = false; |
| + let isServiceWorkerReady = false; |
| + |
| + // Patch navigator.serviceWorker.register |
|
falken
2017/09/05 02:16:45
I'm not familiar with telemetry style, but probabl
|
| + navigator.serviceWorker.originalRegister = navigator.serviceWorker.register; |
| + navigator.serviceWorker.register = (name, options = {}) => { |
| + isServiceWorkerRegistered = true; |
| + navigator.serviceWorker.originalRegister(name, options); |
| + }; |
| + |
| + navigator.serviceWorker.ready.then( |
| + (registration) => { isServiceWorkerReady = true; }); |
| + |
| + window.__telemetry_queryServiceWorkerState = () => { |
| + // These return string should exactly match strings used in |
| + // ServiceWorkerState, in web_contents.py |
|
falken
2017/09/05 02:16:44
ditto with '.'
|
| + if (!isServiceWorkerRegistered) { |
| + return isServiceWorkerReady ? 'unknown state' : 'not registered'; |
|
falken
2017/09/05 02:16:44
maybe 'unknown state' => 'error: ready but registe
|
| + } |
| + return isServiceWorkerReady ? 'activated' : 'installing'; |
|
falken
2017/09/05 02:16:44
'activated' is slightly misleading since when .rea
|
| + }; |
| +})(); |