Add new certificateProvider extension API.
[chromium-blink-merge.git] / chrome / common / extensions / docs / examples / api / power / background.js
blob5fd9083b2181e5bd2fd5a470a56838863268045b
1 // Copyright (c) 2013 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.
5 /**
6 * States that the extension can be in.
7 */
8 var StateEnum = {
9 DISABLED: 'disabled',
10 DISPLAY: 'display',
11 SYSTEM: 'system'
14 /**
15 * Key used for storing the current state in {localStorage}.
17 var STATE_KEY = 'state';
19 /**
20 * Loads the locally-saved state asynchronously.
21 * @param {function} callback Callback invoked with the loaded {StateEnum}.
23 function loadSavedState(callback) {
24 chrome.storage.local.get(STATE_KEY, function(items) {
25 var savedState = items[STATE_KEY];
26 for (var key in StateEnum) {
27 if (savedState == StateEnum[key]) {
28 callback(savedState);
29 return;
32 callback(StateEnum.DISABLED);
33 });
36 /**
37 * Switches to a new state.
38 * @param {string} newState New {StateEnum} to use.
40 function setState(newState) {
41 var imagePrefix = 'night';
42 var title = '';
44 switch (newState) {
45 case StateEnum.DISABLED:
46 chrome.power.releaseKeepAwake();
47 imagePrefix = 'night';
48 title = chrome.i18n.getMessage('disabledTitle');
49 break;
50 case StateEnum.DISPLAY:
51 chrome.power.requestKeepAwake('display');
52 imagePrefix = 'day';
53 title = chrome.i18n.getMessage('displayTitle');
54 break;
55 case StateEnum.SYSTEM:
56 chrome.power.requestKeepAwake('system');
57 imagePrefix = 'sunset';
58 title = chrome.i18n.getMessage('systemTitle');
59 break;
60 default:
61 throw 'Invalid state "' + newState + '"';
64 var items = {};
65 items[STATE_KEY] = newState;
66 chrome.storage.local.set(items);
68 chrome.browserAction.setIcon({
69 path: {
70 '19': 'images/' + imagePrefix + '-19.png',
71 '38': 'images/' + imagePrefix + '-38.png'
73 });
74 chrome.browserAction.setTitle({title: title});
77 chrome.browserAction.onClicked.addListener(function() {
78 loadSavedState(function(state) {
79 switch (state) {
80 case StateEnum.DISABLED:
81 setState(StateEnum.DISPLAY);
82 break;
83 case StateEnum.DISPLAY:
84 setState(StateEnum.SYSTEM);
85 break;
86 case StateEnum.SYSTEM:
87 setState(StateEnum.DISABLED);
88 break;
89 default:
90 throw 'Invalid state "' + state + '"';
92 });
93 });
95 chrome.runtime.onStartup.addListener(function() {
96 loadSavedState(function(state) { setState(state); });
97 });
99 chrome.runtime.onInstalled.addListener(function(details) {
100 loadSavedState(function(state) { setState(state); });