Index: chrome/browser/resources/task_manager/main.js |
diff --git a/chrome/browser/resources/task_manager/main.js b/chrome/browser/resources/task_manager/main.js |
index 49eb3b2bb3890014fb322c3e94ba741a4ef78a40..d2089b31e2695aa7a2a42ca921748db06dfda0b9 100644 |
--- a/chrome/browser/resources/task_manager/main.js |
+++ b/chrome/browser/resources/task_manager/main.js |
@@ -29,6 +29,9 @@ var DEFAULT_COLUMNS = [ |
['v8MemoryAllocatedSize', 'JAVASCRIPT_MEMORY_ALLOCATED_COLUMN', 120, false], |
]; |
+var COMMAND_CONTEXTMENU_COLUMN_PREFIX = 'columnContextMenu'; |
+var COMMAND_CONTEXTMENU_TABLE_PREFIX = 'tableContextMenu'; |
+ |
var localStrings = new LocalStrings(); |
TaskManager.prototype = { |
@@ -123,6 +126,14 @@ TaskManager.prototype = { |
}, |
/** |
+ * Sends command to activate a page. |
+ * @public |
+ */ |
+ activatePage: function (uniqueId) { |
+ chrome.send('activatePage', [uniqueId]); |
+ }, |
+ |
+ /** |
* Initializes taskmanager. |
* @public |
*/ |
@@ -233,7 +244,7 @@ TaskManager.prototype = { |
// Creates command element to receive event. |
var command = this.document_.createElement('command'); |
- command.id = 'columnContextMenu-' + column[0]; |
+ command.id = COMMAND_CONTEXTMENU_COLUMN_PREFIX + '-' + column[0]; |
cr.ui.Command.decorate(command); |
this.column_menu_commands_[command.id] = command; |
this.commandsElement_.appendChild(command); |
@@ -264,20 +275,25 @@ TaskManager.prototype = { |
this.table_menu_commands_ = []; |
this.tableContextMenu_ = this.document_.createElement('menu'); |
- // Creates command element to receive event. |
- var command = this.document_.createElement('command'); |
- command.id = 'tableContextMenu-inspect'; |
- cr.ui.Command.decorate(command); |
- this.table_menu_commands_[command.id] = command; |
- this.commandsElement_.appendChild(command); |
- |
- // Creates menuitem element. |
- var item = this.document_.createElement('menuitem'); |
- item.command = command; |
- command.menuitem = item; |
- var localized_label = localStrings.getString('INSPECT'); |
- item.textContent = (localized_label != "") ? localized_label : "Inspect"; |
- this.tableContextMenu_.appendChild(item); |
+ var addMenuItem = function (tm, command_id, string_id, default_label) { |
+ // Creates command element to receive event. |
+ var command = tm.document_.createElement('command'); |
+ command.id = COMMAND_CONTEXTMENU_TABLE_PREFIX + '-' + command_id; |
+ cr.ui.Command.decorate(command); |
+ tm.table_menu_commands_[command.id] = command; |
+ tm.commandsElement_.appendChild(command); |
+ |
+ // Creates menuitem element. |
+ var item = tm.document_.createElement('menuitem'); |
+ item.command = command; |
+ command.menuitem = item; |
+ var localized_label = localStrings.getString(string_id); |
+ item.textContent = localized_label || default_label; |
+ tm.tableContextMenu_.appendChild(item); |
+ }; |
+ |
+ addMenuItem(this, 'inspect', 'INSPECT', "Inspect"); |
+ addMenuItem(this, 'activate', 'ACTIVATE', "Activate"); |
this.document_.body.appendChild(this.tableContextMenu_); |
cr.ui.Menu.decorate(this.tableContextMenu_); |
@@ -350,6 +366,10 @@ TaskManager.prototype = { |
cr.ui.contextMenuHandler.addContextMenuProperty(label); |
label.contextMenu = this.tableContextMenu_; |
+ label.addEventListener('dblclick', (function(uniqueId) { |
+ this.activatePage(uniqueId); |
+ }).bind(this, entry['uniqueId'][i])); |
+ |
label.data = entry; |
label.index_in_group = i; |
} else { |
@@ -404,15 +424,25 @@ TaskManager.prototype = { |
*/ |
onCommand_: function(event) { |
var command = event.command; |
- if (command.id.substr(0, 18) == 'columnContextMenu-') { |
- console.log(command.id.substr(18)); |
- this.onColumnContextMenu_(command.id.substr(18), command); |
- } else if (command.id == 'tableContextMenu-inspect') { |
- var contextMenuTarget = this.currentContextMenuTarget_; |
- if (contextMenuTarget) { |
- this.inspect(contextMenuTarget); |
- this.currentContextMenuTarget_ = undefined; |
- } |
+ var command_id = command.id.split('-', 2); |
+ |
+ var main_command = command_id[0]; |
+ var sub_command = command_id[1]; |
+ |
+ if (main_command == COMMAND_CONTEXTMENU_COLUMN_PREFIX) { |
+ this.onColumnContextMenu_(sub_command, command); |
+ } else if (main_command == COMMAND_CONTEXTMENU_TABLE_PREFIX) { |
+ var target_unique_id = this.currentContextMenuTarget_; |
+ |
+ if (!target_unique_id) |
+ return; |
+ |
+ if (sub_command == 'inspect') |
+ this.inspect(target_unique_id); |
+ else if (sub_command == 'activate') |
+ this.activatePage(target_unique_id); |
+ |
+ this.currentContextMenuTarget_ = undefined; |
} |
}, |
@@ -425,12 +455,15 @@ TaskManager.prototype = { |
* will be replaced when it is refleshed. |
*/ |
onTableContextMenuOpened_: function (e) { |
- var command = this.table_menu_commands_['tableContextMenu-inspect']; |
- var menuItem = command.menuitem; |
+ var mc = this.table_menu_commands_; |
+ var inspect_menuitem = |
+ mc[COMMAND_CONTEXTMENU_TABLE_PREFIX + '-inspect'].menuitem; |
+ var activate_menuitem = |
+ mc[COMMAND_CONTEXTMENU_TABLE_PREFIX + '-activate'].menuitem; |
// Disabled by default. |
- menuItem.disabled = true; |
- this.currentContextMenuTarget_ = undefined; |
+ inspect_menuitem.disabled = true; |
+ activate_menuitem.disabled = true; |
var target = e.target; |
var classes = target.classList; |
@@ -445,12 +478,16 @@ TaskManager.prototype = { |
var index_in_group = target.index_in_group; |
- var canInspect = target.data['canInspect'][index_in_group]; |
- if (canInspect) { |
- menuItem.disabled = false; |
- this.currentContextMenuTarget_ = |
- target.data['uniqueId'][index_in_group]; |
- } |
+ // Sets the uniqueId for current target page under the mouse corsor. |
+ this.currentContextMenuTarget_ = target.data['uniqueId'][index_in_group]; |
+ |
+ // Enables if the page can be inspected. |
+ if (target.data['canInspect'][index_in_group]) |
+ inspect_menuitem.disabled = false; |
+ |
+ // Enables if the page can be activated. |
+ if (target.data['canActivate'][index_in_group]) |
+ activate_menuitem.disabled = false; |
}, |
onColumnContextMenu_: function(id, command) { |