From: Lukasz Bardeli Date: Tue, 28 Apr 2015 10:54:54 +0000 (+0200) Subject: [Power] fixes for TCT tests. X-Git-Tag: submit/tizen_tv/20150603.064601~1^2~121 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4f043b8b351c2f8d36341c6338a4419b1e347a68;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Power] fixes for TCT tests. [Verification] Code compiles without error. Change-Id: I0f54415ab2bccd0da31bbe49c400b9801d13ea37 Signed-off-by: Lukasz Bardeli --- diff --git a/src/power/power_api.js b/src/power/power_api.js index 6d746a9c..2316922e 100755 --- a/src/power/power_api.js +++ b/src/power/power_api.js @@ -6,18 +6,29 @@ var validator_ = xwalk.utils.validator; var types_ = validator_.Types; var native_ = new xwalk.utils.NativeManager(extension); -var callbackId = 0; -var callbacks = {}; +function ListenerManager(native, listenerName) { + this.listener; + this.native = native; + this.listenerName = listenerName; +} -extension.setMessageListener(function(json) { - var result = JSON.parse(json); - var callback = callbacks[result['callbackId']]; - callback(result); -}); +ListenerManager.prototype.onListenerCalled = function(msg) { + if(this.listener) { + this.listener(msg.prev_state, msg.new_state); + } +}; -function nextCallbackId() { - return callbackId++; -} +ListenerManager.prototype.addListener = function(callback) { + this.native.addListener(this.listenerName, this.onListenerCalled.bind(this)); + this.listener = callback; +}; + +ListenerManager.prototype.removeListener = function() { + this.native.removeListener(this.listenerName); + delete this.listener; +}; + +var screenStateChangeListener = new ListenerManager(native_, "SCREEN_STATE_LISTENER"); function callNative(cmd, args) { var json = {'cmd':cmd, 'args':args}; @@ -30,7 +41,7 @@ function callNative(cmd, args) { } if (result['status'] == 'success') { - if(result['result']) { + if('result' in result) { return result['result']; } return true; @@ -135,7 +146,6 @@ PowerManager.prototype.release = function(resource) { var nativeParam = { }; - if (args['resource']) { nativeParam['resource'] = args.resource; } @@ -157,14 +167,14 @@ PowerManager.prototype.setScreenStateChangeListener = function(listener) { {name: 'listener', type: types_.FUNCTION} ]); - native_.addListener("SCREEN_STATE_LISTENER", args.listener); + screenStateChangeListener.addListener(args.listener); }; /** * Unsets the screen state change callback and stop monitoring it. */ PowerManager.prototype.unsetScreenStateChangeListener = function() { - native_.removeListener("SCREEN_STATE_LISTENER"); + screenStateChangeListener.removeListener(); }; /** diff --git a/src/power/power_instance.cc b/src/power/power_instance.cc index bc4aa204..5ce125da 100755 --- a/src/power/power_instance.cc +++ b/src/power/power_instance.cc @@ -55,11 +55,11 @@ PowerInstance::PowerInstance() { REGISTER_SYNC("PowerManager_turnScreenOn", PowerManagerTurnscreenon); REGISTER_SYNC("PowerManager_setScreenBrightness", PowerManagerSetscreenbrightness); #undef REGISTER_SYNC - PowerManager::GetInstance()->AddListener(this); } PowerInstance::~PowerInstance() { + PowerManager::GetInstance()->RemoveListener(this); } enum PowerCallbacks { @@ -227,8 +227,7 @@ void PowerInstance::OnScreenStateChanged(PowerState prev_state, PowerState new_s picojson::value event = picojson::value(picojson::object()); picojson::object& obj = event.get(); obj["cmd"] = picojson::value("ScreenStateChanged"); - obj["listenerId"] = picojson::value("ScreenStateChanged"); - + obj["listenerId"] = picojson::value("SCREEN_STATE_LISTENER"); for (auto it = kPowerStateMap.begin(); it != kPowerStateMap.end(); ++it) { if (it->second == prev_state) { obj["prev_state"] = picojson::value(it->first); diff --git a/src/power/power_manager.cc b/src/power/power_manager.cc index 11e5a9d5..85fd2adc 100755 --- a/src/power/power_manager.cc +++ b/src/power/power_manager.cc @@ -111,6 +111,10 @@ void PowerManager::AddListener(PowerManagerListener* listener) { listeners_.push_back(listener); } +void PowerManager::RemoveListener(PowerManagerListener* listener) { + listeners_.remove(listener); +} + PlatformResult PowerManager::Request(PowerResource resource, PowerState state) { if (resource == POWER_RESOURCE_SCREEN && state == POWER_STATE_CPU_AWAKE) return PlatformResult(ErrorCode::INVALID_VALUES_ERR, "invalid PowerState"); @@ -397,7 +401,7 @@ PlatformResult PowerManager::RestoreSettedBrightness() { return result; } -void PowerManager::BroadcastScreenState(PowerState current){ +void PowerManager::BroadcastScreenState(PowerState current) { if (current_state_ == current) return; diff --git a/src/power/power_manager.h b/src/power/power_manager.h index c419c4b4..1680c910 100755 --- a/src/power/power_manager.h +++ b/src/power/power_manager.h @@ -36,6 +36,7 @@ class PowerManagerListener { class PowerManager { public: void AddListener(PowerManagerListener* listener); + void RemoveListener(PowerManagerListener* listener); common::PlatformResult Request(PowerResource resource, PowerState state); common::PlatformResult Release(PowerResource resource); common::PlatformResult GetScreenBrightness(double* output);