// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Defines global variables. var commands = TaskManagerCommands; var taskmanager = undefined; // This will be instantiated in main.js. /** * Invoked when a range of items has changed. * @param {Integer} start The start position of tasks to be changed * @param {Integer} length The length of tasks to be changed * @param {Array of task} tasks The array of updated task */ function taskChanged(start, length, tasks) { var task = {type: 'change', start: start, length: length, tasks: tasks}; if (taskmanager) taskmanager.processTaskChange(task); } // Cached list of enabled columns to prevent frequent access to localStorage. var cachedEnabledColumns; /** * @return {Dictionary} 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; } /** * @return {boolean} the given column (at |columnId|) is enabled or not. * @param {string} columnId The ID of the collumn to be checked. */ function isColumnEnabled(columnId) { return (getEnabledColumns())[columnId]; } /** * Sets the given column either enabled or disabled. * @param {string} columnId The ID of the collumn to be set. * @param {boolean} newChecked True, to set the column enable. False otherwise. */ 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++) { var columnId = DEFAULT_COLUMNS[i][0]; if (isColumnEnabled(columnId)) commands.setUpdateColumn(columnId, true); } commands.enableTaskManager(); commands.setUpdateColumn('canInspect', true); commands.setUpdateColumn('canActivate', true); })();