Chromium Code Reviews| Index: chrome/common/extensions/docs/examples/api/power/background.js |
| diff --git a/chrome/common/extensions/docs/examples/api/power/background.js b/chrome/common/extensions/docs/examples/api/power/background.js |
| index edd18a779d65cf2bbdcf4f700cded2295333ce16..f33c7f8f4b07ce9df503b9fa1d084ac284ce472d 100644 |
| --- a/chrome/common/extensions/docs/examples/api/power/background.js |
| +++ b/chrome/common/extensions/docs/examples/api/power/background.js |
| @@ -3,23 +3,18 @@ |
| // found in the LICENSE file. |
| /** |
| - * Available levels of power-saving-overriding. |
| + * States that the extension can be in. |
| */ |
| -var LevelEnum = { |
| +var StateEnum = { |
| DISABLED: '', |
| DISPLAY: 'display', |
| SYSTEM: 'system' |
| }; |
| /** |
| - * Key used for storing the current level in {localStorage}. |
| + * Key used for storing the current state in {localStorage}. |
| */ |
| -var LEVEL_KEY = 'level'; |
| - |
| -/** |
| - * Current {LevelEnum}. |
| - */ |
| -var currentLevel = LevelEnum.DISABLED; |
| +var STATE_KEY = 'level'; |
| /** |
| * Should the old {chrome.experimental.power} API be used rather than |
| @@ -28,40 +23,40 @@ var currentLevel = LevelEnum.DISABLED; |
| var useOldApi = !chrome.power; |
| /** |
| - * Returns the previously-used level. |
| - * @return {string} Saved {LevelEnum} from local storage. |
| + * Returns the currently-used state. |
| + * @return {string} Saved {StateEnum} from local storage. |
| */ |
| -function getInitialLevel() { |
| - if (LEVEL_KEY in localStorage) { |
| - var savedLevel = localStorage[LEVEL_KEY]; |
| - for (var key in LevelEnum) { |
| - if (savedLevel == LevelEnum[key]) { |
| - return savedLevel; |
| +function getSavedState() { |
| + if (STATE_KEY in localStorage) { |
|
Matt Perry
2013/04/08 21:00:22
We're trying to move away from localStorage. Can y
|
| + var savedState = localStorage[STATE_KEY]; |
| + for (var key in StateEnum) { |
| + if (savedState == StateEnum[key]) { |
| + return savedState; |
| } |
| } |
| } |
| - return LevelEnum.DISABLED; |
| + return StateEnum.DISABLED; |
| } |
| /** |
| - * Switches to a new power-saving-overriding level. |
| - * @param {string} newLevel New {LevelEnum} to use. |
| + * Switches to a new state. |
| + * @param {string} newState New {StateEnum} to use. |
| */ |
| -function setLevel(newLevel) { |
| +function setState(newState) { |
| var imagePrefix = 'night'; |
| var title = ''; |
| // The old API doesn't support the "system" level. |
| - if (useOldApi && newLevel == LevelEnum.SYSTEM) |
| - newLevel = LevelEnum.DISPLAY; |
| + if (useOldApi && newState == StateEnum.SYSTEM) |
| + newState = StateEnum.DISPLAY; |
| - switch (newLevel) { |
| - case LevelEnum.DISABLED: |
| + switch (newState) { |
| + case StateEnum.DISABLED: |
| (useOldApi ? chrome.experimental.power : chrome.power).releaseKeepAwake(); |
| imagePrefix = 'night'; |
| title = chrome.i18n.getMessage('disabledTitle'); |
| break; |
| - case LevelEnum.DISPLAY: |
| + case StateEnum.DISPLAY: |
| if (useOldApi) |
| chrome.experimental.power.requestKeepAwake(function() {}); |
| else |
| @@ -69,17 +64,17 @@ function setLevel(newLevel) { |
| imagePrefix = 'day'; |
| title = chrome.i18n.getMessage('displayTitle'); |
| break; |
| - case LevelEnum.SYSTEM: |
| + case StateEnum.SYSTEM: |
| chrome.power.requestKeepAwake('system'); |
| imagePrefix = 'sunset'; |
| title = chrome.i18n.getMessage('systemTitle'); |
| break; |
| default: |
| - throw 'Invalid level "' + newLevel + '"'; |
| + throw 'Invalid state "' + newState + '"'; |
| } |
| - currentLevel = newLevel; |
| - localStorage[LEVEL_KEY] = currentLevel; |
| + currentState = newState; |
| + localStorage[STATE_KEY] = currentState; |
| chrome.browserAction.setIcon({ |
| path: { |
| @@ -90,24 +85,28 @@ function setLevel(newLevel) { |
| chrome.browserAction.setTitle({title: title}); |
| } |
| -/** |
| - * Cycles levels in response to browser action icon clicks. |
| - */ |
| -function handleClicked() { |
| - switch (currentLevel) { |
| - case LevelEnum.DISABLED: |
| - setLevel(LevelEnum.DISPLAY); |
| +chrome.browserAction.onClicked.addListener(function() { |
| + var currentState = getSavedState(); |
| + switch (currentState) { |
| + case StateEnum.DISABLED: |
| + setState(StateEnum.DISPLAY); |
| break; |
| - case LevelEnum.DISPLAY: |
| - setLevel(useOldApi ? LevelEnum.DISABLED : LevelEnum.SYSTEM); |
| + case StateEnum.DISPLAY: |
| + setState(useOldApi ? StateEnum.DISABLED : StateEnum.SYSTEM); |
| break; |
| - case LevelEnum.SYSTEM: |
| - setLevel(LevelEnum.DISABLED); |
| + case StateEnum.SYSTEM: |
| + setState(StateEnum.DISABLED); |
| break; |
| default: |
| - throw 'Invalid level "' + currentLevel + '"'; |
| + throw 'Invalid state "' + currentState + '"'; |
| } |
| -} |
| +}); |
| + |
| +chrome.runtime.onStartup.addListener(function() { |
| + setState(getSavedState()); |
| +}); |
| -chrome.browserAction.onClicked.addListener(handleClicked); |
| -setLevel(getInitialLevel()); |
| +// TODO(derat): Remove this once http://crbug.com/222473 is fixed. |
| +chrome.windows.onCreated.addListener(function() { |
| + setState(getSavedState()); |
| +}); |