[Power] fixes for TCT tests.
authorLukasz Bardeli <l.bardeli@samsung.com>
Tue, 28 Apr 2015 10:54:54 +0000 (12:54 +0200)
committerPawel Andruszkiewicz <p.andruszkie@samsung.com>
Tue, 28 Apr 2015 13:22:13 +0000 (22:22 +0900)
[Verification] Code compiles without error.

Change-Id: I0f54415ab2bccd0da31bbe49c400b9801d13ea37
Signed-off-by: Lukasz Bardeli <l.bardeli@samsung.com>
src/power/power_api.js
src/power/power_instance.cc
src/power/power_manager.cc
src/power/power_manager.h

index 6d746a9cc1062a8a47b768c2f96d637cd811e9bb..2316922e3126ea633ac36152d2fb0d76b5d02c41 100755 (executable)
@@ -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();
 };
 
 /**
index bc4aa204d19e57fbe2e44db83087ed9465839d1a..5ce125dafd068be624cfd4420a0b021c9ec97a88 100755 (executable)
@@ -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<picojson::object>();
   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);
index 11e5a9d506c28999a392062bbc876d76d6328d2c..85fd2adcc3259592cf329b18f9c803ae91740d93 100755 (executable)
@@ -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;
 
index c419c4b4b981d43b57f1dab2148e2e19c78b21d9..1680c9103be6faee23018037d6122ab0c7a2f4ee 100755 (executable)
@@ -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);