Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: chrome/common/extensions/docs/examples/api/power/background.js

Issue 12576018: Add chrome.power extension API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add copyright notice to example extension Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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.
4
5 /**
6 * Available levels of power-saving-overriding.
7 */
8 var LevelEnum = {
9 DISABLED: '',
10 DISPLAY: 'display',
11 SYSTEM: 'system'
12 };
13
14 /**
15 * Key used for storing the current level in {localStorage}.
16 */
17 var LEVEL_KEY = 'level';
18
19 /**
20 * Current {LevelEnum}.
21 */
22 var currentLevel = LevelEnum.DISABLED;
23
24 /**
25 * Should the old {chrome.experimental.power} API be used rather than
26 * {chrome.power}?
27 */
28 var useOldApi = !chrome.power;
29
30 /**
31 * Returns the previously-used level.
32 * @return {string} Saved {LevelEnum} from local storage.
33 */
34 function getInitialLevel() {
35 if (LEVEL_KEY in localStorage) {
36 var savedLevel = localStorage[LEVEL_KEY];
37 for (var key in LevelEnum) {
38 if (savedLevel == LevelEnum[key]) {
39 return savedLevel;
40 }
41 }
42 }
43 return LevelEnum.DISABLED;
44 }
45
46 /**
47 * Switches to a new power-saving-overriding level.
48 * @param {string} newLevel New {LevelEnum} to use.
49 */
50 function setLevel(newLevel) {
51 var imagePrefix = 'night';
52 var title = '';
53
54 // The old API doesn't support the "system" level.
55 if (useOldApi && newLevel == LevelEnum.SYSTEM)
56 newLevel = LevelEnum.DISPLAY;
57
58 switch (newLevel) {
59 case LevelEnum.DISABLED:
60 (useOldApi ? chrome.experimental.power : chrome.power).releaseKeepAwake();
61 imagePrefix = 'night';
62 title = chrome.i18n.getMessage('disabledTitle');
63 break;
64 case LevelEnum.DISPLAY:
65 if (useOldApi)
66 chrome.experimental.power.requestKeepAwake(function() {});
67 else
68 chrome.power.requestKeepAwake('display');
69 imagePrefix = 'day';
70 title = chrome.i18n.getMessage('displayTitle');
71 break;
72 case LevelEnum.SYSTEM:
73 chrome.power.requestKeepAwake('system');
74 imagePrefix = 'sunset';
75 title = chrome.i18n.getMessage('systemTitle');
76 break;
77 default:
78 throw 'Invalid level "' + newLevel + '"';
79 }
80
81 currentLevel = newLevel;
82 localStorage[LEVEL_KEY] = currentLevel;
83
84 chrome.browserAction.setIcon({
85 path: {
86 '19': 'images/' + imagePrefix + '-19.png',
87 '38': 'images/' + imagePrefix + '-38.png'
88 }
89 });
90 chrome.browserAction.setTitle({title: title});
91 }
92
93 /**
94 * Cycles levels in response to browser action icon clicks.
95 */
96 function handleClicked() {
97 switch (currentLevel) {
98 case LevelEnum.DISABLED:
99 setLevel(LevelEnum.DISPLAY);
100 break;
101 case LevelEnum.DISPLAY:
102 setLevel(useOldApi ? LevelEnum.DISABLED : LevelEnum.SYSTEM);
103 break;
104 case LevelEnum.SYSTEM:
105 setLevel(LevelEnum.DISABLED);
106 break;
107 default:
108 throw 'Invalid level "' + currentLevel + '"';
109 }
110 }
111
112 setLevel(getInitialLevel());
113 chrome.browserAction.onClicked.addListener(handleClicked);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698