("device_power_request_lock error %d", ret));
}
is_screen_state_locked = true;
+
+ /*
+ * In some cases Chromium requests power lock on screen backlight
+ * (e.g. when an mp4 video is played in the app). This results in
+ * overriding the power level set by the Web API.
+ *
+ * Below method prevents Chromium from locking the power level.
+ */
+ DisableChromiumInternalPowerLock();
+
return PlatformResult(ErrorCode::NO_ERROR);
}
is_screen_state_locked = false;
+ /*
+ * Below method enables Chromium to lock screen backlight power level,
+ * when it is no longer locked by the Web API.
+ */
+ EnableChromiumInternalPowerLock();
+
if (is_screen_bright_set) {
PlatformResult result = RestoreScreenBrightness();
if (result.IsError()) {
return PlatformResult(ErrorCode::NO_ERROR);
}
+void PowerManager::EnableChromiumInternalPowerLock() {
+ ScopeLogger();
+ Instance::PostMessage(&instance_, "__EnableChromiumInternalPowerLock");
+}
+
+void PowerManager::DisableChromiumInternalPowerLock() {
+ ScopeLogger();
+ Instance::PostMessage(&instance_, "__DisableChromiumInternalPowerLock");
+}
+
} // namespace power
} // namespace extension
common::PlatformResult ReleaseScreenState();
common::PlatformResult GetScreenBrightness(int* output);
+ void EnableChromiumInternalPowerLock();
+ void DisableChromiumInternalPowerLock();
+
PowerInstance& instance_;
bool is_screen_listener_set;
int max_brightness_;
});
extension_.setMessageListener(function(json) {
- var msg = JSON_.parse(json);
+ try {
+ var msg = JSON_.parse(json);
+ } catch (error) {
+ xwalk.utils.error('Invalid JSON received: ' + json);
+ }
var id;
if (msg.hasOwnProperty(this.CALLBACK_ID_KEY)) {