Index: third_party/WebKit/Source/devtools/front_end/ui_lazy/CommandMenu.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/ui_lazy/CommandMenu.js b/third_party/WebKit/Source/devtools/front_end/ui_lazy/CommandMenu.js |
index 3466609c8c398b92da265761c65d53c8209079f7..d0368453821cc334c278e1e58d6e25881b67d851 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/ui_lazy/CommandMenu.js |
+++ b/third_party/WebKit/Source/devtools/front_end/ui_lazy/CommandMenu.js |
@@ -1,366 +1,339 @@ |
// Copyright 2016 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 |
+ * @unrestricted |
*/ |
-WebInspector.CommandMenu = function() |
-{ |
+WebInspector.CommandMenu = class { |
+ constructor() { |
this._commands = []; |
this._loadCommands(); |
-}; |
- |
-WebInspector.CommandMenu.prototype = { |
- _loadCommands: function() |
- { |
- // Populate panels. |
- var panelExtensions = self.runtime.extensions(WebInspector.Panel); |
- for (var extension of panelExtensions) |
- this._commands.push(WebInspector.CommandMenu.createRevealPanelCommand(extension)); |
- |
- // Populate drawers. |
- var drawerExtensions = self.runtime.extensions("view"); |
- for (var extension of drawerExtensions) { |
- if (extension.descriptor()["location"] !== "drawer-view") |
- continue; |
- this._commands.push(WebInspector.CommandMenu.createRevealDrawerCommand(extension)); |
- } |
- |
- // Populate whitelisted settings. |
- var settingExtensions = self.runtime.extensions("setting"); |
- for (var extension of settingExtensions) { |
- var options = extension.descriptor()["options"]; |
- if (!options || !extension.descriptor()["category"]) |
- continue; |
- for (var pair of options) |
- this._commands.push(WebInspector.CommandMenu.createSettingCommand(extension, pair["title"], pair["value"])); |
- } |
- }, |
- |
- /** |
- * @return {!Array.<!WebInspector.CommandMenu.Command>} |
- */ |
- commands: function() |
- { |
- return this._commands; |
- } |
-}; |
- |
-/** |
- * @constructor |
- * @extends {WebInspector.FilteredListWidget.Delegate} |
- */ |
-WebInspector.CommandMenuDelegate = function() |
-{ |
- WebInspector.FilteredListWidget.Delegate.call(this, []); |
- this._commands = []; |
- this._appendAvailableCommands(); |
-}; |
- |
-WebInspector.CommandMenuDelegate.MaterialPaletteColors = ["#F44336", "#E91E63", "#9C27B0", "#673AB7", "#3F51B5", "#03A9F4", "#00BCD4", "#009688", "#4CAF50", "#8BC34A", "#CDDC39", "#FFC107", "#FF9800", "#FF5722", "#795548", "#9E9E9E", "#607D8B"]; |
- |
-WebInspector.CommandMenuDelegate.prototype = { |
- _appendAvailableCommands: function() |
- { |
- var allCommands = WebInspector.commandMenu.commands(); |
- |
- // Populate whitelisted actions. |
- var actions = WebInspector.actionRegistry.availableActions(); |
- for (var action of actions) { |
- if (action.category()) |
- this._commands.push(WebInspector.CommandMenu.createActionCommand(action)); |
- } |
- |
- for (var command of allCommands) { |
- if (command.available()) |
- this._commands.push(command); |
- } |
- |
- this._commands = this._commands.sort(commandComparator); |
- |
- /** |
- * @param {!WebInspector.CommandMenu.Command} left |
- * @param {!WebInspector.CommandMenu.Command} right |
- * @return {number} |
- */ |
- function commandComparator(left, right) |
- { |
- var cats = left.category().compareTo(right.category()); |
- return cats ? cats : left.title().compareTo(right.title()); |
- } |
- }, |
- |
- /** |
- * @override |
- * @return {number} |
- */ |
- itemCount: function() |
- { |
- return this._commands.length; |
- }, |
- |
- /** |
- * @override |
- * @param {number} itemIndex |
- * @return {string} |
- */ |
- itemKeyAt: function(itemIndex) |
- { |
- return this._commands[itemIndex].key(); |
- }, |
- |
- /** |
- * @override |
- * @param {number} itemIndex |
- * @param {string} query |
- * @return {number} |
- */ |
- itemScoreAt: function(itemIndex, query) |
- { |
- var command = this._commands[itemIndex]; |
- var opcodes = WebInspector.Diff.charDiff(query.toLowerCase(), command.title().toLowerCase()); |
- var score = 0; |
- // Score longer sequences higher. |
- for (var i = 0; i < opcodes.length; ++i) { |
- if (opcodes[i][0] === WebInspector.Diff.Operation.Equal) |
- score += opcodes[i][1].length * opcodes[i][1].length; |
- } |
- |
- // Score panel/drawer reveals above regular actions. |
- if (command.category().startsWith("Panel")) |
- score += 2; |
- else if (command.category().startsWith("Drawer")) |
- score += 1; |
- |
- return score; |
- }, |
- |
- /** |
- * @override |
- * @param {number} itemIndex |
- * @param {string} query |
- * @param {!Element} titleElement |
- * @param {!Element} subtitleElement |
- */ |
- renderItem: function(itemIndex, query, titleElement, subtitleElement) |
- { |
- var command = this._commands[itemIndex]; |
- titleElement.removeChildren(); |
- var tagElement = titleElement.createChild("span", "tag"); |
- var index = String.hashCode(command.category()) % WebInspector.CommandMenuDelegate.MaterialPaletteColors.length; |
- tagElement.style.backgroundColor = WebInspector.CommandMenuDelegate.MaterialPaletteColors[index]; |
- tagElement.textContent = command.category(); |
- titleElement.createTextChild(command.title()); |
- this.highlightRanges(titleElement, query); |
- subtitleElement.textContent = command.shortcut(); |
- }, |
- |
- /** |
- * @override |
- * @param {?number} itemIndex |
- * @param {string} promptValue |
- */ |
- selectItem: function(itemIndex, promptValue) |
- { |
- this._commands[itemIndex].execute(); |
- }, |
+ } |
+ |
+ /** |
+ * @param {string} category |
+ * @param {string} keys |
+ * @param {string} title |
+ * @param {string} shortcut |
+ * @param {function()} executeHandler |
+ * @param {function()=} availableHandler |
+ * @return {!WebInspector.CommandMenu.Command} |
+ */ |
+ static createCommand(category, keys, title, shortcut, executeHandler, availableHandler) { |
+ // Separate keys by null character, to prevent fuzzy matching from matching across them. |
+ var key = keys.replace(/,/g, '\0'); |
+ return new WebInspector.CommandMenu.Command(category, title, key, shortcut, executeHandler, availableHandler); |
+ } |
+ |
+ /** |
+ * @param {!Runtime.Extension} extension |
+ * @param {string} title |
+ * @param {V} value |
+ * @return {!WebInspector.CommandMenu.Command} |
+ * @template V |
+ */ |
+ static createSettingCommand(extension, title, value) { |
+ var category = extension.descriptor()['category'] || ''; |
+ var tags = extension.descriptor()['tags'] || ''; |
+ var setting = WebInspector.settings.moduleSetting(extension.descriptor()['settingName']); |
+ return WebInspector.CommandMenu.createCommand( |
+ category, tags, title, '', setting.set.bind(setting, value), availableHandler); |
/** |
- * @override |
* @return {boolean} |
*/ |
- caseSensitive: function() |
- { |
- return false; |
- }, |
+ function availableHandler() { |
+ return setting.get() !== value; |
+ } |
+ } |
+ |
+ /** |
+ * @param {!WebInspector.Action} action |
+ * @return {!WebInspector.CommandMenu.Command} |
+ */ |
+ static createActionCommand(action) { |
+ var shortcut = WebInspector.shortcutRegistry.shortcutTitleForAction(action.id()) || ''; |
+ return WebInspector.CommandMenu.createCommand( |
+ action.category(), action.tags(), action.title(), shortcut, action.execute.bind(action)); |
+ } |
+ |
+ /** |
+ * @param {!Runtime.Extension} extension |
+ * @return {!WebInspector.CommandMenu.Command} |
+ */ |
+ static createRevealPanelCommand(extension) { |
+ var panelName = extension.descriptor()['name']; |
+ var tags = extension.descriptor()['tags'] || ''; |
+ return WebInspector.CommandMenu.createCommand( |
+ WebInspector.UIString('Panel'), tags, WebInspector.UIString('Show %s', extension.title()), '', executeHandler, |
+ availableHandler); |
/** |
- * @override |
* @return {boolean} |
*/ |
- renderMonospace: function() |
- { |
- return false; |
- }, |
- |
- __proto__: WebInspector.FilteredListWidget.Delegate.prototype |
-}; |
- |
-/** |
- * @constructor |
- * @param {string} category |
- * @param {string} title |
- * @param {string} key |
- * @param {string} shortcut |
- * @param {function()} executeHandler |
- * @param {function()=} availableHandler |
- */ |
-WebInspector.CommandMenu.Command = function(category, title, key, shortcut, executeHandler, availableHandler) |
-{ |
- this._category = category; |
- this._title = title; |
- this._key = category + "\0" + title + "\0" + key; |
- this._shortcut = shortcut; |
- this._executeHandler = executeHandler; |
- this._availableHandler = availableHandler; |
-}; |
- |
-WebInspector.CommandMenu.Command.prototype = { |
- /** |
- * @return {string} |
- */ |
- category: function() |
- { |
- return this._category; |
- }, |
- |
- /** |
- * @return {string} |
- */ |
- title: function() |
- { |
- return this._title; |
- }, |
- |
- /** |
- * @return {string} |
- */ |
- key: function() |
- { |
- return this._key; |
- }, |
+ function availableHandler() { |
+ return true; |
+ } |
- /** |
- * @return {string} |
- */ |
- shortcut: function() |
- { |
- return this._shortcut; |
- }, |
+ function executeHandler() { |
+ WebInspector.viewManager.showView(panelName); |
+ } |
+ } |
+ |
+ /** |
+ * @param {!Runtime.Extension} extension |
+ * @return {!WebInspector.CommandMenu.Command} |
+ */ |
+ static createRevealDrawerCommand(extension) { |
+ var drawerId = extension.descriptor()['id']; |
+ var executeHandler = WebInspector.viewManager.showView.bind(WebInspector.viewManager, drawerId); |
+ var tags = extension.descriptor()['tags'] || ''; |
+ return WebInspector.CommandMenu.createCommand( |
+ WebInspector.UIString('Drawer'), tags, WebInspector.UIString('Show %s', extension.title()), '', executeHandler); |
+ } |
+ |
+ _loadCommands() { |
+ // Populate panels. |
+ var panelExtensions = self.runtime.extensions(WebInspector.Panel); |
+ for (var extension of panelExtensions) |
+ this._commands.push(WebInspector.CommandMenu.createRevealPanelCommand(extension)); |
+ |
+ // Populate drawers. |
+ var drawerExtensions = self.runtime.extensions('view'); |
+ for (var extension of drawerExtensions) { |
+ if (extension.descriptor()['location'] !== 'drawer-view') |
+ continue; |
+ this._commands.push(WebInspector.CommandMenu.createRevealDrawerCommand(extension)); |
+ } |
- /** |
- * @return {boolean} |
- */ |
- available: function() |
- { |
- return this._availableHandler ? this._availableHandler() : true; |
- }, |
- |
- execute: function() |
- { |
- this._executeHandler(); |
+ // Populate whitelisted settings. |
+ var settingExtensions = self.runtime.extensions('setting'); |
+ for (var extension of settingExtensions) { |
+ var options = extension.descriptor()['options']; |
+ if (!options || !extension.descriptor()['category']) |
+ continue; |
+ for (var pair of options) |
+ this._commands.push(WebInspector.CommandMenu.createSettingCommand(extension, pair['title'], pair['value'])); |
} |
+ } |
+ |
+ /** |
+ * @return {!Array.<!WebInspector.CommandMenu.Command>} |
+ */ |
+ commands() { |
+ return this._commands; |
+ } |
}; |
/** |
- * @param {string} category |
- * @param {string} keys |
- * @param {string} title |
- * @param {string} shortcut |
- * @param {function()} executeHandler |
- * @param {function()=} availableHandler |
- * @return {!WebInspector.CommandMenu.Command} |
+ * @unrestricted |
*/ |
-WebInspector.CommandMenu.createCommand = function(category, keys, title, shortcut, executeHandler, availableHandler) |
-{ |
- // Separate keys by null character, to prevent fuzzy matching from matching across them. |
- var key = keys.replace(/,/g, "\0"); |
- return new WebInspector.CommandMenu.Command(category, title, key, shortcut, executeHandler, availableHandler); |
-}; |
+WebInspector.CommandMenuDelegate = class extends WebInspector.FilteredListWidget.Delegate { |
+ constructor() { |
+ super([]); |
+ this._commands = []; |
+ this._appendAvailableCommands(); |
+ } |
-/** |
- * @param {!Runtime.Extension} extension |
- * @param {string} title |
- * @param {V} value |
- * @return {!WebInspector.CommandMenu.Command} |
- * @template V |
- */ |
-WebInspector.CommandMenu.createSettingCommand = function(extension, title, value) |
-{ |
- var category = extension.descriptor()["category"] || ""; |
- var tags = extension.descriptor()["tags"] || ""; |
- var setting = WebInspector.settings.moduleSetting(extension.descriptor()["settingName"]); |
- return WebInspector.CommandMenu.createCommand(category, tags, title, "", setting.set.bind(setting, value), availableHandler); |
+ _appendAvailableCommands() { |
+ var allCommands = WebInspector.commandMenu.commands(); |
- /** |
- * @return {boolean} |
- */ |
- function availableHandler() |
- { |
- return setting.get() !== value; |
+ // Populate whitelisted actions. |
+ var actions = WebInspector.actionRegistry.availableActions(); |
+ for (var action of actions) { |
+ if (action.category()) |
+ this._commands.push(WebInspector.CommandMenu.createActionCommand(action)); |
} |
-}; |
-/** |
- * @param {!WebInspector.Action} action |
- * @return {!WebInspector.CommandMenu.Command} |
- */ |
-WebInspector.CommandMenu.createActionCommand = function(action) |
-{ |
- var shortcut = WebInspector.shortcutRegistry.shortcutTitleForAction(action.id()) || ""; |
- return WebInspector.CommandMenu.createCommand(action.category(), action.tags(), action.title(), shortcut, action.execute.bind(action)); |
-}; |
+ for (var command of allCommands) { |
+ if (command.available()) |
+ this._commands.push(command); |
+ } |
-/** |
- * @param {!Runtime.Extension} extension |
- * @return {!WebInspector.CommandMenu.Command} |
- */ |
-WebInspector.CommandMenu.createRevealPanelCommand = function(extension) |
-{ |
- var panelName = extension.descriptor()["name"]; |
- var tags = extension.descriptor()["tags"] || ""; |
- return WebInspector.CommandMenu.createCommand(WebInspector.UIString("Panel"), tags, WebInspector.UIString("Show %s", extension.title()), "", executeHandler, availableHandler); |
+ this._commands = this._commands.sort(commandComparator); |
/** |
- * @return {boolean} |
+ * @param {!WebInspector.CommandMenu.Command} left |
+ * @param {!WebInspector.CommandMenu.Command} right |
+ * @return {number} |
*/ |
- function availableHandler() |
- { |
- return true; |
+ function commandComparator(left, right) { |
+ var cats = left.category().compareTo(right.category()); |
+ return cats ? cats : left.title().compareTo(right.title()); |
} |
- |
- function executeHandler() |
- { |
- WebInspector.viewManager.showView(panelName); |
+ } |
+ |
+ /** |
+ * @override |
+ * @return {number} |
+ */ |
+ itemCount() { |
+ return this._commands.length; |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {number} itemIndex |
+ * @return {string} |
+ */ |
+ itemKeyAt(itemIndex) { |
+ return this._commands[itemIndex].key(); |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {number} itemIndex |
+ * @param {string} query |
+ * @return {number} |
+ */ |
+ itemScoreAt(itemIndex, query) { |
+ var command = this._commands[itemIndex]; |
+ var opcodes = WebInspector.Diff.charDiff(query.toLowerCase(), command.title().toLowerCase()); |
+ var score = 0; |
+ // Score longer sequences higher. |
+ for (var i = 0; i < opcodes.length; ++i) { |
+ if (opcodes[i][0] === WebInspector.Diff.Operation.Equal) |
+ score += opcodes[i][1].length * opcodes[i][1].length; |
} |
+ |
+ // Score panel/drawer reveals above regular actions. |
+ if (command.category().startsWith('Panel')) |
+ score += 2; |
+ else if (command.category().startsWith('Drawer')) |
+ score += 1; |
+ |
+ return score; |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {number} itemIndex |
+ * @param {string} query |
+ * @param {!Element} titleElement |
+ * @param {!Element} subtitleElement |
+ */ |
+ renderItem(itemIndex, query, titleElement, subtitleElement) { |
+ var command = this._commands[itemIndex]; |
+ titleElement.removeChildren(); |
+ var tagElement = titleElement.createChild('span', 'tag'); |
+ var index = String.hashCode(command.category()) % WebInspector.CommandMenuDelegate.MaterialPaletteColors.length; |
+ tagElement.style.backgroundColor = WebInspector.CommandMenuDelegate.MaterialPaletteColors[index]; |
+ tagElement.textContent = command.category(); |
+ titleElement.createTextChild(command.title()); |
+ this.highlightRanges(titleElement, query); |
+ subtitleElement.textContent = command.shortcut(); |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {?number} itemIndex |
+ * @param {string} promptValue |
+ */ |
+ selectItem(itemIndex, promptValue) { |
+ this._commands[itemIndex].execute(); |
+ } |
+ |
+ /** |
+ * @override |
+ * @return {boolean} |
+ */ |
+ caseSensitive() { |
+ return false; |
+ } |
+ |
+ /** |
+ * @override |
+ * @return {boolean} |
+ */ |
+ renderMonospace() { |
+ return false; |
+ } |
}; |
+WebInspector.CommandMenuDelegate.MaterialPaletteColors = [ |
+ '#F44336', '#E91E63', '#9C27B0', '#673AB7', '#3F51B5', '#03A9F4', '#00BCD4', '#009688', '#4CAF50', '#8BC34A', |
+ '#CDDC39', '#FFC107', '#FF9800', '#FF5722', '#795548', '#9E9E9E', '#607D8B' |
+]; |
+ |
/** |
- * @param {!Runtime.Extension} extension |
- * @return {!WebInspector.CommandMenu.Command} |
+ * @unrestricted |
*/ |
-WebInspector.CommandMenu.createRevealDrawerCommand = function(extension) |
-{ |
- var drawerId = extension.descriptor()["id"]; |
- var executeHandler = WebInspector.viewManager.showView.bind(WebInspector.viewManager, drawerId); |
- var tags = extension.descriptor()["tags"] || ""; |
- return WebInspector.CommandMenu.createCommand(WebInspector.UIString("Drawer"), tags, WebInspector.UIString("Show %s", extension.title()), "", executeHandler); |
+WebInspector.CommandMenu.Command = class { |
+ /** |
+ * @param {string} category |
+ * @param {string} title |
+ * @param {string} key |
+ * @param {string} shortcut |
+ * @param {function()} executeHandler |
+ * @param {function()=} availableHandler |
+ */ |
+ constructor(category, title, key, shortcut, executeHandler, availableHandler) { |
+ this._category = category; |
+ this._title = title; |
+ this._key = category + '\0' + title + '\0' + key; |
+ this._shortcut = shortcut; |
+ this._executeHandler = executeHandler; |
+ this._availableHandler = availableHandler; |
+ } |
+ |
+ /** |
+ * @return {string} |
+ */ |
+ category() { |
+ return this._category; |
+ } |
+ |
+ /** |
+ * @return {string} |
+ */ |
+ title() { |
+ return this._title; |
+ } |
+ |
+ /** |
+ * @return {string} |
+ */ |
+ key() { |
+ return this._key; |
+ } |
+ |
+ /** |
+ * @return {string} |
+ */ |
+ shortcut() { |
+ return this._shortcut; |
+ } |
+ |
+ /** |
+ * @return {boolean} |
+ */ |
+ available() { |
+ return this._availableHandler ? this._availableHandler() : true; |
+ } |
+ |
+ execute() { |
+ this._executeHandler(); |
+ } |
}; |
+ |
/** @type {!WebInspector.CommandMenu} */ |
WebInspector.commandMenu = new WebInspector.CommandMenu(); |
/** |
- * @constructor |
* @implements {WebInspector.ActionDelegate} |
+ * @unrestricted |
*/ |
-WebInspector.CommandMenu.ShowActionDelegate = function() |
-{ |
-}; |
- |
-WebInspector.CommandMenu.ShowActionDelegate.prototype = { |
- /** |
- * @override |
- * @param {!WebInspector.Context} context |
- * @param {string} actionId |
- * @return {boolean} |
- */ |
- handleAction: function(context, actionId) |
- { |
- new WebInspector.FilteredListWidget(new WebInspector.CommandMenuDelegate()).showAsDialog(); |
- InspectorFrontendHost.bringToFront(); |
- return true; |
- } |
+WebInspector.CommandMenu.ShowActionDelegate = class { |
+ /** |
+ * @override |
+ * @param {!WebInspector.Context} context |
+ * @param {string} actionId |
+ * @return {boolean} |
+ */ |
+ handleAction(context, actionId) { |
+ new WebInspector.FilteredListWidget(new WebInspector.CommandMenuDelegate()).showAsDialog(); |
+ InspectorFrontendHost.bringToFront(); |
+ return true; |
+ } |
}; |
- |