[6.0][mediacontroller] fix issues 60/220560/2
authorDawid Juszczak <d.juszczak@samsung.com>
Thu, 19 Dec 2019 10:09:23 +0000 (11:09 +0100)
committerDawid Juszczak <d.juszczak@samsung.com>
Mon, 30 Dec 2019 10:52:56 +0000 (11:52 +0100)
[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 <d.juszczak@samsung.com>
src/mediacontroller/mediacontroller_api.js
src/mediacontroller/mediacontroller_instance.cc
src/mediacontroller/mediacontroller_instance.h
src/mediacontroller/mediacontroller_utils.cc

index b7d4bab..a033c54 100755 (executable)
@@ -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() {
index 679061a..b7bc412 100644 (file)
@@ -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,
index 62e13be..d21c743 100644 (file)
@@ -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,
index fbd091d..c40c413 100644 (file)
@@ -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);
 }