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

Unified Diff: third_party/WebKit/Source/devtools/front_end/resources/ServiceWorkersView.js

Issue 2466123002: DevTools: reformat front-end code to match chromium style. (Closed)
Patch Set: all done 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: third_party/WebKit/Source/devtools/front_end/resources/ServiceWorkersView.js
diff --git a/third_party/WebKit/Source/devtools/front_end/resources/ServiceWorkersView.js b/third_party/WebKit/Source/devtools/front_end/resources/ServiceWorkersView.js
index e45533ea44fd4afdd349afc8f2a10d71e834246f..8927fde39a32de1bf038f433f78c56d234d6ff20 100644
--- a/third_party/WebKit/Source/devtools/front_end/resources/ServiceWorkersView.js
+++ b/third_party/WebKit/Source/devtools/front_end/resources/ServiceWorkersView.js
@@ -1,17 +1,15 @@
// Copyright (c) 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.
-
/**
- * @constructor
- * @extends {WebInspector.VBox}
* @implements {WebInspector.TargetManager.Observer}
+ * @unrestricted
*/
-WebInspector.ServiceWorkersView = function()
-{
- WebInspector.VBox.call(this, true);
+WebInspector.ServiceWorkersView = class extends WebInspector.VBox {
+ constructor() {
+ super(true);
- this._reportView = new WebInspector.ReportView(WebInspector.UIString("Service Workers"));
+ this._reportView = new WebInspector.ReportView(WebInspector.UIString('Service Workers'));
this._reportView.show(this.contentElement);
this._toolbar = this._reportView.createToolbar();
@@ -20,130 +18,134 @@ WebInspector.ServiceWorkersView = function()
this._sections = new Map();
this._toolbar.appendToolbarItem(WebInspector.NetworkConditionsSelector.createOfflineToolbarCheckbox());
- var forceUpdate = new WebInspector.ToolbarCheckbox(WebInspector.UIString("Update on reload"), WebInspector.UIString("Force update Service Worker on page reload"), WebInspector.settings.createSetting("serviceWorkerUpdateOnReload", false));
+ var forceUpdate = new WebInspector.ToolbarCheckbox(
+ WebInspector.UIString('Update on reload'), WebInspector.UIString('Force update Service Worker on page reload'),
+ WebInspector.settings.createSetting('serviceWorkerUpdateOnReload', false));
this._toolbar.appendToolbarItem(forceUpdate);
- var fallbackToNetwork = new WebInspector.ToolbarCheckbox(WebInspector.UIString("Bypass for network"), WebInspector.UIString("Bypass Service Worker and load resources from the network"), WebInspector.settings.createSetting("bypassServiceWorker", false));
+ var fallbackToNetwork = new WebInspector.ToolbarCheckbox(
+ WebInspector.UIString('Bypass for network'),
+ WebInspector.UIString('Bypass Service Worker and load resources from the network'),
+ WebInspector.settings.createSetting('bypassServiceWorker', false));
this._toolbar.appendToolbarItem(fallbackToNetwork);
this._toolbar.appendSpacer();
- this._showAllCheckbox = new WebInspector.ToolbarCheckbox(WebInspector.UIString("Show all"), WebInspector.UIString("Show all Service Workers regardless of the origin"));
- this._showAllCheckbox.inputElement.addEventListener("change", this._updateSectionVisibility.bind(this), false);
+ this._showAllCheckbox = new WebInspector.ToolbarCheckbox(
+ WebInspector.UIString('Show all'), WebInspector.UIString('Show all Service Workers regardless of the origin'));
+ this._showAllCheckbox.inputElement.addEventListener('change', this._updateSectionVisibility.bind(this), false);
this._toolbar.appendToolbarItem(this._showAllCheckbox);
/** @type {!Map<!WebInspector.Target, !Array<!WebInspector.EventTarget.EventDescriptor>>}*/
this._eventListeners = new Map();
WebInspector.targetManager.observeTargets(this);
-};
-
-WebInspector.ServiceWorkersView.prototype = {
- /**
- * @override
- * @param {!WebInspector.Target} target
- */
- targetAdded: function(target)
- {
- if (this._manager || !target.serviceWorkerManager)
- return;
- this._manager = target.serviceWorkerManager;
- this._subTargetsManager = target.subTargetsManager;
- this._securityOriginManager = WebInspector.SecurityOriginManager.fromTarget(target);
-
- for (var registration of this._manager.registrations().values())
- this._updateRegistration(registration);
-
- this._eventListeners.set(target, [
- this._manager.addEventListener(WebInspector.ServiceWorkerManager.Events.RegistrationUpdated, this._registrationUpdated, this),
- this._manager.addEventListener(WebInspector.ServiceWorkerManager.Events.RegistrationDeleted, this._registrationDeleted, this),
- this._manager.addEventListener(WebInspector.ServiceWorkerManager.Events.RegistrationErrorAdded, this._registrationErrorAdded, this),
- this._securityOriginManager.addEventListener(WebInspector.SecurityOriginManager.Events.SecurityOriginAdded, this._updateSectionVisibility, this),
- this._securityOriginManager.addEventListener(WebInspector.SecurityOriginManager.Events.SecurityOriginRemoved, this._updateSectionVisibility, this),
- ]);
- },
-
- /**
- * @override
- * @param {!WebInspector.Target} target
- */
- targetRemoved: function(target)
- {
- if (!this._manager || this._manager !== target.serviceWorkerManager)
- return;
-
- WebInspector.EventTarget.removeEventListeners(this._eventListeners.get(target));
- this._eventListeners.delete(target);
- this._manager = null;
- this._subTargetsManager = null;
- this._securityOriginManager = null;
- },
-
- _updateSectionVisibility: function()
- {
- var securityOrigins = new Set(this._securityOriginManager.securityOrigins());
- for (var section of this._sections.values()) {
- var visible = this._showAllCheckbox.checked() || securityOrigins.has(section._registration.securityOrigin);
- section._section.element.classList.toggle("hidden", !visible);
- }
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _registrationUpdated: function(event)
- {
- var registration = /** @type {!WebInspector.ServiceWorkerRegistration} */ (event.data);
- this._updateRegistration(registration);
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _registrationErrorAdded: function(event)
- {
- var registration = /** @type {!WebInspector.ServiceWorkerRegistration} */ (event.data["registration"]);
- var error = /** @type {!ServiceWorkerAgent.ServiceWorkerErrorMessage} */ (event.data["error"]);
- var section = this._sections.get(registration);
- if (!section)
- return;
- section._addError(error);
- },
-
- /**
- * @param {!WebInspector.ServiceWorkerRegistration} registration
- */
- _updateRegistration: function(registration)
- {
- var section = this._sections.get(registration);
- if (!section) {
- section = new WebInspector.ServiceWorkersView.Section(this._manager, this._subTargetsManager, this._reportView.appendSection(""), registration);
- this._sections.set(registration, section);
- }
- this._updateSectionVisibility();
- section._scheduleUpdate();
- },
-
- /**
- * @param {!WebInspector.Event} event
- */
- _registrationDeleted: function(event)
- {
- var registration = /** @type {!WebInspector.ServiceWorkerRegistration} */ (event.data);
- var section = this._sections.get(registration);
- if (section)
- section._section.remove();
- this._sections.delete(registration);
- },
-
- __proto__: WebInspector.VBox.prototype
+ }
+
+ /**
+ * @override
+ * @param {!WebInspector.Target} target
+ */
+ targetAdded(target) {
+ if (this._manager || !target.serviceWorkerManager)
+ return;
+ this._manager = target.serviceWorkerManager;
+ this._subTargetsManager = target.subTargetsManager;
+ this._securityOriginManager = WebInspector.SecurityOriginManager.fromTarget(target);
+
+ for (var registration of this._manager.registrations().values())
+ this._updateRegistration(registration);
+
+ this._eventListeners.set(target, [
+ this._manager.addEventListener(
+ WebInspector.ServiceWorkerManager.Events.RegistrationUpdated, this._registrationUpdated, this),
+ this._manager.addEventListener(
+ WebInspector.ServiceWorkerManager.Events.RegistrationDeleted, this._registrationDeleted, this),
+ this._manager.addEventListener(
+ WebInspector.ServiceWorkerManager.Events.RegistrationErrorAdded, this._registrationErrorAdded, this),
+ this._securityOriginManager.addEventListener(
+ WebInspector.SecurityOriginManager.Events.SecurityOriginAdded, this._updateSectionVisibility, this),
+ this._securityOriginManager.addEventListener(
+ WebInspector.SecurityOriginManager.Events.SecurityOriginRemoved, this._updateSectionVisibility, this),
+ ]);
+ }
+
+ /**
+ * @override
+ * @param {!WebInspector.Target} target
+ */
+ targetRemoved(target) {
+ if (!this._manager || this._manager !== target.serviceWorkerManager)
+ return;
+
+ WebInspector.EventTarget.removeEventListeners(this._eventListeners.get(target));
+ this._eventListeners.delete(target);
+ this._manager = null;
+ this._subTargetsManager = null;
+ this._securityOriginManager = null;
+ }
+
+ _updateSectionVisibility() {
+ var securityOrigins = new Set(this._securityOriginManager.securityOrigins());
+ for (var section of this._sections.values()) {
+ var visible = this._showAllCheckbox.checked() || securityOrigins.has(section._registration.securityOrigin);
+ section._section.element.classList.toggle('hidden', !visible);
+ }
+ }
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _registrationUpdated(event) {
+ var registration = /** @type {!WebInspector.ServiceWorkerRegistration} */ (event.data);
+ this._updateRegistration(registration);
+ }
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _registrationErrorAdded(event) {
+ var registration = /** @type {!WebInspector.ServiceWorkerRegistration} */ (event.data['registration']);
+ var error = /** @type {!ServiceWorkerAgent.ServiceWorkerErrorMessage} */ (event.data['error']);
+ var section = this._sections.get(registration);
+ if (!section)
+ return;
+ section._addError(error);
+ }
+
+ /**
+ * @param {!WebInspector.ServiceWorkerRegistration} registration
+ */
+ _updateRegistration(registration) {
+ var section = this._sections.get(registration);
+ if (!section) {
+ section = new WebInspector.ServiceWorkersView.Section(
+ this._manager, this._subTargetsManager, this._reportView.appendSection(''), registration);
+ this._sections.set(registration, section);
+ }
+ this._updateSectionVisibility();
+ section._scheduleUpdate();
+ }
+
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ _registrationDeleted(event) {
+ var registration = /** @type {!WebInspector.ServiceWorkerRegistration} */ (event.data);
+ var section = this._sections.get(registration);
+ if (section)
+ section._section.remove();
+ this._sections.delete(registration);
+ }
};
/**
- * @constructor
- * @param {!WebInspector.ServiceWorkerManager} manager
- * @param {!WebInspector.SubTargetsManager} subTargetsManager
- * @param {!WebInspector.ReportView.Section} section
- * @param {!WebInspector.ServiceWorkerRegistration} registration
+ * @unrestricted
*/
-WebInspector.ServiceWorkersView.Section = function(manager, subTargetsManager, section, registration)
-{
+WebInspector.ServiceWorkersView.Section = class {
+ /**
+ * @param {!WebInspector.ServiceWorkerManager} manager
+ * @param {!WebInspector.SubTargetsManager} subTargetsManager
+ * @param {!WebInspector.ReportView.Section} section
+ * @param {!WebInspector.ServiceWorkerRegistration} registration
+ */
+ constructor(manager, subTargetsManager, section, registration) {
this._manager = manager;
this._subTargetsManager = subTargetsManager;
this._section = section;
@@ -151,286 +153,279 @@ WebInspector.ServiceWorkersView.Section = function(manager, subTargetsManager, s
this._toolbar = section.createToolbar();
this._toolbar.renderAsLinks();
- this._updateButton = new WebInspector.ToolbarButton(WebInspector.UIString("Update"), undefined, WebInspector.UIString("Update"));
- this._updateButton.addEventListener("click", this._updateButtonClicked.bind(this));
+ this._updateButton =
+ new WebInspector.ToolbarButton(WebInspector.UIString('Update'), undefined, WebInspector.UIString('Update'));
+ this._updateButton.addEventListener('click', this._updateButtonClicked.bind(this));
this._toolbar.appendToolbarItem(this._updateButton);
- this._pushButton = new WebInspector.ToolbarButton(WebInspector.UIString("Emulate push event"), undefined, WebInspector.UIString("Push"));
- this._pushButton.addEventListener("click", this._pushButtonClicked.bind(this));
+ this._pushButton = new WebInspector.ToolbarButton(
+ WebInspector.UIString('Emulate push event'), undefined, WebInspector.UIString('Push'));
+ this._pushButton.addEventListener('click', this._pushButtonClicked.bind(this));
this._toolbar.appendToolbarItem(this._pushButton);
- this._syncButton = new WebInspector.ToolbarButton(WebInspector.UIString("Emulate background sync event"), undefined, WebInspector.UIString("Sync"));
- this._syncButton.addEventListener("click", this._syncButtonClicked.bind(this));
+ this._syncButton = new WebInspector.ToolbarButton(
+ WebInspector.UIString('Emulate background sync event'), undefined, WebInspector.UIString('Sync'));
+ this._syncButton.addEventListener('click', this._syncButtonClicked.bind(this));
this._toolbar.appendToolbarItem(this._syncButton);
- this._deleteButton = new WebInspector.ToolbarButton(WebInspector.UIString("Unregister service worker"), undefined, WebInspector.UIString("Unregister"));
- this._deleteButton.addEventListener("click", this._unregisterButtonClicked.bind(this));
+ this._deleteButton = new WebInspector.ToolbarButton(
+ WebInspector.UIString('Unregister service worker'), undefined, WebInspector.UIString('Unregister'));
+ this._deleteButton.addEventListener('click', this._unregisterButtonClicked.bind(this));
this._toolbar.appendToolbarItem(this._deleteButton);
// Preserve the order.
- this._section.appendField(WebInspector.UIString("Source"));
- this._section.appendField(WebInspector.UIString("Status"));
- this._section.appendField(WebInspector.UIString("Clients"));
- this._section.appendField(WebInspector.UIString("Errors"));
+ this._section.appendField(WebInspector.UIString('Source'));
+ this._section.appendField(WebInspector.UIString('Status'));
+ this._section.appendField(WebInspector.UIString('Clients'));
+ this._section.appendField(WebInspector.UIString('Errors'));
this._errorsList = this._wrapWidget(this._section.appendRow());
- this._errorsList.classList.add("service-worker-error-stack", "monospace", "hidden");
+ this._errorsList.classList.add('service-worker-error-stack', 'monospace', 'hidden');
this._linkifier = new WebInspector.Linkifier();
/** @type {!Map<string, !WebInspector.TargetInfo>} */
this._clientInfoCache = new Map();
for (var error of registration.errors)
- this._addError(error);
+ this._addError(error);
this._throttler = new WebInspector.Throttler(500);
-};
-
-WebInspector.ServiceWorkersView.Section.prototype = {
- _scheduleUpdate: function()
- {
- if (WebInspector.ServiceWorkersView._noThrottle) {
- this._update();
- return;
- }
- this._throttler.schedule(this._update.bind(this));
- },
-
- /**
- * @param {string} versionId
- * @return {?WebInspector.Target}
- */
- _targetForVersionId: function(versionId)
- {
- var version = this._manager.findVersion(versionId);
- if (!version || !version.targetId)
- return null;
- return this._subTargetsManager.targetForId(version.targetId);
- },
-
- /**
- * @return {!Promise}
- */
- _update: function()
- {
- var fingerprint = this._registration.fingerprint();
- if (fingerprint === this._fingerprint)
- return Promise.resolve();
- this._fingerprint = fingerprint;
-
- this._toolbar.setEnabled(!this._registration.isDeleted);
-
- var versions = this._registration.versionsByMode();
- var title = this._registration.isDeleted ? WebInspector.UIString("%s - deleted", this._registration.scopeURL) : this._registration.scopeURL;
- this._section.setTitle(title);
-
- var active = versions.get(WebInspector.ServiceWorkerVersion.Modes.Active);
- var waiting = versions.get(WebInspector.ServiceWorkerVersion.Modes.Waiting);
- var installing = versions.get(WebInspector.ServiceWorkerVersion.Modes.Installing);
-
- var statusValue = this._wrapWidget(this._section.appendField(WebInspector.UIString("Status")));
- statusValue.removeChildren();
- var versionsStack = statusValue.createChild("div", "service-worker-version-stack");
- versionsStack.createChild("div", "service-worker-version-stack-bar");
-
- if (active) {
- var scriptElement = this._section.appendField(WebInspector.UIString("Source"));
- scriptElement.removeChildren();
- var fileName = WebInspector.ParsedURL.extractName(active.scriptURL);
- scriptElement.appendChild(WebInspector.linkifyURLAsNode(active.scriptURL, fileName));
- scriptElement.createChild("div", "report-field-value-subtitle").textContent = WebInspector.UIString("Received %s", new Date(active.scriptResponseTime * 1000).toLocaleString());
-
- var activeEntry = versionsStack.createChild("div", "service-worker-version");
- activeEntry.createChild("div", "service-worker-active-circle");
- activeEntry.createChild("span").textContent = WebInspector.UIString("#%s activated and is %s", active.id, active.runningStatus);
-
- if (active.isRunning() || active.isStarting()) {
- createLink(activeEntry, WebInspector.UIString("stop"), this._stopButtonClicked.bind(this, active.id));
- if (!this._targetForVersionId(active.id))
- createLink(activeEntry, WebInspector.UIString("inspect"), this._inspectButtonClicked.bind(this, active.id));
- } else if (active.isStartable()) {
- createLink(activeEntry, WebInspector.UIString("start"), this._startButtonClicked.bind(this));
- }
-
- var clientsList = this._wrapWidget(this._section.appendField(WebInspector.UIString("Clients")));
- clientsList.removeChildren();
- this._section.setFieldVisible(WebInspector.UIString("Clients"), active.controlledClients.length);
- for (var client of active.controlledClients) {
- var clientLabelText = clientsList.createChild("div", "service-worker-client");
- if (this._clientInfoCache.has(client))
- this._updateClientInfo(clientLabelText, /** @type {!WebInspector.TargetInfo} */(this._clientInfoCache.get(client)));
- this._subTargetsManager.getTargetInfo(client, this._onClientInfo.bind(this, clientLabelText));
- }
- }
-
- if (waiting) {
- var waitingEntry = versionsStack.createChild("div", "service-worker-version");
- waitingEntry.createChild("div", "service-worker-waiting-circle");
- waitingEntry.createChild("span").textContent = WebInspector.UIString("#%s waiting to activate", waiting.id);
- createLink(waitingEntry, WebInspector.UIString("skipWaiting"), this._skipButtonClicked.bind(this));
- waitingEntry.createChild("div", "service-worker-subtitle").textContent = new Date(waiting.scriptResponseTime * 1000).toLocaleString();
- if (!this._targetForVersionId(waiting.id) && (waiting.isRunning() || waiting.isStarting()))
- createLink(waitingEntry, WebInspector.UIString("inspect"), this._inspectButtonClicked.bind(this, waiting.id));
- }
- if (installing) {
- var installingEntry = versionsStack.createChild("div", "service-worker-version");
- installingEntry.createChild("div", "service-worker-installing-circle");
- installingEntry.createChild("span").textContent = WebInspector.UIString("#%s installing", installing.id);
- installingEntry.createChild("div", "service-worker-subtitle").textContent = new Date(installing.scriptResponseTime * 1000).toLocaleString();
- if (!this._targetForVersionId(installing.id) && (installing.isRunning() || installing.isStarting()))
- createLink(installingEntry, WebInspector.UIString("inspect"), this._inspectButtonClicked.bind(this, installing.id));
- }
-
- this._section.setFieldVisible(WebInspector.UIString("Errors"), !!this._registration.errors.length);
- var errorsValue = this._wrapWidget(this._section.appendField(WebInspector.UIString("Errors")));
- var errorsLabel = createLabel(String(this._registration.errors.length), "error-icon");
- errorsLabel.classList.add("service-worker-errors-label");
- errorsValue.appendChild(errorsLabel);
- this._moreButton = createLink(errorsValue, this._errorsList.classList.contains("hidden") ? WebInspector.UIString("details") : WebInspector.UIString("hide"), this._moreErrorsButtonClicked.bind(this));
- createLink(errorsValue, WebInspector.UIString("clear"), this._clearErrorsButtonClicked.bind(this));
-
- /**
- * @param {!Element} parent
- * @param {string} title
- * @param {function()} listener
- * @return {!Element}
- */
- function createLink(parent, title, listener)
- {
- var span = parent.createChild("span", "link");
- span.textContent = title;
- span.addEventListener("click", listener, false);
- return span;
- }
- return Promise.resolve();
- },
-
- /**
- * @param {!ServiceWorkerAgent.ServiceWorkerErrorMessage} error
- */
- _addError: function(error)
- {
- var target = this._targetForVersionId(error.versionId);
- var message = this._errorsList.createChild("div");
- if (this._errorsList.childElementCount > 100)
- this._errorsList.firstElementChild.remove();
- message.appendChild(this._linkifier.linkifyScriptLocation(target, null, error.sourceURL, error.lineNumber));
- message.appendChild(createLabel("#" + error.versionId + ": " + error.errorMessage, "error-icon"));
- },
-
- _unregisterButtonClicked: function()
- {
- this._manager.deleteRegistration(this._registration.id);
- },
-
- _updateButtonClicked: function()
- {
- this._manager.updateRegistration(this._registration.id);
- },
-
- _pushButtonClicked: function()
- {
- var data = "Test push message from DevTools.";
- this._manager.deliverPushMessage(this._registration.id, data);
- },
-
- _syncButtonClicked: function()
- {
- var tag = "test-tag-from-devtools";
- var lastChance = true;
- this._manager.dispatchSyncEvent(this._registration.id, tag, lastChance);
- },
-
- /**
- * @param {!Element} element
- * @param {?WebInspector.TargetInfo} targetInfo
- */
- _onClientInfo: function(element, targetInfo)
- {
- if (!targetInfo)
- return;
- this._clientInfoCache.set(targetInfo.id, targetInfo);
- this._updateClientInfo(element, targetInfo);
- },
-
- /**
- * @param {!Element} element
- * @param {!WebInspector.TargetInfo} targetInfo
- */
- _updateClientInfo: function(element, targetInfo)
- {
- if (!targetInfo.canActivate) {
- element.createTextChild(targetInfo.title);
- return;
- }
- element.removeChildren();
- element.createTextChild(targetInfo.url);
- var focusLabel = element.createChild("label", "link");
- focusLabel.createTextChild("focus");
- focusLabel.addEventListener("click", this._activateTarget.bind(this, targetInfo.id), true);
- },
+ }
- /**
- * @param {string} targetId
- */
- _activateTarget: function(targetId)
- {
- this._subTargetsManager.activateTarget(targetId);
- },
-
- _startButtonClicked: function()
- {
- this._manager.startWorker(this._registration.scopeURL);
- },
-
- _skipButtonClicked: function()
- {
- this._manager.skipWaiting(this._registration.scopeURL);
- },
+ _scheduleUpdate() {
+ if (WebInspector.ServiceWorkersView._noThrottle) {
+ this._update();
+ return;
+ }
+ this._throttler.schedule(this._update.bind(this));
+ }
+
+ /**
+ * @param {string} versionId
+ * @return {?WebInspector.Target}
+ */
+ _targetForVersionId(versionId) {
+ var version = this._manager.findVersion(versionId);
+ if (!version || !version.targetId)
+ return null;
+ return this._subTargetsManager.targetForId(version.targetId);
+ }
+
+ /**
+ * @return {!Promise}
+ */
+ _update() {
+ var fingerprint = this._registration.fingerprint();
+ if (fingerprint === this._fingerprint)
+ return Promise.resolve();
+ this._fingerprint = fingerprint;
+
+ this._toolbar.setEnabled(!this._registration.isDeleted);
+
+ var versions = this._registration.versionsByMode();
+ var title = this._registration.isDeleted ? WebInspector.UIString('%s - deleted', this._registration.scopeURL) :
+ this._registration.scopeURL;
+ this._section.setTitle(title);
+
+ var active = versions.get(WebInspector.ServiceWorkerVersion.Modes.Active);
+ var waiting = versions.get(WebInspector.ServiceWorkerVersion.Modes.Waiting);
+ var installing = versions.get(WebInspector.ServiceWorkerVersion.Modes.Installing);
+
+ var statusValue = this._wrapWidget(this._section.appendField(WebInspector.UIString('Status')));
+ statusValue.removeChildren();
+ var versionsStack = statusValue.createChild('div', 'service-worker-version-stack');
+ versionsStack.createChild('div', 'service-worker-version-stack-bar');
+
+ if (active) {
+ var scriptElement = this._section.appendField(WebInspector.UIString('Source'));
+ scriptElement.removeChildren();
+ var fileName = WebInspector.ParsedURL.extractName(active.scriptURL);
+ scriptElement.appendChild(WebInspector.linkifyURLAsNode(active.scriptURL, fileName));
+ scriptElement.createChild('div', 'report-field-value-subtitle').textContent =
+ WebInspector.UIString('Received %s', new Date(active.scriptResponseTime * 1000).toLocaleString());
+
+ var activeEntry = versionsStack.createChild('div', 'service-worker-version');
+ activeEntry.createChild('div', 'service-worker-active-circle');
+ activeEntry.createChild('span').textContent =
+ WebInspector.UIString('#%s activated and is %s', active.id, active.runningStatus);
+
+ if (active.isRunning() || active.isStarting()) {
+ createLink(activeEntry, WebInspector.UIString('stop'), this._stopButtonClicked.bind(this, active.id));
+ if (!this._targetForVersionId(active.id))
+ createLink(activeEntry, WebInspector.UIString('inspect'), this._inspectButtonClicked.bind(this, active.id));
+ } else if (active.isStartable()) {
+ createLink(activeEntry, WebInspector.UIString('start'), this._startButtonClicked.bind(this));
+ }
+
+ var clientsList = this._wrapWidget(this._section.appendField(WebInspector.UIString('Clients')));
+ clientsList.removeChildren();
+ this._section.setFieldVisible(WebInspector.UIString('Clients'), active.controlledClients.length);
+ for (var client of active.controlledClients) {
+ var clientLabelText = clientsList.createChild('div', 'service-worker-client');
+ if (this._clientInfoCache.has(client))
+ this._updateClientInfo(
+ clientLabelText, /** @type {!WebInspector.TargetInfo} */ (this._clientInfoCache.get(client)));
+ this._subTargetsManager.getTargetInfo(client, this._onClientInfo.bind(this, clientLabelText));
+ }
+ }
- /**
- * @param {string} versionId
- */
- _stopButtonClicked: function(versionId)
- {
- this._manager.stopWorker(versionId);
- },
-
- _moreErrorsButtonClicked: function()
- {
- var newVisible = this._errorsList.classList.contains("hidden");
- this._moreButton.textContent = newVisible ? WebInspector.UIString("hide") : WebInspector.UIString("details");
- this._errorsList.classList.toggle("hidden", !newVisible);
- },
-
- _clearErrorsButtonClicked: function()
- {
- this._errorsList.removeChildren();
- this._registration.clearErrors();
- this._scheduleUpdate();
- if (!this._errorsList.classList.contains("hidden"))
- this._moreErrorsButtonClicked();
- },
+ if (waiting) {
+ var waitingEntry = versionsStack.createChild('div', 'service-worker-version');
+ waitingEntry.createChild('div', 'service-worker-waiting-circle');
+ waitingEntry.createChild('span').textContent = WebInspector.UIString('#%s waiting to activate', waiting.id);
+ createLink(waitingEntry, WebInspector.UIString('skipWaiting'), this._skipButtonClicked.bind(this));
+ waitingEntry.createChild('div', 'service-worker-subtitle').textContent =
+ new Date(waiting.scriptResponseTime * 1000).toLocaleString();
+ if (!this._targetForVersionId(waiting.id) && (waiting.isRunning() || waiting.isStarting()))
+ createLink(waitingEntry, WebInspector.UIString('inspect'), this._inspectButtonClicked.bind(this, waiting.id));
+ }
+ if (installing) {
+ var installingEntry = versionsStack.createChild('div', 'service-worker-version');
+ installingEntry.createChild('div', 'service-worker-installing-circle');
+ installingEntry.createChild('span').textContent = WebInspector.UIString('#%s installing', installing.id);
+ installingEntry.createChild('div', 'service-worker-subtitle').textContent =
+ new Date(installing.scriptResponseTime * 1000).toLocaleString();
+ if (!this._targetForVersionId(installing.id) && (installing.isRunning() || installing.isStarting()))
+ createLink(
+ installingEntry, WebInspector.UIString('inspect'), this._inspectButtonClicked.bind(this, installing.id));
+ }
- /**
- * @param {string} versionId
- */
- _inspectButtonClicked: function(versionId)
- {
- this._manager.inspectWorker(versionId);
- },
+ this._section.setFieldVisible(WebInspector.UIString('Errors'), !!this._registration.errors.length);
+ var errorsValue = this._wrapWidget(this._section.appendField(WebInspector.UIString('Errors')));
+ var errorsLabel = createLabel(String(this._registration.errors.length), 'error-icon');
+ errorsLabel.classList.add('service-worker-errors-label');
+ errorsValue.appendChild(errorsLabel);
+ this._moreButton = createLink(
+ errorsValue, this._errorsList.classList.contains('hidden') ? WebInspector.UIString('details') :
+ WebInspector.UIString('hide'),
+ this._moreErrorsButtonClicked.bind(this));
+ createLink(errorsValue, WebInspector.UIString('clear'), this._clearErrorsButtonClicked.bind(this));
/**
- * @param {!Element} container
+ * @param {!Element} parent
+ * @param {string} title
+ * @param {function()} listener
* @return {!Element}
*/
- _wrapWidget: function(container)
- {
- var shadowRoot = WebInspector.createShadowRootWithCoreStyles(container);
- WebInspector.appendStyle(shadowRoot, "resources/serviceWorkersView.css");
- var contentElement = createElement("div");
- shadowRoot.appendChild(contentElement);
- return contentElement;
- },
-
- _dispose: function()
- {
- this._linkifier.dispose();
- if (this._pendingUpdate)
- clearTimeout(this._pendingUpdate);
+ function createLink(parent, title, listener) {
+ var span = parent.createChild('span', 'link');
+ span.textContent = title;
+ span.addEventListener('click', listener, false);
+ return span;
+ }
+ return Promise.resolve();
+ }
+
+ /**
+ * @param {!ServiceWorkerAgent.ServiceWorkerErrorMessage} error
+ */
+ _addError(error) {
+ var target = this._targetForVersionId(error.versionId);
+ var message = this._errorsList.createChild('div');
+ if (this._errorsList.childElementCount > 100)
+ this._errorsList.firstElementChild.remove();
+ message.appendChild(this._linkifier.linkifyScriptLocation(target, null, error.sourceURL, error.lineNumber));
+ message.appendChild(createLabel('#' + error.versionId + ': ' + error.errorMessage, 'error-icon'));
+ }
+
+ _unregisterButtonClicked() {
+ this._manager.deleteRegistration(this._registration.id);
+ }
+
+ _updateButtonClicked() {
+ this._manager.updateRegistration(this._registration.id);
+ }
+
+ _pushButtonClicked() {
+ var data = 'Test push message from DevTools.';
+ this._manager.deliverPushMessage(this._registration.id, data);
+ }
+
+ _syncButtonClicked() {
+ var tag = 'test-tag-from-devtools';
+ var lastChance = true;
+ this._manager.dispatchSyncEvent(this._registration.id, tag, lastChance);
+ }
+
+ /**
+ * @param {!Element} element
+ * @param {?WebInspector.TargetInfo} targetInfo
+ */
+ _onClientInfo(element, targetInfo) {
+ if (!targetInfo)
+ return;
+ this._clientInfoCache.set(targetInfo.id, targetInfo);
+ this._updateClientInfo(element, targetInfo);
+ }
+
+ /**
+ * @param {!Element} element
+ * @param {!WebInspector.TargetInfo} targetInfo
+ */
+ _updateClientInfo(element, targetInfo) {
+ if (!targetInfo.canActivate) {
+ element.createTextChild(targetInfo.title);
+ return;
}
+ element.removeChildren();
+ element.createTextChild(targetInfo.url);
+ var focusLabel = element.createChild('label', 'link');
+ focusLabel.createTextChild('focus');
+ focusLabel.addEventListener('click', this._activateTarget.bind(this, targetInfo.id), true);
+ }
+
+ /**
+ * @param {string} targetId
+ */
+ _activateTarget(targetId) {
+ this._subTargetsManager.activateTarget(targetId);
+ }
+
+ _startButtonClicked() {
+ this._manager.startWorker(this._registration.scopeURL);
+ }
+
+ _skipButtonClicked() {
+ this._manager.skipWaiting(this._registration.scopeURL);
+ }
+
+ /**
+ * @param {string} versionId
+ */
+ _stopButtonClicked(versionId) {
+ this._manager.stopWorker(versionId);
+ }
+
+ _moreErrorsButtonClicked() {
+ var newVisible = this._errorsList.classList.contains('hidden');
+ this._moreButton.textContent = newVisible ? WebInspector.UIString('hide') : WebInspector.UIString('details');
+ this._errorsList.classList.toggle('hidden', !newVisible);
+ }
+
+ _clearErrorsButtonClicked() {
+ this._errorsList.removeChildren();
+ this._registration.clearErrors();
+ this._scheduleUpdate();
+ if (!this._errorsList.classList.contains('hidden'))
+ this._moreErrorsButtonClicked();
+ }
+
+ /**
+ * @param {string} versionId
+ */
+ _inspectButtonClicked(versionId) {
+ this._manager.inspectWorker(versionId);
+ }
+
+ /**
+ * @param {!Element} container
+ * @return {!Element}
+ */
+ _wrapWidget(container) {
+ var shadowRoot = WebInspector.createShadowRootWithCoreStyles(container);
+ WebInspector.appendStyle(shadowRoot, 'resources/serviceWorkersView.css');
+ var contentElement = createElement('div');
+ shadowRoot.appendChild(contentElement);
+ return contentElement;
+ }
+
+ _dispose() {
+ this._linkifier.dispose();
+ if (this._pendingUpdate)
+ clearTimeout(this._pendingUpdate);
+ }
};

Powered by Google App Engine
This is Rietveld 408576698