[Mediacontroller] Added new methods, enums, events 91/184691/7
authorSzymon Jastrzebski <s.jastrzebsk@partner.samsung.com>
Thu, 3 Jan 2019 13:47:11 +0000 (14:47 +0100)
committerLukasz Bardeli <l.bardeli@samsung.com>
Thu, 7 Feb 2019 09:53:49 +0000 (10:53 +0100)
+ Added support for value MC_REPEAT_MODE_ONE_MEDIA of mc_repeat_mode_e
  enum.
+ Added clientName parameter in
  MediaControllerChangeRequestPlaybackInfoCallback listeners.

[Verification] Code compiles without error. Tested in chrome console.

ACR: TWDAPI-204

Change-Id: I2f5a61607b5c9bd467aa21a0fc843d0c63034411
Signed-off-by: Szymon Jastrzebski <s.jastrzebsk@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
src/mediacontroller/mediacontroller_server.cc
src/mediacontroller/mediacontroller_server.h
src/mediacontroller/mediacontroller_types.cc
src/mediacontroller/mediacontroller_types.h

index 2b3dbf1a0bd5310d913536594469f4705e6f2238..a70c0cb8632c9ccaed37b7e3a91a19fd18e5dc40 100755 (executable)
@@ -138,13 +138,20 @@ var ReplyCommandListener = new ListenerManager(native_, '_ReplyCommandListener',
 
 var ServerPlaybackInfoListener = new ListenerManager(native_, '_ServerPlaybackInfoListener', function(msg, listener) {
   if (msg.action === 'onplaybackstaterequest') {
-    listener[msg.action](msg.state);
+    listener[msg.action](msg.state, msg.clientName);
   }
   if (msg.action === 'onplaybackpositionrequest') {
-    listener[msg.action](msg.position);
+    listener[msg.action](msg.position, msg.clientName);
   }
-  if (msg.action === 'onshufflemoderequest' || msg.action === 'onrepeatmoderequest') {
-    listener[msg.action](msg.mode);
+  if (msg.action === 'onshufflemoderequest') {
+    listener[msg.action](msg.mode, msg.clientName);
+  }
+  if (msg.action === 'onrepeatmoderequest') {
+    utils_.printDeprecationWarningFor('onrepeatmoderequest', 'onrepeatstaterequest');
+    listener[msg.action](msg.mode, msg.clientName);
+  }
+  if (msg.action === 'onrepeatstaterequest') {
+    listener[msg.action](msg.state, msg.clientName);
   }
 });
 
@@ -156,9 +163,16 @@ var ServerInfoPlaybackInfoListener = new ListenerManager(native_, '_ServerInfoPl
   if (msg.action === 'onplaybackchanged') {
     listener[msg.action](msg.state, msg.position);
   }
-  if (msg.action === 'onshufflemodechanged' || msg.action === 'onrepeatmodechanged') {
+  if (msg.action === 'onshufflemodechanged') {
     listener[msg.action](msg.mode);
   }
+  if (msg.action === 'onrepeatmodechanged') {
+    utils_.printDeprecationWarningFor('onrepeatmodechanged', 'onrepeatstatechanged');
+    listener[msg.action](msg.mode);
+  }
+  if (msg.action === 'onrepeatstatechanged') {
+    listener[msg.action](msg.state);
+  }
   if (msg.action === 'onmetadatachanged') {
     listener[msg.action](new MediaControllerMetadata(msg.metadata));
   }
@@ -194,6 +208,11 @@ var MediaControllerPlaybackState = {
   REWIND: 'REWIND'
 };
 
+var MediaControllerRepeatState = {
+  REPEAT_OFF: "REPEAT_OFF",
+  REPEAT_ONE: "REPEAT_ONE",
+  REPEAT_ALL: "REPEAT_ALL"
+};
 
 function MediaControllerManager() {}
 
@@ -301,6 +320,7 @@ var MediaControllerPlaybackInfo = function(data) {
   var _position = 0;
   var _shuffleMode = false;
   var _repeatMode = false;
+  var _repeatState = MediaControllerRepeatState.REPEAT_OFF;
   var _metadata = new MediaControllerMetadata();
   Object.defineProperties(this, {
     state: {
@@ -332,6 +352,7 @@ var MediaControllerPlaybackInfo = function(data) {
     },
     repeatMode: {
       get: function() {
+        utils_.printDeprecationWarningFor('repeatMode', 'repeatState');
         return _repeatMode;
       },
       set: function(v) {
@@ -339,6 +360,15 @@ var MediaControllerPlaybackInfo = function(data) {
       },
       enumerable: true
     },
+    repeatState: {
+      get: function() {
+        return _repeatState;
+      },
+      set: function(v) {
+        _repeatState = edit_.isAllowed && v ? v : _repeatState;
+      },
+      enumerable: true
+    },
     metadata: {
       get: function() {
         return _metadata;
@@ -430,6 +460,7 @@ MediaControllerServer.prototype.updateShuffleMode = function(mode) {
 };
 
 MediaControllerServer.prototype.updateRepeatMode = function(mode) {
+  utils_.printDeprecationWarningFor('updateRepeatMode()', 'updateRepeatState()');
   var args = validator_.validateArgs(arguments, [
     {name: 'mode', type: types_.BOOLEAN}
   ]);
@@ -446,6 +477,30 @@ MediaControllerServer.prototype.updateRepeatMode = function(mode) {
 
   edit_.allow();
   this.playbackInfo.repeatMode = args.mode;
+  this.playbackInfo.repeatState = args.mode ? MediaControllerRepeatState.REPEAT_ALL : MediaControllerRepeatState.REPEAT_OFF;
+  edit_.disallow();
+};
+
+MediaControllerServer.prototype.updateRepeatState = function() {
+  var args = validator_.validateArgs(arguments, [
+    {name: 'state', type: types_.ENUM, values: Object.keys(MediaControllerRepeatState)}
+  ]);
+
+  var data = {
+    state: args.state
+  };
+
+  var result = native_.callSync('MediaControllerServer_updateRepeatState', data);
+
+  if (native_.isFailure(result)) {
+    throw native_.getErrorObject(result);
+  }
+
+  edit_.allow();
+  this.playbackInfo.repeatState = args.state;
+  if (MediaControllerRepeatState.REPEAT_ONE !== args.state) {
+    this.playbackInfo.repeatMode = args.state === MediaControllerRepeatState.REPEAT_ALL;
+  }
   edit_.disallow();
 };
 
@@ -477,7 +532,8 @@ MediaControllerServer.prototype.addChangeRequestPlaybackInfoListener = function(
       'onplaybackstaterequest',
       'onplaybackpositionrequest',
       'onshufflemoderequest',
-      'onrepeatmoderequest'
+      'onrepeatmoderequest',
+      'onrepeatstaterequest'
     ]
   }]);
 
@@ -683,6 +739,7 @@ MediaControllerServerInfo.prototype.sendShuffleMode = function(mode, successCall
 };
 
 MediaControllerServerInfo.prototype.sendRepeatMode = function(mode, successCallback, errorCallback) {
+  utils_.printDeprecationWarningFor('sendRepeatMode()', 'sendRepeatState()');
   var args = validator_.validateArgs(arguments, [
     {name: 'mode', type: types_.BOOLEAN},
     {name: 'successCallback', type: types_.FUNCTION, optional: true, nullable: true},
@@ -704,6 +761,28 @@ MediaControllerServerInfo.prototype.sendRepeatMode = function(mode, successCallb
   native_.call('MediaControllerServerInfo_sendRepeatMode', data, callback);
 };
 
+MediaControllerServerInfo.prototype.sendRepeatState = function() {
+  var args = validator_.validateArgs(arguments, [
+    {name: 'state', type: types_.ENUM, values: Object.keys(MediaControllerRepeatState)},
+    {name: 'successCallback', type: types_.FUNCTION, optional: true, nullable: true},
+    {name: 'errorCallback', type: types_.FUNCTION, optional: true, nullable: true}
+  ]);
+
+  var callback = function(result) {
+    if (native_.isFailure(result)) {
+      native_.callIfPossible(args.errorCallback, native_.getErrorObject(result));
+      return;
+    }
+    native_.callIfPossible(args.successCallback);
+  };
+
+  var data = {
+    state: args.state,
+    name: this.name
+  };
+  native_.call('MediaControllerServerInfo_sendRepeatState', data, callback);
+};
+
 MediaControllerServerInfo.prototype.sendCommand = function(command, data, successCallback, errorCallback) {
   var args = validator_.validateArgs(arguments, [
     {name: 'command', type: types_.STRING},
@@ -769,6 +848,7 @@ MediaControllerServerInfo.prototype.addPlaybackInfoChangeListener = function(lis
       'onplaybackchanged',
       'onshufflemodechanged',
       'onrepeatmodechanged',
+      'onrepeatstatechanged',
       'onmetadatachanged'
     ]
   }]);
index 99c2ebbbaae6aefefe2ad81eb3058d0e57542881..a8c33915b78f1018f2e353ef9d69230668189e20 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "common/logger.h"
 #include "common/scope_exit.h"
+#include "common/tools.h"
 
 #include "mediacontroller/mediacontroller_types.h"
 
@@ -438,9 +439,24 @@ void MediaControllerClient::OnRepeatModeUpdate(const char* server_name, mc_repea
   picojson::value data = picojson::value(picojson::object());
   picojson::object& data_o = data.get<picojson::object>();
 
-  data_o["action"] = picojson::value(std::string("onrepeatmodechanged"));
-  data_o["mode"] = picojson::value(mode == MC_REPEAT_MODE_ON);
   data_o["name"] = picojson::value(server_name);
+  if (MC_REPEAT_MODE_ONE_MEDIA != mode) {
+    // The onrepeatmodechanged event may be reported only with mode equal to true/false. The 3rd
+    // mode is not supported by this event.
+    common::tools::PrintDeprecationWarningFor("onrepeatmodechanged", "onrepeatstatechanged");
+    data_o["action"] = picojson::value(std::string("onrepeatmodechanged"));
+    data_o["mode"] = picojson::value(mode == MC_REPEAT_MODE_ON);
+    client->playback_info_listener_(&data);
+  }
+  std::string state{};
+  PlatformResult result = Types::PlatformEnumToString(Types::kMediaControllerRepeatState,
+                                                      static_cast<int>(mode), &state);
+  if (!result) {
+    LoggerE("PlatformEnumToString failed, error: %s", result.message().c_str());
+    return;
+  }
+  data_o["action"] = picojson::value(std::string("onrepeatstatechanged"));
+  data_o["state"] = picojson::value(state);
 
   client->playback_info_listener_(&data);
 }
@@ -638,5 +654,31 @@ PlatformResult MediaControllerClient::SendRepeatMode(const std::string& server_n
   return PlatformResult(ErrorCode::NO_ERROR);
 }
 
+PlatformResult MediaControllerClient::SendRepeatState(const std::string& server_name,
+                                                      const std::string& state) {
+  ScopeLogger();
+  /* TODO: Prepare an ACR and propose use case for request_id.
+  char* request_id = nullptr;
+  SCOPE_EXIT {
+    free(request_id);
+  };*/
+  int state_e;
+  PlatformResult result =
+      Types::StringToPlatformEnum(Types::kMediaControllerRepeatState, state, &state_e);
+  if (!result) {
+    return result;
+  }
+  int ret = mc_client_send_repeat_mode_cmd(handle_, server_name.c_str(),
+                                           static_cast<mc_repeat_mode_e>(state_e),
+                                           /*&request_id*/ nullptr);
+  if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
+    return LogAndCreateResult(
+        ErrorCode::UNKNOWN_ERR, "Error sending repeat state",
+        ("mc_client_send_repeat_mode_cmd() error: %d, message: %s", ret, get_error_message(ret)));
+  }
+
+  return PlatformResult(ErrorCode::NO_ERROR);
+}
+
 }  // namespace mediacontroller
 }  // namespace extension
index 6108eb5228ac6c5f1b2795b47d033335737325ec..2adddc089e771f745599d4897341c33534eee5f9 100644 (file)
@@ -44,6 +44,7 @@ class MediaControllerClient {
   common::PlatformResult SendPlaybackPosition(const std::string& server_name, double position);
   common::PlatformResult SendShuffleMode(const std::string& server_name, bool mode);
   common::PlatformResult SendRepeatMode(const std::string& server_name, bool mode);
+  common::PlatformResult SendRepeatState(const std::string& server_name, const std::string& state);
 
   common::PlatformResult SendCommand(const std::string& server_name, const std::string& command,
                                      const picojson::value& data, const std::string& reply_id,
index 6a7a79f9e675a402b55e2ba5b21f7dae9299a25a..4899652f487d8e77a0ce5c143cebd581a7fa99ca 100644 (file)
@@ -56,6 +56,7 @@ MediaControllerInstance::MediaControllerInstance() {
   REGISTER_SYNC("MediaControllerServer_updatePlaybackPosition",
                 MediaControllerServerUpdatePlaybackPosition);
   REGISTER_SYNC("MediaControllerServer_updateRepeatMode", MediaControllerServerUpdateRepeatMode);
+  REGISTER_SYNC("MediaControllerServer_updateRepeatState", MediaControllerServerUpdateRepeatState);
   REGISTER_SYNC("MediaControllerServer_updateShuffleMode", MediaControllerServerUpdateShuffleMode);
   REGISTER_SYNC("MediaControllerServer_updateMetadata", MediaControllerServerUpdateMetadata);
   REGISTER_SYNC("MediaControllerServer_addChangeRequestPlaybackInfoListener",
@@ -80,6 +81,8 @@ MediaControllerInstance::MediaControllerInstance() {
                  MediaControllerServerInfoSendPlaybackPosition);
   REGISTER_ASYNC("MediaControllerServerInfo_sendRepeatMode",
                  MediaControllerServerInfoSendRepeatMode);
+  REGISTER_ASYNC("MediaControllerServerInfo_sendRepeatState",
+                 MediaControllerServerInfoSendRepeatState);
   REGISTER_ASYNC("MediaControllerServerInfo_sendShuffleMode",
                  MediaControllerServerInfoSendShuffleMode);
   REGISTER_ASYNC("MediaControllerServerInfo_sendCommand", MediaControllerServerInfoSendCommand);
@@ -195,6 +198,7 @@ void MediaControllerInstance::MediaControllerServerUpdateShuffleMode(const picoj
 void MediaControllerInstance::MediaControllerServerUpdateRepeatMode(const picojson::value& args,
                                                                     picojson::object& out) {
   ScopeLogger();
+  common::tools::PrintDeprecationWarningFor("updateRepeatMode()", "updateRepeatState()");
 
   if (!server_) {
     LogAndReportError(PlatformResult(ErrorCode::INVALID_STATE_ERR, "Server not initialized."), &out,
@@ -215,6 +219,22 @@ void MediaControllerInstance::MediaControllerServerUpdateRepeatMode(const picojs
   ReportSuccess(out);
 }
 
+void MediaControllerInstance::MediaControllerServerUpdateRepeatState(const picojson::value& args,
+                                                                     picojson::object& out) {
+  ScopeLogger();
+  CHECK_EXIST(args, "state", out)
+
+  const std::string& state = args.get("state").get<std::string>();
+
+  const PlatformResult& result = server_->SetRepeatState(state);
+  if (!result) {
+    LogAndReportError(result, &out, ("Failed: server_->SetRepeatState()"));
+    return;
+  }
+
+  ReportSuccess(out);
+}
+
 void MediaControllerInstance::MediaControllerServerUpdateMetadata(const picojson::value& args,
                                                                   picojson::object& out) {
   ScopeLogger();
@@ -549,6 +569,7 @@ void MediaControllerInstance::MediaControllerServerInfoSendShuffleMode(const pic
 void MediaControllerInstance::MediaControllerServerInfoSendRepeatMode(const picojson::value& args,
                                                                       picojson::object& out) {
   ScopeLogger();
+  common::tools::PrintDeprecationWarningFor("sendRepeatMode()", "sendRepeatState()");
   if (!client_) {
     LogAndReportError(PlatformResult(ErrorCode::INVALID_STATE_ERR, "Client not initialized."), &out,
                       ("Failed: client_"));
@@ -581,6 +602,32 @@ void MediaControllerInstance::MediaControllerServerInfoSendRepeatMode(const pico
   ReportSuccess(out);
 }
 
+void MediaControllerInstance::MediaControllerServerInfoSendRepeatState(const picojson::value& args,
+                                                                       picojson::object& out) {
+  ScopeLogger();
+
+  auto send = [this, args]() {
+    picojson::value response = picojson::value(picojson::object());
+    picojson::object& response_obj = response.get<picojson::object>();
+    response_obj["callbackId"] = args.get("callbackId");
+
+    PlatformResult result = client_->SendRepeatState(args.get("name").get<std::string>(),
+                                                     args.get("state").get<std::string>());
+
+    if (result) {
+      ReportSuccess(response_obj);
+    } else {
+      LogAndReportError(result, &response_obj, ("Failed to send repeat state."));
+    }
+
+    Instance::PostMessage(this, response.serialize().c_str());
+  };
+
+  TaskQueue::GetInstance().Async(send);
+
+  ReportSuccess(out);
+}
+
 void MediaControllerInstance::MediaControllerServerInfoSendCommand(const picojson::value& args,
                                                                    picojson::object& out) {
   ScopeLogger();
index 981e9e453b887ed880a09340714ac78e319d422c..9b5c9a5732b1496e94bd5e86c2a5ccfa22851fe7 100644 (file)
@@ -38,6 +38,7 @@ class MediaControllerInstance : public common::ParsedInstance {
   void MediaControllerServerUpdatePlaybackPosition(const picojson::value& args,
                                                    picojson::object& out);
   void MediaControllerServerUpdateRepeatMode(const picojson::value& args, picojson::object& out);
+  void MediaControllerServerUpdateRepeatState(const picojson::value& args, picojson::object& out);
   void MediaControllerServerUpdateShuffleMode(const picojson::value& args, picojson::object& out);
   void MediaControllerServerUpdateMetadata(const picojson::value& args, picojson::object& out);
   void MediaControllerServerAddChangeRequestPlaybackInfoListener(const picojson::value& args,
@@ -59,6 +60,7 @@ class MediaControllerInstance : public common::ParsedInstance {
   void MediaControllerServerInfoSendPlaybackPosition(const picojson::value& args,
                                                      picojson::object& out);
   void MediaControllerServerInfoSendRepeatMode(const picojson::value& args, picojson::object& out);
+  void MediaControllerServerInfoSendRepeatState(const picojson::value& args, picojson::object& out);
   void MediaControllerServerInfoSendShuffleMode(const picojson::value& args, picojson::object& out);
   void MediaControllerServerInfoSendCommand(const picojson::value& args, picojson::object& out);
   void MediaControllerServerInfoAddServerStatusChangeListener(const picojson::value& args,
index 214b8913452aa3ae88008d326da11310ceaabef1..1e1768224398f74e7da999dff109ba8a7547153a 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "common/logger.h"
 #include "common/scope_exit.h"
+#include "common/tools.h"
 
 #include "mediacontroller/mediacontroller_types.h"
 
@@ -177,6 +178,34 @@ PlatformResult MediaControllerServer::SetRepeatMode(bool mode) {
   return PlatformResult(ErrorCode::NO_ERROR);
 }
 
+PlatformResult MediaControllerServer::SetRepeatState(const std::string& state) {
+  ScopeLogger();
+
+  int repeat_mode = MC_REPEAT_MODE_OFF;
+  PlatformResult result =
+      Types::StringToPlatformEnum(Types::kMediaControllerRepeatState, state, &repeat_mode);
+  if (!result) {
+    return result;
+  }
+
+  if ((repeat_mode == repeat_mode_) && (is_repeat_mode_set_)) {
+    LoggerD("No change in repeat mode requested, skipping");
+    return PlatformResult(ErrorCode::NO_ERROR);
+  }
+
+  int ret = mc_server_update_repeat_mode(handle_, static_cast<mc_repeat_mode_e>(repeat_mode));
+  if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
+    return LogAndCreateResult(
+        ErrorCode::UNKNOWN_ERR, "Error updating repeat mode",
+        ("mc_server_update_repeat_mode() error: %d, message: %s", ret, get_error_message(ret)));
+  }
+
+  repeat_mode_ = static_cast<mc_repeat_mode_e>(repeat_mode);
+  is_repeat_mode_set_ = true;
+
+  return PlatformResult(ErrorCode::NO_ERROR);
+}
+
 PlatformResult MediaControllerServer::SetMetadata(const picojson::object& metadata) {
   ScopeLogger();
 
@@ -347,7 +376,7 @@ PlatformResult MediaControllerServer::SetChangeRequestPlaybackInfoListener(
   int ret = mc_server_set_playback_action_cmd_received_cb(handle_, OnPlaybackActionCommand, this);
   if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
     return LogAndCreateResult(
-        ErrorCode::UNKNOWN_ERR, "Unable to set playback state command listener",
+        ErrorCode::UNKNOWN_ERR, "Unable to set playback action command listener",
         ("mc_server_set_playback_action_cmd_received_cb() error: %d, message: %s", ret,
          get_error_message(ret)));
   }
@@ -454,6 +483,7 @@ void MediaControllerServer::OnPlaybackActionCommand(const char* client_name, con
 
   data_o["action"] = picojson::value(std::string("onplaybackstaterequest"));
   data_o["state"] = picojson::value(state);
+  data_o["clientName"] = picojson::value(client_name);
 
   server->change_request_playback_info_listener_(&data);
 }
@@ -476,6 +506,7 @@ void MediaControllerServer::OnPlaybackPositionCommand(const char* client_name,
 
   data_o["action"] = picojson::value(std::string("onplaybackpositionrequest"));
   data_o["position"] = picojson::value(static_cast<double>(position));
+  data_o["clientName"] = picojson::value(client_name);
 
   server->change_request_playback_info_listener_(&data);
 }
@@ -496,6 +527,7 @@ void MediaControllerServer::OnShuffleModeCommand(const char* client_name, const
 
   data_o["action"] = picojson::value(std::string("onshufflemoderequest"));
   data_o["mode"] = picojson::value(mode == MC_SHUFFLE_MODE_ON);
+  data_o["clientName"] = picojson::value(client_name);
 
   server->change_request_playback_info_listener_(&data);
 }
@@ -513,9 +545,26 @@ void MediaControllerServer::OnRepeatModeCommand(const char* client_name, const c
 
   picojson::value data = picojson::value(picojson::object());
   picojson::object& data_o = data.get<picojson::object>();
+  data_o["clientName"] = picojson::value(client_name);
 
-  data_o["action"] = picojson::value(std::string("onrepeatmoderequest"));
-  data_o["mode"] = picojson::value(mode == MC_REPEAT_MODE_ON);
+  if (MC_REPEAT_MODE_ONE_MEDIA != mode) {
+    // The onrepeatmoderequest event may be reported only with mode equal to true/false. The 3rd
+    // mode is not supported by this event.
+    common::tools::PrintDeprecationWarningFor("onrepeatmoderequest", "onrepeatstaterequest");
+    data_o["action"] = picojson::value(std::string("onrepeatmoderequest"));
+    data_o["mode"] = picojson::value(mode == MC_REPEAT_MODE_ON);
+    server->change_request_playback_info_listener_(&data);
+  }
+
+  std::string state{};
+  PlatformResult result = Types::PlatformEnumToString(Types::kMediaControllerRepeatState,
+                                                      static_cast<int>(mode), &state);
+  if (!result) {
+    LoggerE("PlatformEnumToString failed, error: %s", result.message().c_str());
+    return;
+  }
+  data_o["action"] = picojson::value(std::string("onrepeatstaterequest"));
+  data_o["state"] = picojson::value(state);
 
   server->change_request_playback_info_listener_(&data);
 }
index 19405e9f1165e2822cce073e662fa1392dd9a2ba..4af82e625cc665197b151c4049c4c9aa604d6d6a 100644 (file)
@@ -36,6 +36,7 @@ class MediaControllerServer {
   common::PlatformResult SetPlaybackPosition(double position);
   common::PlatformResult SetShuffleMode(bool mode);
   common::PlatformResult SetRepeatMode(bool mode);
+  common::PlatformResult SetRepeatState(const std::string& state);
   common::PlatformResult SetMetadata(const picojson::object& metadata);
 
   common::PlatformResult SetChangeRequestPlaybackInfoListener(const JsonCallback& callback);
index 6c92df8a684f40122849365c95bf08fab87bc987..ae099dca7fccadae02b7b307ed3914a5ac0c8e22 100644 (file)
@@ -32,6 +32,7 @@ const std::string Types::kMediaControllerServerState = "MediaControllerServerSta
 const std::string Types::kMediaControllerPlaybackState = "MediaControllerPlaybackState";
 const std::string Types::kMediaControllerPlaybackAction = "MediaControllerPlaybackAction";
 const std::string Types::kMediaControllerMetadataAttribute = "MediaControllerMetadataAttribute";
+const std::string Types::kMediaControllerRepeatState = "MediaControllerRepeatState";
 
 const PlatformEnumMap Types::platform_enum_map_ = {{kMediaControllerServerState,
                                                     {{"NONE", MC_SERVER_STATE_NONE},
@@ -64,7 +65,11 @@ const PlatformEnumMap Types::platform_enum_map_ = {{kMediaControllerServerState,
                                                      {"copyright", MC_META_MEDIA_COPYRIGHT},
                                                      {"description", MC_META_MEDIA_DESCRIPTION},
                                                      {"trackNum", MC_META_MEDIA_TRACK_NUM},
-                                                     {"picture", MC_META_MEDIA_PICTURE}}}};
+                                                     {"picture", MC_META_MEDIA_PICTURE}}},
+                                                   {kMediaControllerRepeatState,
+                                                    {{"REPEAT_OFF", MC_REPEAT_MODE_OFF},
+                                                     {"REPEAT_ONE", MC_REPEAT_MODE_ONE_MEDIA},
+                                                     {"REPEAT_ALL", MC_REPEAT_MODE_ON}}}};
 
 PlatformEnumReverseMap Types::platform_enum_reverse_map_ = {};
 
index 8aaa0f8dc870fce478c4e681594c275ea1a7e689..6411d57463ed205b30046a13b60ea946c32d2bd8 100644 (file)
@@ -37,6 +37,7 @@ class Types {
   static const std::string kMediaControllerPlaybackState;
   static const std::string kMediaControllerPlaybackAction;
   static const std::string kMediaControllerMetadataAttribute;
+  static const std::string kMediaControllerRepeatState;
 
   static common::PlatformResult GetPlatformEnumMap(
       const std::string& type, std::map<std::string, int> const** platform_str);