[Mediacontroller] Fix for commands reply.
authorTomasz Marciniak <t.marciniak@samsung.com>
Wed, 24 Jun 2015 10:22:12 +0000 (12:22 +0200)
committerTomasz Marciniak <t.marciniak@samsung.com>
Wed, 24 Jun 2015 10:38:59 +0000 (12:38 +0200)
[Verification] Code compiles without errors.
TCT pass rate 93.41% (167/156/6/5/0)

Signed-off-by: Tomasz Marciniak <t.marciniak@samsung.com>
Change-Id: Ib254e2b06bc062af2321899a0a5fe7a005d31e35

src/mediacontroller/mediacontroller_api.js
src/mediacontroller/mediacontroller_server.cc

index a19e47aeee4659b205f7ac28722ee967ec794dd6..bcace46eb2219f3969317a7fcf2fec9fc8b3ff20 100755 (executable)
@@ -72,10 +72,11 @@ ListenerManager.prototype.removeListener = function(watchId) {
 };
 
 var ServerCommandListener = new ListenerManager(native_, '_ServerCommandListener', function(msg, listener) {
-  var data = listener(msg.clientName, msg.command, msg.data);
+  var data = undefined;
+  data = listener(msg.clientName, msg.command, msg.data);
 
-  if (type_.isNullOrUndefined(data)) {
-    return;
+  if (type_.isUndefined(data)) {
+   data = null;
   }
 
   var nativeData = {
index 98bcfe45999cb5b0afb6dd452acbfb3c16969438..413a339549299852629b82a9a1ab973b6af38166 100755 (executable)
@@ -214,8 +214,10 @@ void MediaControllerServer::OnCommandReceived(const char* client_name,
 
   int ret;
   char* data_str = nullptr;
+  char* reply_id_str = nullptr;
   SCOPE_EXIT {
     free(data_str);
+    free(reply_id_str);
   };
 
   ret = bundle_get_str(bundle, "data", &data_str);
@@ -224,6 +226,12 @@ void MediaControllerServer::OnCommandReceived(const char* client_name,
     return;
   }
 
+  ret = bundle_get_str(bundle, "replyId", &reply_id_str);
+  if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
+    LOGGER(ERROR) << "bundle_get_str(replyId) failed, error: " << ret;
+    return;
+  }
+
   picojson::value data;
   std::string err;
   picojson::parse(data, data_str, data_str + strlen(data_str), &err);
@@ -241,6 +249,7 @@ void MediaControllerServer::OnCommandReceived(const char* client_name,
     server->OnPlaybackPositionCommand(client_name,
                                       static_cast<unsigned long long>(position),
                                       server);
+    server->CommandReply(client_name, reply_id_str, data);
     return;
   }
   if (command == kInternalCommandSendShuffleMode) {
@@ -249,6 +258,7 @@ void MediaControllerServer::OnCommandReceived(const char* client_name,
     server->OnShuffleModeCommand(client_name,
                                  mode ? SHUFFLE_MODE_ON : SHUFFLE_MODE_OFF,
                                  server);
+    server->CommandReply(client_name, reply_id_str, data);
     return;
   }
   if (command == kInternalCommandSendRepeatMode) {
@@ -257,6 +267,7 @@ void MediaControllerServer::OnCommandReceived(const char* client_name,
     server->OnRepeatModeCommand(client_name,
                                 mode ? REPEAT_MODE_ON : REPEAT_MODE_OFF,
                                 server);
+    server->CommandReply(client_name, reply_id_str, data);
     return;
   }
 
@@ -264,17 +275,6 @@ void MediaControllerServer::OnCommandReceived(const char* client_name,
     picojson::value request = picojson::value(picojson::object());
     picojson::object& request_o = request.get<picojson::object>();
 
-    char* reply_id_str = nullptr;
-    SCOPE_EXIT {
-      free(reply_id_str);
-    };
-
-    ret = bundle_get_str(bundle, "replyId", &reply_id_str);
-    if (ret != MEDIA_CONTROLLER_ERROR_NONE) {
-      LOGGER(ERROR) << "bundle_get_str(replyId) failed, error: " << ret;
-      return;
-    }
-
     request_o["clientName"] = picojson::value(std::string(client_name));
     request_o["command"] = picojson::value(std::string(command));
     request_o["replyId"] = picojson::value(std::string(reply_id_str));