Index: third_party/WebKit/Source/devtools/front_end/components/HandlerRegistry.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/components/HandlerRegistry.js b/third_party/WebKit/Source/devtools/front_end/components/HandlerRegistry.js |
index 95064e3c5cbff59b2d4c42de35214b8165db334e..3203baac29375a9380bfc2b6fa8f0c5a04cd1f7d 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/components/HandlerRegistry.js |
+++ b/third_party/WebKit/Source/devtools/front_end/components/HandlerRegistry.js |
@@ -27,297 +27,273 @@ |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
- |
/** |
- * @constructor |
- * @extends {WebInspector.Object} |
+ * @unrestricted |
*/ |
-WebInspector.HandlerRegistry = function(setting) |
-{ |
- WebInspector.Object.call(this); |
+WebInspector.HandlerRegistry = class extends WebInspector.Object { |
+ constructor(setting) { |
+ super(); |
this._handlers = {}; |
this._setting = setting; |
this._activeHandler = this._setting.get(); |
-}; |
+ } |
+ |
+ get handlerNames() { |
+ return Object.getOwnPropertyNames(this._handlers); |
+ } |
+ |
+ get activeHandler() { |
+ return this._activeHandler; |
+ } |
+ |
+ set activeHandler(value) { |
+ this._activeHandler = value; |
+ this._setting.set(value); |
+ } |
+ |
+ /** |
+ * @param {!Object} data |
+ * @return {boolean} |
+ */ |
+ dispatch(data) { |
+ return this.dispatchToHandler(this._activeHandler, data); |
+ } |
+ |
+ /** |
+ * @param {string} name |
+ * @param {!Object} data |
+ * @return {boolean} |
+ */ |
+ dispatchToHandler(name, data) { |
+ var handler = this._handlers[name]; |
+ var result = handler && handler(data); |
+ return !!result; |
+ } |
+ |
+ registerHandler(name, handler) { |
+ this._handlers[name] = handler; |
+ this.dispatchEventToListeners(WebInspector.HandlerRegistry.Events.HandlersUpdated); |
+ } |
+ |
+ unregisterHandler(name) { |
+ delete this._handlers[name]; |
+ this.dispatchEventToListeners(WebInspector.HandlerRegistry.Events.HandlersUpdated); |
+ } |
+ |
+ /** |
+ * @param {string} url |
+ */ |
+ _openInNewTab(url) { |
+ InspectorFrontendHost.openInNewTab(url); |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.ContextMenu} contextMenu |
+ * @param {!Object} target |
+ */ |
+ _appendContentProviderItems(contextMenu, target) { |
+ if (!(target instanceof WebInspector.UISourceCode || target instanceof WebInspector.Resource || |
+ target instanceof WebInspector.NetworkRequest)) |
+ return; |
+ var contentProvider = /** @type {!WebInspector.ContentProvider} */ (target); |
+ if (!contentProvider.contentURL()) |
+ return; |
+ |
+ contextMenu.appendItem( |
+ WebInspector.openLinkExternallyLabel(), this._openInNewTab.bind(this, contentProvider.contentURL())); |
+ // Skip 0th handler, as it's 'Use default panel' one. |
+ for (var i = 1; i < this.handlerNames.length; ++i) { |
+ var handler = this.handlerNames[i]; |
+ contextMenu.appendItem( |
+ WebInspector.UIString.capitalize('Open ^using %s', handler), |
+ this.dispatchToHandler.bind(this, handler, {url: contentProvider.contentURL()})); |
+ } |
-WebInspector.HandlerRegistry.prototype = { |
- get handlerNames() |
- { |
- return Object.getOwnPropertyNames(this._handlers); |
- }, |
+ if (!contentProvider.contentURL() || contentProvider instanceof WebInspector.NetworkRequest) |
+ return; |
- get activeHandler() |
- { |
- return this._activeHandler; |
- }, |
+ contextMenu.appendItem( |
+ WebInspector.copyLinkAddressLabel(), |
+ InspectorFrontendHost.copyText.bind(InspectorFrontendHost, contentProvider.contentURL())); |
- set activeHandler(value) |
- { |
- this._activeHandler = value; |
- this._setting.set(value); |
- }, |
+ if (!contentProvider.contentType().isDocumentOrScriptOrStyleSheet()) |
+ return; |
/** |
- * @param {!Object} data |
- * @return {boolean} |
+ * @param {boolean} forceSaveAs |
+ * @param {?string} content |
*/ |
- dispatch: function(data) |
- { |
- return this.dispatchToHandler(this._activeHandler, data); |
- }, |
+ function doSave(forceSaveAs, content) { |
+ var url = contentProvider.contentURL(); |
+ WebInspector.fileManager.save(url, /** @type {string} */ (content), forceSaveAs); |
+ WebInspector.fileManager.close(url); |
+ } |
/** |
- * @param {string} name |
- * @param {!Object} data |
- * @return {boolean} |
+ * @param {boolean} forceSaveAs |
*/ |
- dispatchToHandler: function(name, data) |
- { |
- var handler = this._handlers[name]; |
- var result = handler && handler(data); |
- return !!result; |
- }, |
- |
- registerHandler: function(name, handler) |
- { |
- this._handlers[name] = handler; |
- this.dispatchEventToListeners(WebInspector.HandlerRegistry.Events.HandlersUpdated); |
- }, |
- |
- unregisterHandler: function(name) |
- { |
- delete this._handlers[name]; |
- this.dispatchEventToListeners(WebInspector.HandlerRegistry.Events.HandlersUpdated); |
- }, |
+ function save(forceSaveAs) { |
+ if (contentProvider instanceof WebInspector.UISourceCode) { |
+ var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (contentProvider); |
+ if (forceSaveAs) |
+ uiSourceCode.saveAs(); |
+ else |
+ uiSourceCode.commitWorkingCopy(); |
+ return; |
+ } |
+ contentProvider.requestContent().then(doSave.bind(null, forceSaveAs)); |
+ } |
- /** |
- * @param {string} url |
- */ |
- _openInNewTab: function(url) |
- { |
- InspectorFrontendHost.openInNewTab(url); |
- }, |
+ contextMenu.appendSeparator(); |
+ contextMenu.appendItem(WebInspector.UIString('Save'), save.bind(null, false)); |
- /** |
- * @param {!WebInspector.ContextMenu} contextMenu |
- * @param {!Object} target |
- */ |
- _appendContentProviderItems: function(contextMenu, target) |
- { |
- if (!(target instanceof WebInspector.UISourceCode || target instanceof WebInspector.Resource || target instanceof WebInspector.NetworkRequest)) |
- return; |
- var contentProvider = /** @type {!WebInspector.ContentProvider} */ (target); |
- if (!contentProvider.contentURL()) |
- return; |
- |
- contextMenu.appendItem(WebInspector.openLinkExternallyLabel(), this._openInNewTab.bind(this, contentProvider.contentURL())); |
- // Skip 0th handler, as it's 'Use default panel' one. |
- for (var i = 1; i < this.handlerNames.length; ++i) { |
- var handler = this.handlerNames[i]; |
- contextMenu.appendItem(WebInspector.UIString.capitalize("Open ^using %s", handler), |
- this.dispatchToHandler.bind(this, handler, { url: contentProvider.contentURL() })); |
- } |
- |
- if (!contentProvider.contentURL() || contentProvider instanceof WebInspector.NetworkRequest) |
- return; |
- |
- contextMenu.appendItem(WebInspector.copyLinkAddressLabel(), InspectorFrontendHost.copyText.bind(InspectorFrontendHost, contentProvider.contentURL())); |
- |
- if (!contentProvider.contentType().isDocumentOrScriptOrStyleSheet()) |
- return; |
- |
- /** |
- * @param {boolean} forceSaveAs |
- * @param {?string} content |
- */ |
- function doSave(forceSaveAs, content) |
- { |
- var url = contentProvider.contentURL(); |
- WebInspector.fileManager.save(url, /** @type {string} */ (content), forceSaveAs); |
- WebInspector.fileManager.close(url); |
- } |
- |
- /** |
- * @param {boolean} forceSaveAs |
- */ |
- function save(forceSaveAs) |
- { |
- if (contentProvider instanceof WebInspector.UISourceCode) { |
- var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (contentProvider); |
- if (forceSaveAs) |
- uiSourceCode.saveAs(); |
- else |
- uiSourceCode.commitWorkingCopy(); |
- return; |
- } |
- contentProvider.requestContent().then(doSave.bind(null, forceSaveAs)); |
- } |
- |
- contextMenu.appendSeparator(); |
- contextMenu.appendItem(WebInspector.UIString("Save"), save.bind(null, false)); |
- |
- if (contentProvider instanceof WebInspector.UISourceCode) { |
- var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (contentProvider); |
- if (uiSourceCode.project().type() !== WebInspector.projectTypes.FileSystem && uiSourceCode.project().type() !== WebInspector.projectTypes.Snippets) |
- contextMenu.appendItem(WebInspector.UIString.capitalize("Save ^as..."), save.bind(null, true)); |
- } |
- }, |
+ if (contentProvider instanceof WebInspector.UISourceCode) { |
+ var uiSourceCode = /** @type {!WebInspector.UISourceCode} */ (contentProvider); |
+ if (uiSourceCode.project().type() !== WebInspector.projectTypes.FileSystem && |
+ uiSourceCode.project().type() !== WebInspector.projectTypes.Snippets) |
+ contextMenu.appendItem(WebInspector.UIString.capitalize('Save ^as...'), save.bind(null, true)); |
+ } |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.ContextMenu} contextMenu |
+ * @param {!Object} target |
+ */ |
+ _appendHrefItems(contextMenu, target) { |
+ if (!(target instanceof Node)) |
+ return; |
+ var targetNode = /** @type {!Node} */ (target); |
+ |
+ var anchorElement = targetNode.enclosingNodeOrSelfWithClass('webkit-html-resource-link') || |
+ targetNode.enclosingNodeOrSelfWithClass('webkit-html-external-link'); |
+ if (!anchorElement) |
+ return; |
+ |
+ var uiLocation = WebInspector.Linkifier.uiLocationByAnchor(anchorElement); |
+ var resourceURL = uiLocation ? uiLocation.uiSourceCode.contentURL() : anchorElement.href; |
+ var uiSourceCode = uiLocation ? |
+ uiLocation.uiSourceCode : |
+ (resourceURL ? WebInspector.networkMapping.uiSourceCodeForURLForAnyTarget(resourceURL) : null); |
+ function open() { |
+ WebInspector.Revealer.reveal(uiSourceCode); |
+ } |
+ if (uiSourceCode) |
+ contextMenu.appendItem('Open', open); |
+ |
+ if (!resourceURL) |
+ return; |
+ // Add resource-related actions. |
+ contextMenu.appendItem(WebInspector.openLinkExternallyLabel(), this._openInNewTab.bind(this, resourceURL)); |
/** |
- * @param {!WebInspector.ContextMenu} contextMenu |
- * @param {!Object} target |
+ * @param {string} resourceURL |
*/ |
- _appendHrefItems: function(contextMenu, target) |
- { |
- if (!(target instanceof Node)) |
- return; |
- var targetNode = /** @type {!Node} */ (target); |
- |
- var anchorElement = targetNode.enclosingNodeOrSelfWithClass("webkit-html-resource-link") || targetNode.enclosingNodeOrSelfWithClass("webkit-html-external-link"); |
- if (!anchorElement) |
- return; |
- |
- var uiLocation = WebInspector.Linkifier.uiLocationByAnchor(anchorElement); |
- var resourceURL = uiLocation ? uiLocation.uiSourceCode.contentURL() : anchorElement.href; |
- var uiSourceCode = uiLocation ? uiLocation.uiSourceCode : (resourceURL ? WebInspector.networkMapping.uiSourceCodeForURLForAnyTarget(resourceURL) : null); |
- function open() |
- { |
- WebInspector.Revealer.reveal(uiSourceCode); |
- } |
- if (uiSourceCode) |
- contextMenu.appendItem("Open", open); |
- |
- if (!resourceURL) |
- return; |
- // Add resource-related actions. |
- contextMenu.appendItem(WebInspector.openLinkExternallyLabel(), this._openInNewTab.bind(this, resourceURL)); |
- |
- /** |
- * @param {string} resourceURL |
- */ |
- function openInResourcesPanel(resourceURL) |
- { |
- var resource = WebInspector.resourceForURL(resourceURL); |
- if (resource) |
- WebInspector.Revealer.reveal(resource); |
- else |
- InspectorFrontendHost.openInNewTab(resourceURL); |
- } |
- if (!targetNode.enclosingNodeOrSelfWithClassList(["resources", "panel"]) && WebInspector.resourceForURL(resourceURL)) |
- contextMenu.appendItem(WebInspector.UIString.capitalize("Open ^link in Application ^panel"), openInResourcesPanel.bind(null, resourceURL)); |
- |
- |
- contextMenu.appendItem(WebInspector.copyLinkAddressLabel(), InspectorFrontendHost.copyText.bind(InspectorFrontendHost, resourceURL)); |
- }, |
- |
- __proto__: WebInspector.Object.prototype |
+ function openInResourcesPanel(resourceURL) { |
+ var resource = WebInspector.resourceForURL(resourceURL); |
+ if (resource) |
+ WebInspector.Revealer.reveal(resource); |
+ else |
+ InspectorFrontendHost.openInNewTab(resourceURL); |
+ } |
+ if (!targetNode.enclosingNodeOrSelfWithClassList(['resources', 'panel']) && |
+ WebInspector.resourceForURL(resourceURL)) |
+ contextMenu.appendItem( |
+ WebInspector.UIString.capitalize('Open ^link in Application ^panel'), |
+ openInResourcesPanel.bind(null, resourceURL)); |
+ |
+ contextMenu.appendItem( |
+ WebInspector.copyLinkAddressLabel(), InspectorFrontendHost.copyText.bind(InspectorFrontendHost, resourceURL)); |
+ } |
}; |
/** @enum {symbol} */ |
WebInspector.HandlerRegistry.Events = { |
- HandlersUpdated: Symbol("HandlersUpdated") |
+ HandlersUpdated: Symbol('HandlersUpdated') |
}; |
/** |
- * @constructor |
+ * @unrestricted |
*/ |
-WebInspector.HandlerSelector = function(handlerRegistry) |
-{ |
+WebInspector.HandlerSelector = class { |
+ constructor(handlerRegistry) { |
this._handlerRegistry = handlerRegistry; |
- this.element = createElementWithClass("select", "chrome-select"); |
- this.element.addEventListener("change", this._onChange.bind(this), false); |
+ this.element = createElementWithClass('select', 'chrome-select'); |
+ this.element.addEventListener('change', this._onChange.bind(this), false); |
this._update(); |
- this._handlerRegistry.addEventListener(WebInspector.HandlerRegistry.Events.HandlersUpdated, this._update.bind(this)); |
-}; |
- |
-WebInspector.HandlerSelector.prototype = |
-{ |
- _update: function() |
- { |
- this.element.removeChildren(); |
- var names = this._handlerRegistry.handlerNames; |
- var activeHandler = this._handlerRegistry.activeHandler; |
- |
- for (var i = 0; i < names.length; ++i) { |
- var option = createElement("option"); |
- option.textContent = names[i]; |
- option.selected = activeHandler === names[i]; |
- this.element.appendChild(option); |
- } |
- this.element.disabled = names.length <= 1; |
- }, |
- |
- _onChange: function(event) |
- { |
- var value = event.target.value; |
- this._handlerRegistry.activeHandler = value; |
+ this._handlerRegistry.addEventListener( |
+ WebInspector.HandlerRegistry.Events.HandlersUpdated, this._update.bind(this)); |
+ } |
+ |
+ _update() { |
+ this.element.removeChildren(); |
+ var names = this._handlerRegistry.handlerNames; |
+ var activeHandler = this._handlerRegistry.activeHandler; |
+ |
+ for (var i = 0; i < names.length; ++i) { |
+ var option = createElement('option'); |
+ option.textContent = names[i]; |
+ option.selected = activeHandler === names[i]; |
+ this.element.appendChild(option); |
} |
+ this.element.disabled = names.length <= 1; |
+ } |
+ |
+ _onChange(event) { |
+ var value = event.target.value; |
+ this._handlerRegistry.activeHandler = value; |
+ } |
}; |
/** |
- * @constructor |
* @implements {WebInspector.ContextMenu.Provider} |
+ * @unrestricted |
*/ |
-WebInspector.HandlerRegistry.ContextMenuProvider = function() |
-{ |
-}; |
- |
-WebInspector.HandlerRegistry.ContextMenuProvider.prototype = { |
- /** |
- * @override |
- * @param {!Event} event |
- * @param {!WebInspector.ContextMenu} contextMenu |
- * @param {!Object} target |
- */ |
- appendApplicableItems: function(event, contextMenu, target) |
- { |
- WebInspector.openAnchorLocationRegistry._appendContentProviderItems(contextMenu, target); |
- WebInspector.openAnchorLocationRegistry._appendHrefItems(contextMenu, target); |
- } |
+WebInspector.HandlerRegistry.ContextMenuProvider = class { |
+ /** |
+ * @override |
+ * @param {!Event} event |
+ * @param {!WebInspector.ContextMenu} contextMenu |
+ * @param {!Object} target |
+ */ |
+ appendApplicableItems(event, contextMenu, target) { |
+ WebInspector.openAnchorLocationRegistry._appendContentProviderItems(contextMenu, target); |
+ WebInspector.openAnchorLocationRegistry._appendHrefItems(contextMenu, target); |
+ } |
}; |
/** |
- * @constructor |
* @implements {WebInspector.Linkifier.LinkHandler} |
+ * @unrestricted |
*/ |
-WebInspector.HandlerRegistry.LinkHandler = function() |
-{ |
-}; |
- |
-WebInspector.HandlerRegistry.LinkHandler.prototype = { |
- /** |
- * @override |
- * @param {string} url |
- * @param {number=} lineNumber |
- * @return {boolean} |
- */ |
- handleLink: function(url, lineNumber) |
- { |
- return WebInspector.openAnchorLocationRegistry.dispatch({ url: url, lineNumber: lineNumber}); |
- } |
+WebInspector.HandlerRegistry.LinkHandler = class { |
+ /** |
+ * @override |
+ * @param {string} url |
+ * @param {number=} lineNumber |
+ * @return {boolean} |
+ */ |
+ handleLink(url, lineNumber) { |
+ return WebInspector.openAnchorLocationRegistry.dispatch({url: url, lineNumber: lineNumber}); |
+ } |
}; |
/** |
- * @constructor |
* @implements {WebInspector.SettingUI} |
+ * @unrestricted |
*/ |
-WebInspector.HandlerRegistry.OpenAnchorLocationSettingUI = function() |
-{ |
-}; |
- |
-WebInspector.HandlerRegistry.OpenAnchorLocationSettingUI.prototype = { |
- /** |
- * @override |
- * @return {?Element} |
- */ |
- settingElement: function() |
- { |
- if (!WebInspector.openAnchorLocationRegistry.handlerNames.length) |
- return null; |
- |
- var handlerSelector = new WebInspector.HandlerSelector(WebInspector.openAnchorLocationRegistry); |
- return WebInspector.SettingsUI.createCustomSetting(WebInspector.UIString("Link handling:"), handlerSelector.element); |
- } |
+WebInspector.HandlerRegistry.OpenAnchorLocationSettingUI = class { |
+ /** |
+ * @override |
+ * @return {?Element} |
+ */ |
+ settingElement() { |
+ if (!WebInspector.openAnchorLocationRegistry.handlerNames.length) |
+ return null; |
+ |
+ var handlerSelector = new WebInspector.HandlerSelector(WebInspector.openAnchorLocationRegistry); |
+ return WebInspector.SettingsUI.createCustomSetting( |
+ WebInspector.UIString('Link handling:'), handlerSelector.element); |
+ } |
}; |
/** |