2 * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 var JSON_ = xwalk.JSON;
18 var validator_ = xwalk.utils.validator;
19 var types_ = validator_.Types;
20 var native_ = new xwalk.utils.NativeManager(extension);
21 var privUtils_ = xwalk.utils;
22 var T_ = xwalk.utils.type;
24 function ListenerManager(native, listenerName) {
27 this.listenerName = listenerName;
30 ListenerManager.prototype.onListenerCalled = function(msg) {
31 this.listener(msg.previousState, msg.changedState);
34 ListenerManager.prototype.addListener = function(callback) {
35 this.native.addListener(this.listenerName, this.onListenerCalled.bind(this));
36 this.listener = callback;
39 ListenerManager.prototype.removeListener = function() {
40 this.native.removeListener(this.listenerName);
44 ListenerManager.prototype.isListenerSet = function() {
45 return this.native.isListenerSet(this.listenerName);
48 var screenStateChangeListener = new ListenerManager(native_, 'ScreenStateChangeListener');
56 * An enumerator that indicates the power state for screen resource.
59 var PowerScreenState = {
60 SCREEN_OFF: 'SCREEN_OFF',
61 SCREEN_DIM: 'SCREEN_DIM',
62 SCREEN_NORMAL: 'SCREEN_NORMAL',
63 SCREEN_BRIGHT: 'SCREEN_BRIGHT'
67 * An enumerator that indicates the power state for cpu resource.
71 CPU_AWAKE: 'CPU_AWAKE'
74 var PowerState = Object.assign({}, PowerScreenState, PowerCpuState);
77 * This class provides functions to request and release power resource.
80 function PowerManager() {
81 // constructor of PowerManager
85 * Requests the minimum-state for a power resource.
86 * @param {!PowerResource} resource The power resource for which the request
88 * @param {!PowerState} state The minimal state in which the power resource
91 PowerManager.prototype.request = function() {
92 var args = validator_.validateMethod(arguments, [
96 values: T_.getValues(PowerResource)
101 values: T_.getValues(PowerState)
105 if (args.state === PowerScreenState.SCREEN_BRIGHT) {
107 'DEPRECATION WARNING: SCREEN_BRIGHT is deprecated and will be removed ' +
113 (args.resource === PowerResource.SCREEN &&
114 args.state === PowerCpuState.CPU_AWAKE) ||
115 (args.resource === PowerResource.CPU && args.state !== PowerCpuState.CPU_AWAKE) ||
116 (args.resource === PowerResource.SCREEN &&
117 args.state === PowerScreenState.SCREEN_OFF)
119 throw new WebAPIException(WebAPIException.INVALID_VALUES_ERR);
123 resource: args.resource,
127 var ret = native_.callSync('PowerManager_request', nativeParam);
128 if (native_.isFailure(ret)) {
129 throw native_.getErrorObject(ret);
134 * Releases the power state request for the given resource.
135 * @param {!PowerResource} resource The resource for which requests are to
138 PowerManager.prototype.release = function() {
139 var args = validator_.validateMethod(arguments, [
143 values: T_.getValues(PowerResource)
148 resource: args.resource
151 var ret = native_.callSync('PowerManager_release', nativeParam);
152 if (native_.isFailure(ret)) {
153 throw native_.getErrorObject(ret);
158 * Sets the screen state change callback and monitors its state changes.
159 * @param {!function} listener The screen state change callback.
161 PowerManager.prototype.setScreenStateChangeListener = function() {
162 var args = validator_.validateArgs(arguments, [
163 { name: 'listener', type: types_.FUNCTION }
166 if (!screenStateChangeListener.isListenerSet()) {
167 var ret = native_.callSync('PowerManager_setScreenStateChangeListener', {});
168 if (native_.isFailure(ret)) {
169 throw native_.getErrorObject(ret);
172 screenStateChangeListener.addListener(args.listener);
176 * Unsets the screen state change callback and stop monitoring it.
178 PowerManager.prototype.unsetScreenStateChangeListener = function() {
179 if (screenStateChangeListener.isListenerSet()) {
180 var ret = native_.callSync('PowerManager_unsetScreenStateChangeListener', {});
181 if (native_.isFailure(ret)) {
182 throw native_.getErrorObject(ret);
185 screenStateChangeListener.removeListener();
189 * Gets the screen brightness level of an application, from 0 to 1.
190 * @return {number} Current screen brightness value.
192 PowerManager.prototype.getScreenBrightness = function() {
193 var ret = native_.callSync('PowerManager_getScreenBrightness', {});
194 if (native_.isFailure(ret)) {
195 throw native_.getErrorObject(ret);
197 return native_.getResultObject(ret);
202 * Sets the screen brightness level for an application, from 0 to 1.
203 * @param {!number} brightness The screen brightness value to set.
205 PowerManager.prototype.setScreenBrightness = function() {
206 var args = validator_.validateArgs(arguments, [
207 { name: 'brightness', type: types_.DOUBLE }
210 if (args.brightness < 0 || args.brightness > 1) {
211 throw new WebAPIException(WebAPIException.INVALID_VALUES_ERR);
214 var ret = native_.callSync('PowerManager_setScreenBrightness', {
215 brightness: args.brightness
217 if (native_.isFailure(ret)) {
218 throw native_.getErrorObject(ret);
223 * Returns true if the screen is on.
224 * @return {boolean} true if screen is on.
226 PowerManager.prototype.isScreenOn = function() {
227 var ret = native_.callSync('PowerManager_isScreenOn', {});
228 if (native_.isFailure(ret)) {
229 throw native_.getErrorObject(ret);
231 return native_.getResultObject(ret);
236 * Restores the screen brightness to the system default setting value.
238 PowerManager.prototype.restoreScreenBrightness = function() {
239 var ret = native_.callSync('PowerManager_restoreScreenBrightness', {});
240 if (native_.isFailure(ret)) {
241 throw native_.getErrorObject(ret);
246 * Turns the screen on.
248 PowerManager.prototype.turnScreenOn = function() {
250 'DEPRECATION WARNING: turnScreenOn() is deprecated and will be removed from ' +
251 'next release. Use request() instead.'
254 var ret = native_.callSync('PowerManager_turnScreenOn', {});
255 if (native_.isFailure(ret)) {
256 throw native_.getErrorObject(ret);
261 * Turns the screen off.
263 PowerManager.prototype.turnScreenOff = function() {
265 'DEPRECATION WARNING: turnScreenOff() is deprecated and will be removed from ' +
266 'next release. Use release() instead.'
269 var ret = native_.callSync('PowerManager_turnScreenOff', {});
270 if (native_.isFailure(ret)) {
271 throw native_.getErrorObject(ret);
275 exports = new PowerManager();