From 38362b5fe4424b89dde461ae76f1b950e46e599e Mon Sep 17 00:00:00 2001 From: Michal Michalski Date: Tue, 8 Oct 2019 15:45:45 +0200 Subject: [PATCH] [mediacontroller] Add UnsetCustomEventListener() method. [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 --- src/mediacontroller/mediacontroller_api.js | 11 +++++++++++ src/mediacontroller/mediacontroller_client.cc | 16 ++++++++++++++++ src/mediacontroller/mediacontroller_client.h | 1 + src/mediacontroller/mediacontroller_instance.cc | 20 ++++++++++++++++++++ src/mediacontroller/mediacontroller_instance.h | 2 ++ 5 files changed, 50 insertions(+) diff --git a/src/mediacontroller/mediacontroller_api.js b/src/mediacontroller/mediacontroller_api.js index 5c9a847..80c1a89 100755 --- a/src/mediacontroller/mediacontroller_api.js +++ b/src/mediacontroller/mediacontroller_api.js @@ -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 }, diff --git a/src/mediacontroller/mediacontroller_client.cc b/src/mediacontroller/mediacontroller_client.cc index 5159fad..e236163 100644 --- a/src/mediacontroller/mediacontroller_client.cc +++ b/src/mediacontroller/mediacontroller_client.cc @@ -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; diff --git a/src/mediacontroller/mediacontroller_client.h b/src/mediacontroller/mediacontroller_client.h index 270bf04..385bd2b 100644 --- a/src/mediacontroller/mediacontroller_client.h +++ b/src/mediacontroller/mediacontroller_client.h @@ -106,6 +106,7 @@ class MediaControllerClient { common::PlatformResult UnsetDisplayRotationInfoChangeListener(); common::PlatformResult SetCustomEventListener(const JsonCallback& callback); + common::PlatformResult UnsetCustomEventListener(); private: mc_client_h handle_; diff --git a/src/mediacontroller/mediacontroller_instance.cc b/src/mediacontroller/mediacontroller_instance.cc index fb562b9..b76061c 100644 --- a/src/mediacontroller/mediacontroller_instance.cc +++ b/src/mediacontroller/mediacontroller_instance.cc @@ -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(); diff --git a/src/mediacontroller/mediacontroller_instance.h b/src/mediacontroller/mediacontroller_instance.h index 6a6f592..cac5490 100644 --- a/src/mediacontroller/mediacontroller_instance.h +++ b/src/mediacontroller/mediacontroller_instance.h @@ -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, -- 2.7.4