var _position = 0;
var _shuffleMode = false;
var _repeatMode = false;
+ var _contentType = MediaControllerContentType.UNDECIDED;
var _repeatState = MediaControllerRepeatState.REPEAT_OFF;
var _ageRating = MediaControllerContentAgeRating.ALL;
var _metadata = new MediaControllerMetadata();
},
enumerable: true
},
+ contentType: {
+ get: function() {
+ return _contentType;
+ },
+ set: function(v) {
+ _contentType = edit_.isAllowed && v ? v : _contentType;
+ },
+ enumerable: true
+ },
metadata: {
get: function() {
return _metadata;
edit_.disallow();
};
+MediaControllerServer.prototype.updatePlaybackContentType = function(contentType) {
+ var args = validator_.validateArgs(arguments, [
+ {name: 'contentType', type: types_.ENUM, values: Object.values(MediaControllerContentType)}
+ ]);
+
+ var data = {
+ contentType: args.contentType
+ };
+
+ var result = native_.callSync('MediaControllerServer_updatePlaybackContentType', data);
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObject(result);
+ }
+
+ edit_.allow();
+ this.playbackInfo.contentType = args.contentType;
+ edit_.disallow();
+}
+
MediaControllerServer.prototype.updateShuffleMode = function(mode) {
var args = validator_.validateArgs(arguments, [
{name: 'mode', type: types_.BOOLEAN}
return result;
}
+ // content type
+ std::string contentType;
+ result = types::ConvertContentType(playback_h, &contentType);
+ if (!result) {
+ LoggerE("ConvertContentType failed, error: %s", result.message().c_str());
+ return result;
+ }
+
// shuffle mode
mc_shuffle_mode_e shuffle;
ret = mc_client_get_server_shuffle_mode(handle_, server_name.c_str(), &shuffle);
(*playback_info)["state"] = picojson::value(state);
(*playback_info)["position"] = picojson::value(position);
(*playback_info)["ageRating"] = picojson::value(rating);
+ (*playback_info)["contentType"] = picojson::value(contentType);
(*playback_info)["shuffleMode"] = picojson::value(shuffle == MC_SHUFFLE_MODE_ON);
(*playback_info)["repeatMode"] = picojson::value(repeat == MC_REPEAT_MODE_ON);
(*playback_info)["metadata"] = metadata;
REGISTER_SYNC("MediaControllerServer_updateRepeatMode", MediaControllerServerUpdateRepeatMode);
REGISTER_SYNC("MediaControllerServer_updateRepeatState", MediaControllerServerUpdateRepeatState);
REGISTER_SYNC("MediaControllerServer_updateShuffleMode", MediaControllerServerUpdateShuffleMode);
+ REGISTER_SYNC("MediaControllerServer_updatePlaybackContentType", MediaControllerServerUpdatePlaybackContentType);
REGISTER_SYNC("MediaControllerServer_updateMetadata", MediaControllerServerUpdateMetadata);
REGISTER_SYNC("MediaControllerServer_addChangeRequestPlaybackInfoListener",
MediaControllerServerAddChangeRequestPlaybackInfoListener);
ReportSuccess(out);
}
+void MediaControllerInstance::MediaControllerServerUpdatePlaybackContentType(const picojson::value& args,
+ picojson::object& out) {
+ ScopeLogger();
+ if (!server_) {
+ LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Unknown error occured."), &out,
+ ("Failed: server_"));
+ return;
+ }
+
+ CHECK_ARGS(args, "contentType", std::string, out);
+ std::string content_type = args.get("contentType").get<std::string>();
+
+ PlatformResult result = server_->SetContentType(content_type);
+ if (!result) {
+ LogAndReportError(result, &out, ("Failed: server_>SetContentType()"));
+ return;
+ }
+
+ ReportSuccess(out);
+}
+
void MediaControllerInstance::MediaControllerServerUpdateRepeatMode(const picojson::value& args,
picojson::object& out) {
ScopeLogger();
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 MediaControllerServerUpdatePlaybackContentType(const picojson::value& args, picojson::object& out);
void MediaControllerServerUpdateMetadata(const picojson::value& args, picojson::object& out);
void MediaControllerServerAddChangeRequestPlaybackInfoListener(const picojson::value& args,
picojson::object& out);
playback_state_(MC_PLAYBACK_STATE_STOPPED),
position_(0ULL),
age_rating_(MC_CONTENT_RATING_ALL),
+ content_type_(MC_CONTENT_TYPE_UNDECIDED),
shuffle_mode_(MC_SHUFFLE_MODE_OFF),
repeat_mode_(MC_REPEAT_MODE_OFF),
is_shuffle_mode_set_(false),
return PlatformResult(ErrorCode::NO_ERROR);
}
+PlatformResult MediaControllerServer::SetContentType(const std::string& content_type) {
+ ScopeLogger();
+
+ mc_content_type_e content_type_e;
+ PlatformResult result = types::MediaControllerContentTypeEnum.getValue(content_type, &content_type_e);
+ if (!result) {
+ return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Converting string to platform enum failed",
+ ("MediaControllerContentTypeEnum.getValue() error message: %s", result.message().c_str()));
+ }
+
+ int ret = mc_server_set_playback_content_type(handle_, content_type_e);
+ if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
+ return LogAndCreateResult(
+ ErrorCode::UNKNOWN_ERR, "Error updating playback content type",
+ ("mc_server_set_playback_content_type() error: %d, message: %s", ret, get_error_message(ret)));
+ }
+
+ content_type_ = content_type_e;
+
+ ret = mc_server_update_playback_info(handle_);
+ if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
+ return LogAndCreateResult(
+ ErrorCode::UNKNOWN_ERR, "Error updating playback info",
+ ("mc_server_update_playback_info() error: %d, message: %s", ret, get_error_message(ret)));
+ }
+
+ return PlatformResult(ErrorCode::NO_ERROR);
+}
+
PlatformResult MediaControllerServer::SetShuffleMode(bool mode) {
ScopeLogger();
common::PlatformResult SetPlaybackState(const std::string& state);
common::PlatformResult SetPlaybackPosition(double position);
common::PlatformResult SetContentAgeRating(const std::string& rating);
+ common::PlatformResult SetContentType(const std::string& content_type);
common::PlatformResult SetShuffleMode(bool mode);
common::PlatformResult SetRepeatMode(bool mode);
common::PlatformResult SetRepeatState(const std::string& state);
mc_playback_states_e playback_state_;
unsigned long long position_;
mc_content_age_rating_e age_rating_;
+ mc_content_type_e content_type_;
mc_shuffle_mode_e shuffle_mode_;
mc_repeat_mode_e repeat_mode_;
bool is_shuffle_mode_set_;