- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / resources / task_manager / preload.js
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
3 // found in the LICENSE file.
4
5 // Defines global variables.
6 var commands = TaskManagerCommands;
7 var taskmanager = undefined;  // This will be instantiated in main.js.
8
9 /**
10  * Invoked when a range of items has changed.
11  * @param {Integer} start The start position of tasks to be changed
12  * @param {Integer} length The length of tasks to be changed
13  * @param {Array of task} tasks The array of updated task
14  */
15 function taskChanged(start, length, tasks) {
16   var task = {type: 'change', start: start, length: length, tasks: tasks};
17
18   if (taskmanager) taskmanager.processTaskChange(task);
19 }
20
21 // Cached list of enabled columns to prevent frequent access to localStorage.
22 var cachedEnabledColumns;
23
24 /**
25  * @return {Dictionary} the dictionary which contains the list of columns and
26  * whether each column is enabled or not.
27  */
28 function getEnabledColumns() {
29   // Use the cache after the second time since access to localStorage is slow.
30   if (cachedEnabledColumns)
31     return cachedEnabledColumns;
32
33   var json = window.localStorage.getItem(ENABLED_COLUMNS_KEY);
34   try {
35     cachedEnabledColumns = JSON.parse(json) || {};
36   } catch (e) {
37     cachedEnabledColumns = {};
38   }
39   for (var i = 0; i < DEFAULT_COLUMNS.length; i++) {
40     if (typeof(cachedEnabledColumns[DEFAULT_COLUMNS[i][0]]) == 'undefined')
41       cachedEnabledColumns[DEFAULT_COLUMNS[i][0]] = DEFAULT_COLUMNS[i][3];
42   }
43   return cachedEnabledColumns;
44 }
45
46 /**
47  * @return {boolean} the given column (at |columnId|) is enabled or not.
48  * @param {string} columnId The ID of the collumn to be checked.
49  */
50 function isColumnEnabled(columnId) {
51   return (getEnabledColumns())[columnId];
52 }
53
54 /**
55  * Sets the given column either enabled or disabled.
56  * @param {string} columnId The ID of the collumn to be set.
57  * @param {boolean} newChecked True, to set the column enable. False otherwise.
58  */
59 function setColumnEnabled(columnId, newChecked) {
60   commands.setUpdateColumn(columnId, newChecked);
61   cachedEnabledColumns[columnId] = newChecked;
62   var json = JSON.stringify(cachedEnabledColumns);
63   window.localStorage.setItem(ENABLED_COLUMNS_KEY, json);
64 }
65
66 // Enable the taskmanager model before the loading of scripts.
67 (function() {
68   for (var i = 0; i < DEFAULT_COLUMNS.length; i++) {
69     var columnId = DEFAULT_COLUMNS[i][0];
70     if (isColumnEnabled(columnId))
71       commands.setUpdateColumn(columnId, true);
72   }
73   commands.enableTaskManager();
74   commands.setUpdateColumn('canInspect', true);
75   commands.setUpdateColumn('canActivate', true);
76 })();