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 7fbe85fda2247f0f9f3c549586cdabdd402ff03b..5a8f518a09ce110a5ce20e8d5fa9957d067b5ee3 100644 |
--- a/chrome/browser/resources/task_manager/main.js |
+++ b/chrome/browser/resources/task_manager/main.js |
@@ -37,7 +37,6 @@ var localStrings = new LocalStrings(); |
TaskManager.prototype = { |
/** |
* Handle window close. |
- * @public |
*/ |
onClose: function () { |
if (!this.disabled_) { |
@@ -50,7 +49,6 @@ TaskManager.prototype = { |
* Handle selection change. |
* This is also called when data of tasks are refleshed, even if selection |
* has not been changed. |
- * @public |
*/ |
onSelectionChange: function () { |
var sm = this.selectionModel_; |
@@ -78,7 +76,6 @@ TaskManager.prototype = { |
/** |
* Closes taskmanager dialog. |
* After this function is called, onClose() will be called. |
- * @public |
*/ |
close: function () { |
window.close(); |
@@ -86,7 +83,6 @@ TaskManager.prototype = { |
/** |
* Sends commands to kill selected processes. |
- * @public |
*/ |
killSelectedProcesses: function () { |
var selectedIndexes = this.selectionModel_.selectedIndexes; |
@@ -103,7 +99,6 @@ TaskManager.prototype = { |
/** |
* Sends command to initiate resource inspection. |
- * @public |
*/ |
inspect: function (uniqueId) { |
chrome.send('inspect', [uniqueId]); |
@@ -111,7 +106,6 @@ TaskManager.prototype = { |
/** |
* Sends command to kill a process. |
- * @public |
*/ |
openAboutMemory: function () { |
chrome.send('openAboutMemory'); |
@@ -119,7 +113,6 @@ TaskManager.prototype = { |
/** |
* Sends command to disable taskmanager model. |
- * @public |
*/ |
disableTaskManager: function () { |
chrome.send('disableTaskManager'); |
@@ -127,7 +120,6 @@ TaskManager.prototype = { |
/** |
* Sends command to enable taskmanager model. |
- * @public |
*/ |
enableTaskManager: function () { |
chrome.send('enableTaskManager'); |
@@ -135,7 +127,6 @@ TaskManager.prototype = { |
/** |
* Sends command to activate a page. |
- * @public |
*/ |
activatePage: function (uniqueId) { |
chrome.send('activatePage', [uniqueId]); |
@@ -143,7 +134,6 @@ TaskManager.prototype = { |
/** |
* Initializes taskmanager. |
- * @public |
*/ |
initialize: function (dialogDom, opt) { |
if (!dialogDom) { |
@@ -151,6 +141,8 @@ TaskManager.prototype = { |
return; |
} |
+ measureTime.startInterval('Load.DOM'); |
+ |
this.opt_ = opt; |
this.initialized_ = true; |
@@ -159,12 +151,6 @@ TaskManager.prototype = { |
this.dialogDom_ = dialogDom; |
this.document_ = dialogDom.ownerDocument; |
- $('close-window').addEventListener('click', this.close.bind(this)); |
- $('kill-process').addEventListener('click', |
- this.killSelectedProcesses.bind(this)); |
- $('about-memory-link').addEventListener('click', |
- this.openAboutMemory.bind(this)); |
- |
this.pendingTaskUpdates_ = []; |
this.is_column_shown_ = []; |
for (var i = 0; i < DEFAULT_COLUMNS.length; i++) { |
@@ -182,6 +168,7 @@ TaskManager.prototype = { |
this.localized_column_[i] = localized_label; |
} |
+ this.initElements_(); |
this.initColumnModel_(); |
this.selectionModel_ = new cr.ui.ListSelectionModel(); |
this.dataModel_ = new cr.ui.ArrayDataModel([]); |
@@ -213,16 +200,68 @@ TaskManager.prototype = { |
dm.setCompareFunction(column_id, compare_func); |
} |
- var ary = this.dialogDom_.querySelectorAll('[visibleif]'); |
- for (var i = 0; i < ary.length; i++) { |
- var expr = ary[i].getAttribute('visibleif'); |
- if (!eval(expr)) |
- ary[i].hidden = true; |
- } |
- |
this.initTable_(); |
+ |
+ // Populate the static localized strings. |
+ i18nTemplate.process(this.document_, templateData); |
+ |
+ measureTime.recordInterval('Load.DOM'); |
+ measureTime.recordInterval('Load.Total'); |
+ |
+ loadDelayedIncludes(this); |
+ }, |
+ |
+ /** |
+ * Initializes the visibilities and handlers of the elements. |
+ * This method is called by initialize(). |
+ * @private |
+ */ |
+ initElements_: function() { |
+ // <if expr="pp_ifdef('chromeos')"> |
+ // The elements 'dialog-title' and 'close-window' exist only on ChromeOS. |
+ // This <if ... /if> section is removed while flattening HTML if chrome is |
+ // built as Desktop Chrome. |
+ if (!this.opt_['isShowTitle']) |
+ $('dialog-title').style.display = 'none'; |
+ if (!this.opt_['isShowCloseButton']) |
+ $('close-window').style.display = 'none'; |
+ $('close-window').addEventListener('click', this.close.bind(this)); |
+ // </if> |
+ |
+ $('kill-process').addEventListener('click', |
+ this.killSelectedProcesses.bind(this)); |
+ $('about-memory-link').addEventListener('click', |
+ this.openAboutMemory.bind(this)); |
+ }, |
+ |
+ /** |
+ * Additional initialization of taskmanager. This function is called when |
+ * the loading of delayed scripts finished. |
+ */ |
+ delayedInitialize: function() { |
this.initColumnMenu_(); |
this.initTableMenu_(); |
+ |
+ var dm = this.dataModel_; |
+ for (var i = 0; i < dm.length; i++) { |
+ for (var j = 0; j < DEFAULT_COLUMNS.length; j++) { |
+ var columnId = DEFAULT_COLUMNS[j][0]; |
+ var row = dm.item(i)[columnId]; |
+ for (var k = 0; k < row.length; k++) { |
+ var processId = dm.item(i)['processId'][0]; |
+ var labelId = 'detail-' + columnId + '-pid' + processId + '-' + k; |
+ var label = $(labelId); |
+ |
+ // Initialize a context-menu, if the label exists and its context- |
+ // menu is not initialized yet. |
+ if (label && !label.contextMenu) |
+ cr.ui.contextMenuHandler.setContextMenu(label, |
+ this.tableContextMenu_); |
+ } |
+ } |
+ } |
+ |
+ this.isFinishedInitDelayed_ = true; |
this.table_.redraw(); |
}, |
@@ -275,16 +314,14 @@ TaskManager.prototype = { |
this.document_.body.appendChild(this.columnSelectContextMenu_); |
cr.ui.Menu.decorate(this.columnSelectContextMenu_); |
- cr.ui.contextMenuHandler.addContextMenuProperty(this.table_.header); |
- this.table_.header.contextMenu = this.columnSelectContextMenu_; |
- |
- cr.ui.contextMenuHandler.addContextMenuProperty(this.table_.list); |
- this.table_.list.contextMenu = this.columnSelectContextMenu_; |
+ cr.ui.contextMenuHandler.setContextMenu(this.table_.header, |
+ this.columnSelectContextMenu_); |
+ cr.ui.contextMenuHandler.setContextMenu(this.table_.list, |
+ this.columnSelectContextMenu_); |
this.document_.addEventListener('command', this.onCommand_.bind(this)); |
this.document_.addEventListener('canExecute', |
this.onCommandCanExecute_.bind(this)); |
- |
}, |
initTableMenu_: function () { |
@@ -361,6 +398,7 @@ TaskManager.prototype = { |
return listItem; |
}, |
+ |
renderColumn_: function(entry, columnId, table) { |
var container = this.document_.createElement('div'); |
container.className = 'detail-container-' + columnId; |
@@ -380,8 +418,14 @@ TaskManager.prototype = { |
text.textContent = entry['title'][i]; |
label.appendChild(text); |
- cr.ui.contextMenuHandler.addContextMenuProperty(label); |
- label.contextMenu = this.tableContextMenu_; |
+ // Chech if the delayed scripts (included in includes.js) have been |
+ // loaded or not. If the delayed scripts ware not loaded yet, a |
+ // context menu could not be initialized. In such case, it will be |
+ // initialized at delayedInitialize() just after loading of delayed |
+ // scripts instead of here. |
+ if (this.isFinishedInitDelayed_) |
+ cr.ui.contextMenuHandler.setContextMenu(label, |
+ this.tableContextMenu_); |
label.addEventListener('dblclick', (function(uniqueId) { |
this.activatePage(uniqueId); |
@@ -510,6 +554,9 @@ TaskManager.prototype = { |
* will be replaced when it is refleshed. |
*/ |
onTableContextMenuOpened_: function (e) { |
+ if (!this.isFinishedInitDelayed_) |
+ return; |
+ |
var mc = this.table_menu_commands_; |
var inspect_menuitem = |
mc[COMMAND_CONTEXTMENU_TABLE_PREFIX + '-inspect'].menuitem; |
@@ -617,4 +664,3 @@ function taskRemoved(start, length) { |
return; |
taskmanager.onTaskRemove(start, length); |
} |
- |