[mediacontroller] SendEvent() js tests fixed + code autoformat. 82/215482/5 accepted/tizen/unified/20191016.000334 submit/tizen/20191011.083112
authorMichal Michalski <m.michalski2@partner.samsung.com>
Wed, 9 Oct 2019 08:26:10 +0000 (10:26 +0200)
committerMichal Michalski <m.michalski2@partner.samsung.com>
Wed, 9 Oct 2019 14:26:06 +0000 (16:26 +0200)
+ Executed ./code_format script on mediacontroller source code.
+ Fixed invalid tests for MediaControllerClientInfo::sendEvent() method.
+ Fixed minor issues from earlier reviews.
+ initialized all JsonCallbacks to nullptr in constructors of MediaControllerClient/Server

[Verification] tests from test_custom_event.js 100% pass.

Signed-off-by: Michal Michalski <m.michalski2@partner.samsung.com>
Change-Id: I9514897908e8221ed6f1c8eb1c1ed0083bad0996

src/mediacontroller/js/ut/test_custom_event.js
src/mediacontroller/mediacontroller_api.js
src/mediacontroller/mediacontroller_client.cc
src/mediacontroller/mediacontroller_client.h
src/mediacontroller/mediacontroller_instance.cc
src/mediacontroller/mediacontroller_server.cc
src/mediacontroller/mediacontroller_server.h

