OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Defines global variables. | 5 // Defines global variables. |
6 var commands = TaskManagerCommands; | 6 var commands = TaskManagerCommands; |
7 var taskmanager = undefined; // This will be instantiated in main.js. | 7 var taskmanager = undefined; // This will be instantiated in main.js. |
8 | 8 |
9 /** | 9 /** |
10 * Invoked when a range of items has changed. | 10 * Invoked when a range of items has changed. |
11 */ | 11 */ |
12 function taskChanged(start, length, tasks) { | 12 function taskChanged(start, length, tasks) { |
13 var task = {type: 'change', start: start, length: length, tasks: tasks}; | 13 var task = {type: 'change', start: start, length: length, tasks: tasks}; |
14 | 14 |
15 if (taskmanager) taskmanager.processTaskChange(task); | 15 if (taskmanager) taskmanager.processTaskChange(task); |
16 } | 16 } |
17 | 17 |
| 18 // Cached list of enabled columns to prevent frequent access to localStorage. |
| 19 var cachedEnabledColumns; |
| 20 |
| 21 /** |
| 22 * Returns the dictionary which contains the list of columns and whether each |
| 23 * column is enabled or not. |
| 24 */ |
| 25 function getEnabledColumns() { |
| 26 // Use the cache after the second time since access to localStorage is slow. |
| 27 if (cachedEnabledColumns) |
| 28 return cachedEnabledColumns; |
| 29 |
| 30 var json = window.localStorage.getItem(ENABLED_COLUMNS_KEY); |
| 31 try { |
| 32 cachedEnabledColumns = JSON.parse(json) || {}; |
| 33 } catch (e) { |
| 34 cachedEnabledColumns = {}; |
| 35 } |
| 36 for (var i = 0; i < DEFAULT_COLUMNS.length; i++) { |
| 37 if (typeof(cachedEnabledColumns[DEFAULT_COLUMNS[i][0]]) == 'undefined') |
| 38 cachedEnabledColumns[DEFAULT_COLUMNS[i][0]] = DEFAULT_COLUMNS[i][3]; |
| 39 } |
| 40 return cachedEnabledColumns; |
| 41 } |
| 42 |
| 43 /** |
| 44 * Returns whether the given column (at |columnId|) is enabled or not. |
| 45 */ |
| 46 function isColumnEnabled(columnId) { |
| 47 return (getEnabledColumns())[columnId]; |
| 48 } |
| 49 |
| 50 /** |
| 51 * Sets whether the given column is enabled or not. |
| 52 */ |
| 53 function setColumnEnabled(columnId, newChecked) { |
| 54 commands.setUpdateColumn(columnId, newChecked); |
| 55 cachedEnabledColumns[columnId] = newChecked; |
| 56 var json = JSON.stringify(cachedEnabledColumns); |
| 57 window.localStorage.setItem(ENABLED_COLUMNS_KEY, json); |
| 58 } |
| 59 |
18 // Enable the taskmanager model before the loading of scripts. | 60 // Enable the taskmanager model before the loading of scripts. |
19 (function () { | 61 (function () { |
20 for (var i = 0; i < DEFAULT_COLUMNS.length; i++) { | 62 for (var i = 0; i < DEFAULT_COLUMNS.length; i++) { |
21 if (DEFAULT_COLUMNS[i][3]) | 63 var columnId = DEFAULT_COLUMNS[i][0]; |
22 commands.setUpdateColumn(DEFAULT_COLUMNS[i][0], true); | 64 if (isColumnEnabled(columnId)) |
| 65 commands.setUpdateColumn(columnId, true); |
23 } | 66 } |
24 commands.enableTaskManager(); | 67 commands.enableTaskManager(); |
25 commands.setUpdateColumn('canInspect', true); | 68 commands.setUpdateColumn('canInspect', true); |
26 commands.setUpdateColumn('canActivate', true); | 69 commands.setUpdateColumn('canActivate', true); |
27 })(); | 70 })(); |
OLD | NEW |