Index: chrome/browser/resources/task_manager/preload.js |
diff --git a/chrome/browser/resources/task_manager/preload.js b/chrome/browser/resources/task_manager/preload.js |
index d5e9952a28ade796597ad431d5fbba1170f1765e..db49586394ecebbb97f21b18e0e9bb4ab31d121a 100644 |
--- a/chrome/browser/resources/task_manager/preload.js |
+++ b/chrome/browser/resources/task_manager/preload.js |
@@ -15,11 +15,54 @@ function taskChanged(start, length, tasks) { |
if (taskmanager) taskmanager.processTaskChange(task); |
} |
+// Cached list of enabled columns to prevent frequent access to localStorage. |
+var cachedEnabledColumns; |
+ |
+/** |
+ * Returns the dictionary which contains the list of columns and whether each |
+ * column is enabled or not. |
+ */ |
+function getEnabledColumns() { |
+ // Use the cache after the second time since access to localStorage is slow. |
+ if (cachedEnabledColumns) |
+ return cachedEnabledColumns; |
+ |
+ var json = window.localStorage.getItem(ENABLED_COLUMNS_KEY); |
+ try { |
+ cachedEnabledColumns = JSON.parse(json) || {}; |
+ } catch (e) { |
+ cachedEnabledColumns = {}; |
+ } |
+ for (var i = 0; i < DEFAULT_COLUMNS.length; i++) { |
+ if (typeof(cachedEnabledColumns[DEFAULT_COLUMNS[i][0]]) == 'undefined') |
+ cachedEnabledColumns[DEFAULT_COLUMNS[i][0]] = DEFAULT_COLUMNS[i][3]; |
+ } |
+ return cachedEnabledColumns; |
+} |
+ |
+/** |
+ * Returns whether the given column (at |columnId|) is enabled or not. |
+ */ |
+function isColumnEnabled(columnId) { |
+ return (getEnabledColumns())[columnId]; |
+} |
+ |
+/** |
+ * Sets whether the given column is enabled or not. |
+ */ |
+function setColumnEnabled(columnId, newChecked) { |
+ commands.setUpdateColumn(columnId, newChecked); |
+ cachedEnabledColumns[columnId] = newChecked; |
+ var json = JSON.stringify(cachedEnabledColumns); |
+ window.localStorage.setItem(ENABLED_COLUMNS_KEY, json); |
+} |
+ |
// Enable the taskmanager model before the loading of scripts. |
(function () { |
for (var i = 0; i < DEFAULT_COLUMNS.length; i++) { |
- if (DEFAULT_COLUMNS[i][3]) |
- commands.setUpdateColumn(DEFAULT_COLUMNS[i][0], true); |
+ var columnId = DEFAULT_COLUMNS[i][0]; |
+ if (isColumnEnabled(columnId)) |
+ commands.setUpdateColumn(columnId, true); |
} |
commands.enableTaskManager(); |
commands.setUpdateColumn('canInspect', true); |