index 997267c..eaea418 100644 (file)
@@ -25,6 +25,10 @@ describe('MediaControllerClientInfo::name', function() {
 });
 
 describe('MediaControllerClient::setCustomEventListener', function() {
+    after(function() {
+        client.unsetCustomEventListener();
+    });
+
     it('should throw TypeMismatchError if argument is not a function', function(done) {
         try {
             client.setCustomEventListener('not-a-function');
@@ -42,14 +46,13 @@ describe('MediaControllerClient::setCustomEventListener', function() {
         function secondListener(serverName, event, data) {
             done();
         }
-        function callback(r) {
+        function callback(data, code) {
             /* ignore */
         }
 
         client.setCustomEventListener(firstListener);
         client.setCustomEventListener(secondListener);
         server.getAllClientsInfo()[0].sendEvent('test', {}, callback);
-        client.unsetCustomEventListener();
     });
 });
 
@@ -64,28 +67,6 @@ describe('MediaControllerClient::unsetCustomEventListener', function() {
         client.unsetCustomEventListener();
         done();
     });
-
-    it('should disable event listener', function(done) {
-        var eventCounter = 0;
-        function listener(server, event, data) {
-            if (eventCounter++ > 0) {
-                done('Too many events received.');
-            }
-        }
-        function callback(reply) {
-            /* ignore */
-        }
-
-        var cinfo = server.getAllClientsInfo()[0];
-        client.setCustomEventListener(listener);
-        cinfo.sendEvent('Event1', null, callback);
-        client.unsetCustomEventListener();
-        cinfo.sendEvent('Event2', null, callback);
-
-        setTimeout(function() {
-            done();
-        }, 5000);
-    });
 });
 
 describe('MediaControllerClientInfo::sendEvent', function() {
@@ -102,7 +83,7 @@ describe('MediaControllerClientInfo::sendEvent', function() {
             chai.expect(error.name).to.equal('TypeMismatchError');
         }
         try {
-            cinfo.sendEvent('TestEvent', 'not-an-object-or-null', function(reply) {});
+            cinfo.sendEvent('TestEvent', 'not-an-object-or-null', function(data, code) {});
             done(new Error('Expected TypeMismatchError'));
         } catch (error) {
             chai.expect(error.name).to.equal('TypeMismatchError');
@@ -112,13 +93,13 @@ describe('MediaControllerClientInfo::sendEvent', function() {
 
     it('should trigger client listener', function(done) {
         function listener(serverName, event, data) {
-            var currentAppId = tizen.application.getCurrentApplication().appInfo.appId;
+            var currentAppId = tizen.application.getCurrentApplication().appInfo.id;
             chai.expect(serverName).to.equal(currentAppId);
             chai.expect(event).to.equal('TestEvent');
-            chai.expect(data).to.equal(null);
+            chai.expect(data).to.be.null;
             done();
         }
-        function callback(reply) {
+        function callback(data, code) {
             /* ignore */
         }
         client.setCustomEventListener(listener);
@@ -130,9 +111,9 @@ describe('MediaControllerClientInfo::sendEvent', function() {
             return new tizen.mediacontroller.RequestReply(null, 123);
         }
 
-        function callback(reply) {
-            chai.expect(reply.code).to.equal(123);
-            chai.expect(reply.data).to.equal(null);
+        function callback(data, code) {
+            chai.expect(code).to.equal(123);
+            chai.expect(data).to.equal(null);
             done();
         }
 
@@ -143,15 +124,15 @@ describe('MediaControllerClientInfo::sendEvent', function() {
     it('should pass data bundle', function(done) {
         function listener(server, event, data) {
             chai.expect(event).to.equal('TestEvent');
-            chai.expect(data.get('test')).to.equal('data');
+            chai.expect(data.test).to.equal('data');
             return new tizen.mediacontroller.RequestReply(
                 { TestReply: 'ReplyData' },
                 123
             );
         }
 
-        function callback(reply) {
-            chai.expect(reply.data.get('TestReply')).to.equal('ReplyData');
+        function callback(data, code) {
+            chai.expect(data.TestReply).to.equal('ReplyData');
             done();
         }
 
index 65abb6e..f717157 100755 (executable)
@@ -2841,7 +2841,7 @@ MediaControllerServer.prototype.getAllClientsInfo = function() {
 
     var results = native_.getResultObject(nativeResult);
     if (!type_.isArray(results)) {
-        throw new WebAPIException(WebAPIException.UNKNOWN_ERR);
+        throw new WebAPIException(WebAPIException.UNKNOWN_ERR, "Invalid return type.");
     }
 
     var clientsInfo = [];
@@ -2876,7 +2876,7 @@ MediaControllerClientInfo.prototype.sendEvent = function(event, data, callback)
             return;
         }
         delete EventReplyListenerManager.listenerIdToRequestId[watchId];
-        args.callback(result.resultCode, result.data);
+        args.callback(result.data, result.code);
     };
 
     var nativeData = {
@@ -2909,7 +2909,7 @@ var EventReceivedCallback = function(msg, listener) {
     var nativeData = {
         result: result.data,
         resultCode: result.code,
-        serverName: msg.serverName ,
+        serverName: msg.serverName,
         requestId: msg.requestId
     };
 
@@ -2928,26 +2928,26 @@ MediaControllerClient.prototype.setCustomEventListener = function(listener) {
     ]);
 
     var result = native_.callSync('MediaControllerClient_setCustomEventListener', {
-        listenerId: 'MediaControllerClientEventsListener'
+        listenerId: '_MediaControllerClientEventsListener'
     });
 
     if (native_.isFailure(result)) {
         throw native_.getErrorObject(result);
-    } else {
-        native_.addListener('MediaControllerClientEventsListener', function(msg) {
-            EventReceivedCallback(msg, listener);
-        });
     }
+
+    native_.addListener('_MediaControllerClientEventsListener', function(msg) {
+        EventReceivedCallback(msg, args.listener);
+    });
 };
 
 MediaControllerClient.prototype.unsetCustomEventListener = function() {
     var result = native_.callSync('MediaControllerClient_unsetCustomEventListener', {
-        listenerId: 'MediaControllerClientEventsListener'
+        listenerId: '_MediaControllerClientEventsListener'
     });
     if (native_.isFailure(result)) {
         throw native_.getErrorObject(result);
     } else {
-        native_.removeListener('MediaControllerClientEventsListener');
+        native_.removeListener('_MediaControllerClientEventsListener');
     }
 };
 
index 66c63d1..6595539 100644 (file)
@@ -38,7 +38,18 @@ using common::tools::ReportSuccess;
 using common::BundleJsonIterator;
 
 MediaControllerClient::MediaControllerClient()
-    : handle_(nullptr), custom_event_listener_(nullptr), subscribed_servers{} {
+    : handle_(nullptr),
+      playback_info_listener_(nullptr),
+      server_status_listener_(nullptr),
+      command_reply_callback_(nullptr),
+      playlist_update_listener_(nullptr),
+      ability_listener_(nullptr),
+      subtitles_update_listener_(nullptr),
+      mode360_update_listener_(nullptr),
+      display_mode_update_listener_(nullptr),
+      display_rotation_update_listener_(nullptr),
+      custom_event_listener_(nullptr),
+      subscribed_servers{} {
   ScopeLogger();
 }
 
@@ -79,7 +90,7 @@ MediaControllerClient::~MediaControllerClient() {
     LoggerE("Failed to unset display mode listener");
   }
 
-  if (nullptr != display_rotation_update_listener && !UnsetDisplayRotationInfoChangeListener()) {
+  if (nullptr != display_rotation_update_listener_ && !UnsetDisplayRotationInfoChangeListener()) {
     LoggerE("Failed to unset display rotation listener");
   }
 
@@ -114,13 +125,13 @@ PlatformResult MediaControllerClient::Init() {
 
 PlatformResult MediaControllerClient::SetCustomEventListener(const JsonCallback& callback) {
   ScopeLogger();
-  if (custom_event_listener_ == nullptr) {
-      int ret = mc_client_set_custom_event_received_cb(handle_, OnEventReceived, this);
-      if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
-        return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Failed to set custom event listener",
-                                  ("mc_client_set_custom_event_received_cb() error: %d, message: %s",
-                                   ret, get_error_message(ret)));
-      }
+  if (nullptr == custom_event_listener_) {
+    int ret = mc_client_set_custom_event_received_cb(handle_, OnEventReceived, this);
+    if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
+      return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Failed to set custom event listener",
+                                ("mc_client_set_custom_event_received_cb() error: %d, message: %s",
+                                 ret, get_error_message(ret)));
+    }
   }
   custom_event_listener_ = callback;
   return PlatformResult(ErrorCode::NO_ERROR);
@@ -149,7 +160,7 @@ PlatformResult MediaControllerClient::SendEventReply(const char* server_name,
                               ("bundle_create() returned a nullptr"));
   }
   SCOPE_EXIT {
-    free(data_bundle);
+    bundle_free(data_bundle);
   };
 
   PlatformResult result = common::JsonToBundle(data, &data_bundle);
@@ -1655,7 +1666,7 @@ PlatformResult MediaControllerClient::SetDisplayRotationInfoChangeListener(
     const JsonCallback& callback) {
   ScopeLogger();
 
-  if (nullptr != display_rotation_update_listener) {
+  if (nullptr != display_rotation_update_listener_) {
     LoggerD("Native callback already set");
     return PlatformResult(ErrorCode::NO_ERROR);
   }
@@ -1667,7 +1678,7 @@ PlatformResult MediaControllerClient::SetDisplayRotationInfoChangeListener(
                                ret, get_error_message(ret)));
   }
 
-  display_rotation_update_listener = callback;
+  display_rotation_update_listener_ = callback;
 
   return PlatformResult(ErrorCode::NO_ERROR);
 }
@@ -1681,7 +1692,7 @@ PlatformResult MediaControllerClient::UnsetDisplayRotationInfoChangeListener() {
         ("mc_client_unset_display_rotation_updated_cb() error: %d, message: %s", ret,
          get_error_message(ret)));
   }
-  display_rotation_update_listener = nullptr;
+  display_rotation_update_listener_ = nullptr;
   return PlatformResult(ErrorCode::NO_ERROR);
 }
 
@@ -1706,7 +1717,7 @@ void MediaControllerClient::OnDisplayRotationUpdate(const char* server_name,
   data_o[kDisplayRotation] = picojson::value(display_rotation);
   data_o[kName] = picojson::value(server_name);
 
-  client->display_rotation_update_listener(&data);
+  client->display_rotation_update_listener_(&data);
 }
 
 void MediaControllerClient::OnEventReceived(const char* server_name, const char* request_id,
@@ -1714,6 +1725,11 @@ void MediaControllerClient::OnEventReceived(const char* server_name, const char*
   ScopeLogger();
   auto* client = static_cast<MediaControllerClient*>(user_data);
 
+  if (!client->custom_event_listener_) {
+    LoggerW("custom_event_listener_ is not set");
+    return;
+  }
+
   auto args = picojson::value(picojson::object());
   auto& args_obj = args.get<picojson::object>();
 
@@ -1729,11 +1745,7 @@ void MediaControllerClient::OnEventReceived(const char* server_name, const char*
   args_obj[kEventData] = data_json;
   args_obj[kRequestId] = picojson::value(std::string(request_id));
 
-  if (nullptr != client->custom_event_listener_) {
-    client->custom_event_listener_(&args);
-  } else {
-    LoggerW("custom_event_listener_ is not set");
-  }
+  client->custom_event_listener_(&args);
 }
 
 }  // namespace mediacontroller
index 5b0aed2..e4b255b 100644 (file)
@@ -122,7 +122,7 @@ class MediaControllerClient {
   JsonCallback subtitles_update_listener_;
   JsonCallback mode360_update_listener_;
   JsonCallback display_mode_update_listener_;
-  JsonCallback display_rotation_update_listener;
+  JsonCallback display_rotation_update_listener_;
   JsonCallback custom_event_listener_;
 
   std::list<std::string> subscribed_servers;
index 35839b2..2356c17 100644 (file)
@@ -879,7 +879,7 @@ void MediaControllerInstance::MediaControllerServerGetAllClientsInfo(const picoj
                                                                      picojson::object& out) {
   ScopeLogger();
   if (!server_) {
-    LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unknown error occured."), &out,
+    LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unknown error occurred."), &out,
                       ("Failed: server_"));
     return;
   }
@@ -898,7 +898,7 @@ void MediaControllerInstance::MediaControllerClientInfoSendEvent(const picojson:
                                                                  picojson::object& out) {
   ScopeLogger();
   if (!server_) {
-    LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unknown error occured."), &out,
+    LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unknown error occurred."), &out,
                       ("Failed: server_"));
     return;
   }
@@ -919,11 +919,9 @@ void MediaControllerInstance::MediaControllerClientInfoSendEvent(const picojson:
     free(request_id);
   };
 
-  auto& args_obj = args.get<picojson::object>();
-  PlatformResult result = server_->SendEvent(args_obj.at(kEventName).get<std::string>().c_str(),
-                                             args_obj.at(kEventData),
-                                             args_obj.at(kClientName).get<std::string>().c_str(),
-                                             reply_cb, &request_id);
+  PlatformResult result = server_->SendEvent(
+      args.get(kEventName).get<std::string>().c_str(), args.get(kEventData),
+      args.get(kClientName).get<std::string>().c_str(), reply_cb, &request_id);
 
   if (result) {
     out[kRequestId] = picojson::value(std::string(request_id));
@@ -958,7 +956,7 @@ void MediaControllerInstance::MediaControllerClientSendEventReply(const picojson
                                                                   picojson::object& out) {
   ScopeLogger();
   if (!client_) {
-    LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unknown error occured."), &out,
+    LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unknown error occurred."), &out,
                       ("Failed: client_"));
     return;
   }
@@ -985,7 +983,7 @@ void MediaControllerInstance::MediaControllerClientSetCustomEventListener(
     const picojson::value& args, picojson::object& out) {
   ScopeLogger();
   if (!client_) {
-    LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unknown error occured."), &out,
+    LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unknown error occurred."), &out,
                       ("Failed: client_"));
     return;
   }
@@ -1017,7 +1015,7 @@ void MediaControllerInstance::MediaControllerClientUnsetCustomEventListener(
     const picojson::value& args, picojson::object& out) {
   ScopeLogger();
   if (!client_) {
-    LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unknown error occured."), &out,
+    LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unknown error occurred."), &out,
                       ("Failed: client_"));
     return;
   }
index 28c21ee..a33b071 100644 (file)
@@ -35,6 +35,14 @@ using common::PlatformResult;
 
 MediaControllerServer::MediaControllerServer()
     : handle_(nullptr),
+      change_request_playback_info_listener_(nullptr),
+      event_reply_callback_(nullptr),
+      command_listener_(nullptr),
+      search_request_listener_(nullptr),
+      subtitles_change_request_listener_(nullptr),
+      mode360_change_request_listener_(nullptr),
+      display_mode_change_request_listener_(nullptr),
+      display_rotation_change_request_listener_(nullptr),
       playback_state_(MC_PLAYBACK_STATE_STOPPED),
       position_(0ULL),
       age_rating_(MC_CONTENT_RATING_ALL),
@@ -1071,7 +1079,7 @@ void MediaControllerServer::OnEventReply(const char* client_name, const char* re
   picojson::value json_data = picojson::value(picojson::object());
   auto& json_data_obj = json_data.get<picojson::object>();
 
-  json_data_obj[kResultCode] = picojson::value(static_cast<double>(result_code));
+  json_data_obj[kCode] = picojson::value(static_cast<double>(result_code));
   json_data_obj[kClientName] = picojson::value(std::string(client_name));
   json_data_obj[kRequestId] = picojson::value(std::string(request_id));
 
@@ -1473,8 +1481,13 @@ PlatformResult MediaControllerServer::SendEvent(const char* event_name,
   ScopeLogger();
 
   bundle* event_data_bundle = bundle_create();
+  if (!event_data_bundle) {
+    LoggerE("failed to create bundle object");
+    return PlatformResult(ErrorCode::UNKNOWN_ERR, "failed to create bundle object");
+  }
+
   SCOPE_EXIT {
-    free(event_data_bundle);
+    bundle_free(event_data_bundle);
   };
 
   PlatformResult result = common::JsonToBundle(event_data, &event_data_bundle);
index 8cd88c4..421847e 100644 (file)
@@ -101,6 +101,12 @@ class MediaControllerServer {
 
   JsonCallback change_request_playback_info_listener_;
   JsonCallback event_reply_callback_;
+  JsonCallback command_listener_;
+  JsonCallback search_request_listener_;
+  JsonCallback subtitles_change_request_listener_;
+  JsonCallback mode360_change_request_listener_;
+  JsonCallback display_mode_change_request_listener_;
+  JsonCallback display_rotation_change_request_listener_;
 
   mc_playback_states_e playback_state_;
   unsigned long long position_;
@@ -112,9 +118,7 @@ class MediaControllerServer {
   bool is_repeat_mode_set_;
   std::map<std::string, mc_ability_support_e> abilities_;
 
-  JsonCallback command_listener_;
   std::map<std::string, mc_playlist_h> playlist_handle_map_;
-  JsonCallback search_request_listener_;
 
   static void OnPlaybackActionCommand(const char* client_name, const char* request_id,
                                       mc_playback_action_e action, void* user_data);
@@ -128,28 +132,20 @@ class MediaControllerServer {
                                     const char* playlist_name, const char* index,
                                     mc_playback_action_e action, unsigned long long position,
                                     void* user_data);
-  static void OnEventReply(const char* client_name, const char* request_id,
-                           int result_code, bundle* data, void* user_data);
+  static void OnEventReply(const char* client_name, const char* request_id, int result_code,
+                           bundle* data, void* user_data);
   static void OnSearchRequestReceived(const char* client_name, const char* request_id,
                                       mc_search_h request, void* user_data);
   static void OnCommandReceived(const char* client_name, const char* request_id,
                                 const char* command, bundle* data, void* user_data);
-  // subtitles
-  JsonCallback subtitles_change_request_listener_;
   static void OnSubtitlesChangeCommand(const char* client_name, const char* request_id,
                                        bool enabled, void* user_data);
-  // mode360
-  JsonCallback mode360_change_request_listener_;
   static void OnMode360ChangeCommand(const char* client_name, const char* request_id, bool enabled,
                                      void* user_data);
 
-  // displayMode
-  JsonCallback display_mode_change_request_listener_;
   static void OnDisplayModeChangeCommand(const char* client_name, const char* request_id,
                                          mc_display_mode_e type, void* user_data);
 
-  // displayRotation
-  JsonCallback display_rotation_change_request_listener_;
   static void OnDisplayRotationChangeCommand(const char* client_name, const char* request_id,
                                              mc_display_rotation_e type, void* user_data);
 };