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

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

Powered by Google App Engine
This is Rietveld 408576698