summaryrefslogtreecommitdiffstats
path: root/chrome/browser/resources/task_manager
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/resources/task_manager')
-rw-r--r--chrome/browser/resources/task_manager/includes.js63
-rw-r--r--chrome/browser/resources/task_manager/main.html47
-rw-r--r--chrome/browser/resources/task_manager/main.js54
3 files changed, 99 insertions, 65 deletions
diff --git a/chrome/browser/resources/task_manager/includes.js b/chrome/browser/resources/task_manager/includes.js
index 75708b1..7deebfd 100644
--- a/chrome/browser/resources/task_manager/includes.js
+++ b/chrome/browser/resources/task_manager/includes.js
@@ -2,44 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// This script includes additional resources via document.write(). Hence, it
-// must be a separate script file loaded before other scripts which would
-// reference the resources.
-
-var css = [
- 'chrome_shared.css',
- 'list.css',
- 'table.css',
- 'menu.css',
- 'button.css',
-];
+// This script loads additional scripts after initialization of task manager.
var script = [
- 'local_strings.js',
- 'i18n_template.js',
-
- 'util.js',
- 'cr.js',
- 'cr/ui.js',
- 'cr/event_target.js',
- 'cr/ui/array_data_model.js',
- 'cr/ui/list_item.js',
- 'cr/ui/list_selection_model.js',
- 'cr/ui/list_single_selection_model.js',
- 'cr/ui/list_selection_controller.js',
- 'cr/ui/list.js',
-
- 'cr/ui/splitter.js',
- 'cr/ui/table/table_splitter.js',
-
- 'cr/ui/table/table_column.js',
- 'cr/ui/table/table_column_model.js',
- 'cr/ui/table/table_header.js',
- 'cr/ui/table/table_list.js',
- 'cr/ui/table.js',
-
- 'cr/ui/grid.js',
-
'cr/ui/command.js',
'cr/ui/position_util.js',
'cr/ui/menu_item.js',
@@ -47,20 +12,30 @@ var script = [
'cr/ui/context_menu_handler.js',
];
-(function() {
+/**
+ * Loads delayed scripts.
+ * This function is called by TaskManager::initalize() in main.js.
+ */
+function loadDelayedIncludes(taskmanager) {
// Switch to 'test harness' mode when loading from a file url.
var isHarness = document.location.protocol == 'file:';
// In test harness mode we load resources from relative dirs.
var prefix = isHarness ? './shared/' : 'chrome://resources/';
- for (var i = 0; i < css.length; ++i) {
- document.write('<link href="' + prefix + 'css/' + css[i] +
- '" rel="stylesheet"></link>');
- }
+ // Number of remaining scripts to load.
+ var remain = script.length;
+ // Waits for initialization of task manager.
for (var i = 0; i < script.length; ++i) {
- document.write('<script src="' + prefix + 'js/' + script[i] +
- '"><\/script>');
+ var s = document.createElement('script');
+ s.onload = function(e) {
+ if (!--remain)
+ taskmanager.delayedInitialize();
+ };
+ s.type = 'text/javascript';
+ s.src = prefix + 'js/' + script[i];
+ s.defer = 'defer';
+ document.body.appendChild(s);
}
-})();
+}
diff --git a/chrome/browser/resources/task_manager/main.html b/chrome/browser/resources/task_manager/main.html
index 20bc62f..a8705ba 100644
--- a/chrome/browser/resources/task_manager/main.html
+++ b/chrome/browser/resources/task_manager/main.html
@@ -8,10 +8,47 @@
<head>
<meta charset="utf-8">
<title i18n-content="title"></title>
- <script src="chrome://tasks/includes.js"></script>
- <script src="chrome://tasks/main.js"></script>
+
+ <link rel="stylesheet" href="../shared/css/chrome_shared.css"></link>
+ <link rel="stylesheet" href="../shared/css/list.css"></link>
+ <link rel="stylesheet" href="../shared/css/table.css"></link>
+ <link rel="stylesheet" href="../shared/css/menu.css"></link>
+ <link rel="stylesheet" href="../shared/css/button.css"></link>
+ <link rel="stylesheet" href="task_manager.css"></link>
+
+ <!-- strings.js must be specified as full path, since it will be genereted
+ -- in chrome/browser/ui/webui/task_manager_ui.cc dynamically.
+ -->
<script src="chrome://tasks/strings.js"></script>
- <link rel="stylesheet" href="task_manager.css">
+
+ <script src="../shared/js/local_strings.js"></script>
+ <script src="../shared/js/i18n_template.js"></script>
+
+ <script src="../shared/js/util.js"></script>
+ <script src="../shared/js/cr.js"></script>
+ <script src="../shared/js/cr/ui.js"></script>
+ <script src="../shared/js/cr/event_target.js"></script>
+ <script src="../shared/js/cr/ui/array_data_model.js"></script>
+ <script src="../shared/js/cr/ui/list_item.js"></script>
+ <script src="../shared/js/cr/ui/list_selection_model.js"></script>
+ <script src="../shared/js/cr/ui/list_selection_controller.js"></script>
+ <script src="../shared/js/cr/ui/list.js"></script>
+
+ <script src="../shared/js/cr/ui/splitter.js"></script>
+ <script src="../shared/js/cr/ui/table/table_splitter.js"></script>
+
+ <script src="../shared/js/cr/ui/table/table_column.js"></script>
+ <script src="../shared/js/cr/ui/table/table_column_model.js"></script>
+ <script src="../shared/js/cr/ui/table/table_header.js"></script>
+ <script src="../shared/js/cr/ui/table/table_list.js"></script>
+ <script src="../shared/js/cr/ui/table.js"></script>
+
+ <script src="main.js"></script>
+
+ <!-- Loads the other scripts. -->
+ <script src="includes.js"></script>
+
+ </head>
</head>
<body>
<div class="dialog-title" i18n-content="title"
@@ -32,8 +69,6 @@
visibleif='this.opt_.isShowCloseButton'></button>
</div>
</div>
- <script src="chrome://resources/js/i18n_template.js"></script>
- <script src="chrome://resources/js/i18n_process.js"></script>
+ <script src="../shared/js/i18n_process.js"></script>
</body>
</html>
-
diff --git a/chrome/browser/resources/task_manager/main.js b/chrome/browser/resources/task_manager/main.js
index 5df154a..ab68bef 100644
--- a/chrome/browser/resources/task_manager/main.js
+++ b/chrome/browser/resources/task_manager/main.js
@@ -145,16 +145,17 @@ TaskManager.prototype = {
this.opt_ = opt;
- this.initialized_ = true;
this.enableTaskManager();
this.dialogDom_ = dialogDom;
this.document_ = dialogDom.ownerDocument;
- $('close-window').addEventListener('click', this.close.bind(this));
- $('kill-process').addEventListener('click', this.killProcess.bind(this));
- $('about-memory-link').addEventListener('click',
- this.openAboutMemory.bind(this));
+ 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.is_column_shown_ = [];
for (var i = 0; i < DEFAULT_COLUMNS.length; i++) {
@@ -203,17 +204,31 @@ 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_();
+ this.initialized_ = true;
+
+ loadDelayedIncludes(this);
+ },
+
+ /**
+ * Additional initialization of taskmanager. This function is called when
+ * the loading of delayed scripts finished.
+ * @public
+ */
+ delayedInitialize: function () {
+ $('close-window').addEventListener('click', this.close.bind(this));
+ $('kill-process').addEventListener('click', this.killProcess.bind(this));
+ $('about-memory-link').addEventListener('click',
+ this.openAboutMemory.bind(this));
this.initColumnMenu_();
this.initTableMenu_();
- this.table_.redraw();
+
+ if (this.delayedInitLabels_) {
+ while (this.delayedInitLabels_.length > 0)
+ this.delayedInitLabels_.pop().call();
+ }
+
+ this.isFinishedInitDelayed_ = true;
},
initColumnModel_: function () {
@@ -352,6 +367,8 @@ TaskManager.prototype = {
},
renderColumn_: function(entry, columnId, table) {
+ this.delayedInitLabels_ = [];
+
var container = this.document_.createElement('div');
container.id = 'detail-container-' + columnId + '-pid' + entry.processId;
container.className = 'detail-container-' + columnId;
@@ -369,8 +386,15 @@ TaskManager.prototype = {
text.textContent = entry['title'][i];
label.appendChild(text);
- cr.ui.contextMenuHandler.addContextMenuProperty(label);
- label.contextMenu = this.tableContextMenu_;
+ var addContextMenu = function() {
+ cr.ui.contextMenuHandler.addContextMenuProperty(label);
+ label.contextMenu = this.tableContextMenu_;
+ };
+
+ if (this.isFinishedInitDelayed_)
+ addContextMenu.call(this);
+ else
+ this.delayedInitLabels_.push(addContextMenu.bind(this));
label.addEventListener('dblclick', (function(uniqueId) {
this.activatePage(uniqueId);