From: Szymon Jastrzebski Date: Thu, 3 Jan 2019 13:47:11 +0000 (+0100) Subject: [Mediacontroller] Added new methods, enums, events X-Git-Tag: submit/tizen/20190315.163126~4^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9a620bd2e7fbe1725a32d95ca6c0d75d6a8c91c2;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Mediacontroller] Added new methods, enums, events + 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 --- diff --git a/src/mediacontroller/mediacontroller_api.js b/src/mediacontroller/mediacontroller_api.js index 2b3dbf1a..a70c0cb8 100755 --- a/src/mediacontroller/mediacontroller_api.js +++ b/src/mediacontroller/mediacontroller_api.js @@ -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' ] }]); diff --git a/src/mediacontroller/mediacontroller_client.cc b/src/mediacontroller/mediacontroller_client.cc index 99c2ebbb..a8c33915 100644 --- a/src/mediacontroller/mediacontroller_client.cc +++ b/src/mediacontroller/mediacontroller_client.cc @@ -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(); - 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(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(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 diff --git a/src/mediacontroller/mediacontroller_client.h b/src/mediacontroller/mediacontroller_client.h index 6108eb52..2adddc08 100644 --- a/src/mediacontroller/mediacontroller_client.h +++ b/src/mediacontroller/mediacontroller_client.h @@ -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, diff --git a/src/mediacontroller/mediacontroller_instance.cc b/src/mediacontroller/mediacontroller_instance.cc index 6a7a79f9..4899652f 100644 --- a/src/mediacontroller/mediacontroller_instance.cc +++ b/src/mediacontroller/mediacontroller_instance.cc @@ -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(); + + 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(); + response_obj["callbackId"] = args.get("callbackId"); + + PlatformResult result = client_->SendRepeatState(args.get("name").get(), + args.get("state").get()); + + 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(); diff --git a/src/mediacontroller/mediacontroller_instance.h b/src/mediacontroller/mediacontroller_instance.h index 981e9e45..9b5c9a57 100644 --- a/src/mediacontroller/mediacontroller_instance.h +++ b/src/mediacontroller/mediacontroller_instance.h @@ -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, diff --git a/src/mediacontroller/mediacontroller_server.cc b/src/mediacontroller/mediacontroller_server.cc index 214b8913..1e176822 100644 --- a/src/mediacontroller/mediacontroller_server.cc +++ b/src/mediacontroller/mediacontroller_server.cc @@ -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(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(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(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(); + 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(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); } diff --git a/src/mediacontroller/mediacontroller_server.h b/src/mediacontroller/mediacontroller_server.h index 19405e9f..4af82e62 100644 --- a/src/mediacontroller/mediacontroller_server.h +++ b/src/mediacontroller/mediacontroller_server.h @@ -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); diff --git a/src/mediacontroller/mediacontroller_types.cc b/src/mediacontroller/mediacontroller_types.cc index 6c92df8a..ae099dca 100644 --- a/src/mediacontroller/mediacontroller_types.cc +++ b/src/mediacontroller/mediacontroller_types.cc @@ -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_ = {}; diff --git a/src/mediacontroller/mediacontroller_types.h b/src/mediacontroller/mediacontroller_types.h index 8aaa0f8d..6411d574 100644 --- a/src/mediacontroller/mediacontroller_types.h +++ b/src/mediacontroller/mediacontroller_types.h @@ -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 const** platform_str);