From: Dawid Juszczak Date: Thu, 19 Dec 2019 10:09:23 +0000 (+0100) Subject: [6.0][mediacontroller] fix issues X-Git-Tag: accepted/tizen/unified/20200121.121524~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4cf7cda2f133e33bde994cffb494f909a8cbd4a5;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [6.0][mediacontroller] fix issues [ACR] https://code.sec.samsung.net/jira/browse/TWDAPI-246 https://code.sec.samsung.net/jira/browse/TWDAPI-248 [Description] 1) Now methods sendPlaybackAction, sendPlaybackPosition, sendShuffleMode and sendRepeatState throws TypMismatchError when undefined is passed as second attribute. 2) rename methods: - addPlaylistUpdateListener() -> addPlaylistUpdatedListener() - removePlaylistUpdateListener() -> removePlaylistUpdatedListener() 3) add checking if playlist_obj passed to getPlaylist() function is not nullptr [Verification] Tested manually on chrome console tct-mediacontroller-tizen-tests fails with 2 testcases: - MediaControllerServer_iconURI_attribute - MediaControllerServerInfo_iconURI_attribute It fails because attribute iconURI is no longer readonly and tests should be fixed. Change-Id: I9b4e893f9ada7824dc53e0f07e3574a90f460205 Signed-off-by: Dawid Juszczak --- diff --git a/src/mediacontroller/mediacontroller_api.js b/src/mediacontroller/mediacontroller_api.js index b7d4bab..a033c54 100755 --- a/src/mediacontroller/mediacontroller_api.js +++ b/src/mediacontroller/mediacontroller_api.js @@ -3830,13 +3830,13 @@ MediaControllerServerInfo.prototype.sendPlaybackItem = function() { MediaControllerServerInfo.prototype.addPlaylistUpdatedListener = function() { utils_.printDeprecationWarningFor( 'MediaControllerServerInfo.addPlaylistUpdatedListener()', - 'MediaControllerPlaylistsInfo.addPlaylistUpdateListener()' + 'MediaControllerPlaylistsInfo.addPlaylistUpdatedListener()' ); var args = [this.name].concat(Array.prototype.slice.call(arguments)); - return addPlaylistUpdateListener.apply(this, args); + return addPlaylistUpdatedListener.apply(this, args); }; -var addPlaylistUpdateListener = function() { +var addPlaylistUpdatedListener = function() { var args = validator_.validateArgs(arguments, [ { name: 'serverName', @@ -3851,7 +3851,7 @@ var addPlaylistUpdateListener = function() { if (type_.isEmptyObject(ServerInfoPlaylistUpdateListener.listeners)) { var result = native_.callSync( - 'MediaControllerServerInfoAddPlaylistUpdateListener', + 'MediaControllerServerInfoAddPlaylistUpdatedListener', { listenerId: ServerInfoPlaylistUpdateListener.listenerName } @@ -3867,12 +3867,12 @@ var addPlaylistUpdateListener = function() { MediaControllerServerInfo.prototype.removePlaylistUpdatedListener = function(watchId) { utils_.printDeprecationWarningFor( 'MediaControllerServerInfo.removePlaylistUpdatedListener()', - 'MediaControllerPlaylistsInfo.removePlaylistUpdateListener()' + 'MediaControllerPlaylistsInfo.removePlaylistUpdatedListener()' ); - removePlaylistUpdateListener(watchId); + removePlaylistUpdatedListener(watchId); }; -var removePlaylistUpdateListener = function() { +var removePlaylistUpdatedListener = function() { var args = validator_.validateArgs(arguments, [ { name: 'watchId', type: types_.LONG } ]); @@ -3881,7 +3881,7 @@ var removePlaylistUpdateListener = function() { if (type_.isEmptyObject(ServerInfoPlaylistUpdateListener.listeners)) { var result = native_.callSync( - 'MediaControllerServerInfoRemovePlaylistUpdateListener' + 'MediaControllerServerInfoRemovePlaylistUpdatedListener' ); if (native_.isFailure(result)) { throw native_.getErrorObject(result); @@ -4244,51 +4244,93 @@ function MediaControllerServerInfoPlaybackInfo(serverName, data) { } }); - this.sendPlaybackAction = function(action, replyCallback) { + this.sendPlaybackAction = function() { + var args = validator_.validateArgs(arguments, [ + { + name: 'action', + type: types_.ENUM, + values: Object.keys(MediaControllerPlaybackAction) + }, + { + name: 'replyCallback', + type: types_.FUNCTION, + optional: true, + nullable: true + } + ]); + sendRequestWithReply( _serverName, - 'action', - types_.ENUM, - Object.keys(MediaControllerPlaybackAction), 'MediaControllerServerInfoPlaybackInfoSendPlaybackAction', - action, - replyCallback + args.action, + args.replyCallback ); }; - this.sendPlaybackPosition = function(position, replyCallback) { + this.sendPlaybackPosition = function() { + var args = validator_.validateArgs(arguments, [ + { + name: 'position', + type: types_.LONG_LONG + }, + { + name: 'replyCallback', + type: types_.FUNCTION, + optional: true, + nullable: true + } + ]); + sendRequestWithReply( _serverName, - 'position', - types_.LONG_LONG, - null, 'MediaControllerServerInfoPlaybackInfoSendPlaybackPosition', - position, - replyCallback + args.position, + args.replyCallback ); }; - this.sendShuffleMode = function(mode, replyCallback) { + this.sendShuffleMode = function() { + var args = validator_.validateArgs(arguments, [ + { + name: 'mode', + type: types_.BOOLEAN + }, + { + name: 'replyCallback', + type: types_.FUNCTION, + optional: true, + nullable: true + } + ]); + sendRequestWithReply( _serverName, - 'mode', - types_.BOOLEAN, - null, 'MediaControllerServerInfoPlaybackInfoSendShuffleMode', - mode, - replyCallback + args.mode, + args.replyCallback ); }; - this.sendRepeatState = function(state, replyCallback) { + this.sendRepeatState = function() { + var args = validator_.validateArgs(arguments, [ + { + name: 'state', + type: types_.ENUM, + values: Object.keys(MediaControllerRepeatState) + }, + { + name: 'replyCallback', + type: types_.FUNCTION, + optional: true, + nullable: true + } + ]); + sendRequestWithReply( _serverName, - 'state', - types_.ENUM, - Object.keys(MediaControllerRepeatState), 'MediaControllerServerInfoPlaybackInfoSendRepeatState', - state, - replyCallback + args.state, + args.replyCallback ); }; @@ -4302,44 +4344,17 @@ function MediaControllerServerInfoPlaybackInfo(serverName, data) { }; } -var sendRequestWithReply = function( - serverName, - attribName, - attribType, - attribValues, - callString, - attribVal, - replyCB -) { - var toValidate = [attribVal]; - if (undefined !== replyCB) { - toValidate.push(replyCB); - } - - var args = validator_.validateArgs(toValidate, [ - { - name: attribName, - type: attribType, - values: attribValues - }, - { - name: 'replyCallback', - type: types_.FUNCTION, - optional: true, - nullable: true - } - ]); - +var sendRequestWithReply = function(serverName, callString, attribVal, replyCB) { var callback = function(result) { native_.callIfPossible( - args.replyCallback, + replyCB, native_.getResultObject(result).data, native_.getResultObject(result).code ); }; var nativeData = { - attribute: args[attribName], + attribute: attribVal, serverName: serverName, listenerId: ReplyCommandListener.listenerName }; @@ -4450,13 +4465,13 @@ var MediaControllerPlaylistsInfo = function(serverName) { ReplyCommandListener.requestIdToListenerId[replyListenerId] = result.requestId; }; - this.addPlaylistUpdateListener = function() { + this.addPlaylistUpdatedListener = function() { var args = [_serverName].concat(Array.prototype.slice.call(arguments)); - return addPlaylistUpdateListener.apply(this, args); + return addPlaylistUpdatedListener.apply(this, args); }; - this.removePlaylistUpdateListener = function(watchId) { - removePlaylistUpdateListener(watchId); + this.removePlaylistUpdatedListener = function(watchId) { + removePlaylistUpdatedListener(watchId); }; this.getPlaylist = function() { diff --git a/src/mediacontroller/mediacontroller_instance.cc b/src/mediacontroller/mediacontroller_instance.cc index 679061a..b7bc412 100644 --- a/src/mediacontroller/mediacontroller_instance.cc +++ b/src/mediacontroller/mediacontroller_instance.cc @@ -108,8 +108,8 @@ MediaControllerInstance::MediaControllerInstance() { REGISTER_METHOD(MediaControllerServerInfoAddPlaybackInfoChangeListener); REGISTER_METHOD(MediaControllerServerInfoRemovePlaybackInfoChangeListener); REGISTER_METHOD(MediaControllerServerInfoSendPlaybackItem); - REGISTER_METHOD(MediaControllerServerInfoAddPlaylistUpdateListener); - REGISTER_METHOD(MediaControllerServerInfoRemovePlaylistUpdateListener); + REGISTER_METHOD(MediaControllerServerInfoAddPlaylistUpdatedListener); + REGISTER_METHOD(MediaControllerServerInfoRemovePlaylistUpdatedListener); REGISTER_METHOD(MediaControllerServerInfoGetAllPlaylists); REGISTER_METHOD(MediaControllerServerInfoGetIconURI); REGISTER_METHOD(MediaControllerClientAddAbilityChangeListener); @@ -1568,7 +1568,7 @@ void MediaControllerInstance::MediaControllerServerInfoSendPlaybackItem(const pi ReportSuccess(out); } -void MediaControllerInstance::MediaControllerServerInfoAddPlaylistUpdateListener( +void MediaControllerInstance::MediaControllerServerInfoAddPlaylistUpdatedListener( const picojson::value& args, picojson::object& out) { ScopeLogger(); if (!client_) { @@ -1600,7 +1600,7 @@ void MediaControllerInstance::MediaControllerServerInfoAddPlaylistUpdateListener ReportSuccess(out); } -void MediaControllerInstance::MediaControllerServerInfoRemovePlaylistUpdateListener( +void MediaControllerInstance::MediaControllerServerInfoRemovePlaylistUpdatedListener( const picojson::value& args, picojson::object& out) { if (!client_) { LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, MediaControllerUnknownErrorMsg), &out, diff --git a/src/mediacontroller/mediacontroller_instance.h b/src/mediacontroller/mediacontroller_instance.h index 62e13be..d21c743 100644 --- a/src/mediacontroller/mediacontroller_instance.h +++ b/src/mediacontroller/mediacontroller_instance.h @@ -121,10 +121,10 @@ class MediaControllerInstance : public common::ParsedInstance { picojson::object& out); void MediaControllerServerInfoSendPlaybackItem(const picojson::value& args, picojson::object& out); - void MediaControllerServerInfoAddPlaylistUpdateListener(const picojson::value& args, - picojson::object& out); - void MediaControllerServerInfoRemovePlaylistUpdateListener(const picojson::value& args, - picojson::object& out); + void MediaControllerServerInfoAddPlaylistUpdatedListener(const picojson::value& args, + picojson::object& out); + void MediaControllerServerInfoRemovePlaylistUpdatedListener(const picojson::value& args, + picojson::object& out); void MediaControllerServerInfoGetAllPlaylists(const picojson::value& args, picojson::object& out); void MediaControllerServerInfoGetIconURI(const picojson::value& args, picojson::object& out); void MediaControllerServerInfoPlaybackInfoSendPlaybackAction(const picojson::value& args, diff --git a/src/mediacontroller/mediacontroller_utils.cc b/src/mediacontroller/mediacontroller_utils.cc index fbd091d..c40c413 100644 --- a/src/mediacontroller/mediacontroller_utils.cc +++ b/src/mediacontroller/mediacontroller_utils.cc @@ -385,6 +385,12 @@ PlatformResult utils::GetPlaylist(const std::string& app_id, const std::string& picojson::object* playlist_obj) { ScopeLogger(); + if (nullptr == playlist_obj) { + LoggerE("playlist_obj is nullptr, skipping"); + return PlatformResult(ErrorCode::UNKNOWN_ERR, + "Error while getting a playlist named " + playlist_name); + } + mc_playlist_h playlist_item = nullptr; SCOPE_EXIT { mc_playlist_destroy(playlist_item); @@ -405,9 +411,7 @@ PlatformResult utils::GetPlaylist(const std::string& app_id, const std::string& ("mc_playlist_get_playlist() error: %d, message: %s", ret, get_error_message(ret))); } - if (nullptr != playlist_obj) { - (*playlist_obj)[kName] = picojson::value(playlist_name); - } + (*playlist_obj)[kName] = picojson::value(playlist_name); return PlatformResult(ErrorCode::NO_ERROR); }