[mediacontroller] Add UnsetCustomEventListener() method. 70/215470/3
authorMichal Michalski <m.michalski2@partner.samsung.com>
Tue, 8 Oct 2019 13:45:45 +0000 (15:45 +0200)
committerPiotr Kosko <p.kosko@samsung.com>
Wed, 9 Oct 2019 05:00:36 +0000 (05:00 +0000)
[ACR] http://suprem.sec.samsung.net/jira/browse/TWDAPI-209

MediaControllerClient::UnsetCustomEventListener() method implementation.

[Verification] Will be done later with SendEvent().

Change-Id: I7c92243b0abe211dfa11735a11dc29b1fa0496dd
Signed-off-by: Michal Michalski <m.michalski2@partner.samsung.com>
src/mediacontroller/mediacontroller_api.js
src/mediacontroller/mediacontroller_client.cc
src/mediacontroller/mediacontroller_client.h
src/mediacontroller/mediacontroller_instance.cc
src/mediacontroller/mediacontroller_instance.h

index 5c9a847..80c1a89 100755 (executable)
@@ -2899,6 +2899,17 @@ MediaControllerClient.prototype.setCustomEventListener = function(listener) {
     }
 };
 
+MediaControllerClient.prototype.unsetCustomEventListener = function() {
+    var result = native_.callSync('MediaControllerClient_unsetCustomEventListener', {
+        listenerId: 'MediaControllerClientEventsListener'
+    });
+    if (native_.isFailure(result)) {
+        throw native_.getErrorObject(result);
+    } else {
+        native_.removeListener('MediaControllerClientEventsListener');
+    }
+};
+
 MediaControllerClient.prototype.findServers = function(successCallback, errorCallback) {
     var args = validator_.validateArgs(arguments, [
         { name: 'successCallback', type: types_.FUNCTION },
index 5159fad..e236163 100644 (file)
@@ -82,6 +82,10 @@ MediaControllerClient::~MediaControllerClient() {
     LoggerE("Failed to unset display rotation listener");
   }
 
+  if (nullptr != custom_event_listener_ && !UnsetCustomEventListener()) {
+    LoggerE("Failed to unset custom event listener");
+  }
+
   if (nullptr != handle_ && MEDIA_CONTROLLER_ERROR_NONE != mc_client_destroy(handle_)) {
     LoggerE("Unable to destroy media controller client");
   }
@@ -119,6 +123,18 @@ PlatformResult MediaControllerClient::SetCustomEventListener(const JsonCallback&
   return PlatformResult(ErrorCode::NO_ERROR);
 }
 
+PlatformResult MediaControllerClient::UnsetCustomEventListener() {
+  ScopeLogger();
+  int ret = mc_client_unset_custom_event_received_cb(handle_);
+  if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
+    return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Failed to unset custom event listener",
+                              ("mc_client_unset_custom_event_received_cb() error: %d, message: %s",
+                               ret, get_error_message(ret)));
+  }
+  custom_event_listener_ = nullptr;
+  return PlatformResult(ErrorCode::NO_ERROR);
+}
+
 PlatformResult MediaControllerClient::FindServers(picojson::array* servers) {
   ScopeLogger();
   int ret;
index 270bf04..385bd2b 100644 (file)
@@ -106,6 +106,7 @@ class MediaControllerClient {
   common::PlatformResult UnsetDisplayRotationInfoChangeListener();
 
   common::PlatformResult SetCustomEventListener(const JsonCallback& callback);
+  common::PlatformResult UnsetCustomEventListener();
 
  private:
   mc_client_h handle_;
index fb562b9..b76061c 100644 (file)
@@ -109,6 +109,8 @@ MediaControllerInstance::MediaControllerInstance() {
                  MediaControllerClientFindSubscribedServers);
   REGISTER_SYNC("MediaControllerClient_setCustomEventListener",
                 MediaControllerClientSetCustomEventListener);
+  REGISTER_SYNC("MediaControllerClient_unsetCustomEventListener",
+                MediaControllerClientUnsetCustomEventListener);
 
   // server_info
   REGISTER_SYNC("MediaControllerServerInfo_sendPlaybackState",
@@ -941,6 +943,24 @@ void MediaControllerInstance::MediaControllerClientSetCustomEventListener(
   ReportSuccess(out);
 }
 
+void MediaControllerInstance::MediaControllerClientUnsetCustomEventListener(
+    const picojson::value& args, picojson::object& out) {
+  ScopeLogger();
+  if (!client_) {
+    LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unknown error occured."), &out,
+                      ("Failed: client_"));
+    return;
+  }
+
+  auto result = client_->UnsetCustomEventListener();
+  if (!result) {
+    LogAndReportError(result, &out);
+    return;
+  }
+
+  ReportSuccess(out);
+}
+
 void MediaControllerInstance::MediaControllerClientFindServers(const picojson::value& args,
                                                                picojson::object& out) {
   ScopeLogger();
index 6a6f592..cac5490 100644 (file)
@@ -93,6 +93,8 @@ class MediaControllerInstance : public common::ParsedInstance {
                                                   picojson::object& out);
   void MediaControllerClientSetCustomEventListener(const picojson::value& args,
                                                    picojson::object& out);
+  void MediaControllerClientUnsetCustomEventListener(const picojson::value& args,
+                                                     picojson::object& out);
 
   // serverInfo
   void MediaControllerServerInfoSendPlaybackState(const picojson::value& args,