| 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);
|
| + }
|
| };
|
|
|
| /**
|
|
|