[widgetservice][utils] Fix CommonListenerManager implementation. 65/201565/3
authorMichal Michalski <m.michalski2@partner.samsung.com>
Fri, 15 Mar 2019 11:42:35 +0000 (12:42 +0100)
committerMichal Michalski <m.michalski2@partner.samsung.com>
Mon, 18 Mar 2019 12:01:44 +0000 (13:01 +0100)
CommonListenerManager implementation used native.getResultObject
on listener input before passing it to the callback. This behavior
is widgetservice specific and so it was moved outside
CommonListenerManager implementation.

[Verification]

Manual tests.

Change-Id: Ied82281a660562c2697f4f6c298ec11a2e2d5549
Signed-off-by: Michal Michalski <m.michalski2@partner.samsung.com>
src/utils/utils_api.js
src/widgetservice/widgetservice_api.js
src/widgetservice/widgetservice_instance.cc

index 88ce91a..a096ea3 100644 (file)
@@ -57,7 +57,7 @@ var CommonListenerManager = function(nativeMgr, managerName, onIdNotFound) {
 CommonListenerManager.prototype.onListenerCalled = function(msg) {
   for (var watchId in this.listeners) {
     if (this.listeners.hasOwnProperty(watchId)) {
-      this.listeners[watchId](this.native.getResultObject(msg));
+      this.listeners[watchId](msg);
     }
   }
 };
index 0126865..0844841 100644 (file)
@@ -337,8 +337,9 @@ Widget.prototype.addStateChangeListener = function() {
   }
 
   var func = function(msg) {
-    if (msg.widgetId === this.id) {
-      args.eventCallback(new WidgetInstance(msg, this), msg.event);
+    var result = native.getResultObject(msg);
+    if (result.widgetId === this.id) {
+      args.eventCallback(new WidgetInstance(result, this), result.event);
     }
   }.bind(this);
 
index a6b6df2..1b36c66 100644 (file)
@@ -37,8 +37,6 @@ using common::TizenSuccess;
 std::mutex WidgetServiceInstance::listener_mutex_;
 
 namespace {
-const common::ListenerToken kWidgetChangeCallbackToken{"WidgetStateChangeCallback"};
-
 const std::string kPrivilegeWidgetService = "http://tizen.org/privilege/widget.viewer";
 
 const std::string kLocale = "locale";
@@ -156,6 +154,12 @@ void bundleIterator(const char* key, const char* val, void* data) {
   obj->insert(std::make_pair(key, picojson::value(val)));
 }
 
+common::ListenerToken getWidgetStateChangeListenerToken(const std::string& callback_token,
+                                                        const std::string& widget_id) {
+  common::ListenerToken kWidgetChangeCallbackToken{callback_token + "_" + widget_id};
+  return kWidgetChangeCallbackToken;
+}
+
 }  // namespace
 
 WidgetServiceInstance::WidgetServiceInstance() {
@@ -472,7 +476,7 @@ void WidgetServiceInstance::CallWidgetLifecycleListener(const std::string& widge
   std::lock_guard<std::mutex> lock(listener_mutex_);
   const auto it = listener_map_.find(widget_id);
   if (listener_map_.end() != it) {
-    Post(kWidgetChangeCallbackToken, TizenSuccess{response});
+    Post(getWidgetStateChangeListenerToken("WidgetStateChangeCallback", widget_id), TizenSuccess{response});
     return;
   }