native_,
'_ServerPlaybackInfoListener',
function(msg, listener) {
+ var reply = null;
if (msg.action === 'onplaybackstaterequest') {
utils_.printDeprecationWarningFor(
'onplaybackstaterequest',
native_.callIfPossible(listener[msg.action], msg.state, msg.clientName);
}
if (msg.action === 'onplaybackactionrequest') {
- native_.callIfPossible(listener[msg.action], msg.state, msg.clientName);
+ reply = native_.callIfPossibleAndReturn(
+ listener[msg.action],
+ msg.state,
+ msg.clientName
+ );
}
if (msg.action === 'onplaybackpositionrequest') {
- native_.callIfPossible(listener[msg.action], msg.position, msg.clientName);
+ reply = native_.callIfPossibleAndReturn(
+ listener[msg.action],
+ msg.position,
+ msg.clientName
+ );
}
if (msg.action === 'onshufflemoderequest') {
- native_.callIfPossible(listener[msg.action], msg.mode, msg.clientName);
+ reply = native_.callIfPossibleAndReturn(
+ listener[msg.action],
+ msg.mode,
+ msg.clientName
+ );
}
if (msg.action === 'onrepeatmoderequest') {
utils_.printDeprecationWarningFor(
native_.callIfPossible(listener[msg.action], msg.mode, msg.clientName);
}
if (msg.action === 'onrepeatstaterequest') {
- native_.callIfPossible(listener[msg.action], msg.state, msg.clientName);
+ reply = native_.callIfPossibleAndReturn(
+ listener[msg.action],
+ msg.state,
+ msg.clientName
+ );
}
if (msg.action === 'onplaybackitemrequest') {
- native_.callIfPossible(
+ reply = native_.callIfPossibleAndReturn(
listener[msg.action],
msg.playlistName,
msg.index,
msg.clientName
);
}
+
+ if (!type_.isNullOrUndefined(reply)) {
+ if (!(reply instanceof RequestReply)) {
+ reply = new RequestReply(reply,0);
+ }
+
+ var nativeData = {
+ clientName: msg.clientName,
+ requestId: msg.requestId,
+ reply: reply
+ };
+ var result = native_.callSync(
+ 'MediaControllerServerReplyCommand',
+ nativeData
+ );
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObject(result);
+ }
+ }
}
);
successCallback,
errorCallback
) {
+ utils_.printDeprecationWarningFor(
+ 'MediaControllerServerInfo.sendPlaybackState()',
+ 'MediaControllerServerInfoPlaybackInfo.sendPlaybackAction()'
+ );
+
var args = validator_.validateArgs(arguments, [
{
name: 'state',
successCallback,
errorCallback
) {
+ utils_.printDeprecationWarningFor(
+ 'MediaControllerServerInfo.sendPlaybackPosition()',
+ 'MediaControllerServerInfoPlaybackInfo.sendPlaybackPosition()'
+ );
var args = validator_.validateArgs(arguments, [
{ name: 'position', type: types_.LONG_LONG },
{
var data = {
position: args.position,
- name: this.name
+ serverName: this.name
};
native_.call('MediaControllerServerInfoSendPlaybackPosition', data, callback);
successCallback,
errorCallback
) {
+ utils_.printDeprecationWarningFor(
+ 'MediaControllerServerInfo.sendShuffleMode()',
+ 'MediaControllerServerInfoPlaybackInfo.sendShuffleMode()'
+ );
var args = validator_.validateArgs(arguments, [
{ name: 'mode', type: types_.BOOLEAN },
{
var data = {
mode: args.mode,
- name: this.name
+ serverName: this.name
};
native_.call('MediaControllerServerInfoSendShuffleMode', data, callback);
};
native_.call('MediaControllerServerInfoSendRepeatMode', data, callback);
};
-MediaControllerServerInfo.prototype.sendRepeatState = function() {
+MediaControllerServerInfo.prototype.sendRepeatState = function(
+ state,
+ successCallback,
+ errorCallback
+) {
+ utils_.printDeprecationWarningFor(
+ 'MediaControllerServerInfo.sendRepeatState()',
+ 'MediaControllerServerInfoPlaybackInfo.sendRepeatState()'
+ );
var args = validator_.validateArgs(arguments, [
{
name: 'state',
var data = {
state: args.state,
- name: this.name
+ serverName: this.name
};
native_.call('MediaControllerServerInfoSendRepeatState', data, callback);
};
};
MediaControllerServerInfo.prototype.addPlaybackInfoChangeListener = function(listener) {
+ utils_.printDeprecationWarningFor(
+ 'MediaControllerServerInfo.addPlaybackInfoChangeListener()',
+ 'MediaControllerServerInfoPlaybackInfo.addPlaybackInfoChangeListener()'
+ );
+ var args = [this.name].concat(Array.prototype.slice.call(arguments));
+ return addPlaybackInfoChangeListener.apply(this, args);
+};
+
+var addPlaybackInfoChangeListener = function(serverName, listener) {
var args = validator_.validateArgs(arguments, [
{
+ name: 'serverName',
+ type: types_.STRING
+ },
+ {
name: 'listener',
type: types_.LISTENER,
values: [
}
}
- return ServerInfoPlaybackInfoListener.addServerInfoListener(args.listener, this.name);
+ return ServerInfoPlaybackInfoListener.addServerInfoListener(
+ args.listener,
+ args.serverName
+ );
};
MediaControllerServerInfo.prototype.removePlaybackInfoChangeListener = function(watchId) {
+ utils_.printDeprecationWarningFor(
+ 'MediaControllerServerInfo.removePlaybackInfoChangeListener()',
+ 'MediaControllerServerInfoPlaybackInfo.removePlaybackInfoChangeListener()'
+ );
+ removePlaybackInfoChangeListener(watchId);
+};
+
+var removePlaybackInfoChangeListener = function(watchId) {
var args = validator_.validateArgs(arguments, [
{ name: 'watchId', type: types_.LONG }
]);
};
function MediaControllerServerInfoPlaybackInfo(serverName, data) {
- var _serverName = serverName; // this variable will be used in the future
+ var _serverName = serverName;
Object.defineProperties(this, {
state: {
writable: false
}
});
+
+ this.sendPlaybackAction = function(action, replyCallback) {
+ sendRequestWithReply(
+ _serverName,
+ 'action',
+ types_.ENUM,
+ Object.keys(MediaControllerPlaybackAction),
+ 'MediaControllerServerInfoPlaybackInfoSendPlaybackAction',
+ action,
+ replyCallback
+ );
+ };
+
+ this.sendPlaybackPosition = function(position, replyCallback) {
+ sendRequestWithReply(
+ _serverName,
+ 'position',
+ types_.LONG_LONG,
+ null,
+ 'MediaControllerServerInfoPlaybackInfoSendPlaybackPosition',
+ position,
+ replyCallback
+ );
+ };
+
+ this.sendShuffleMode = function(mode, replyCallback) {
+ sendRequestWithReply(
+ _serverName,
+ 'mode',
+ types_.BOOLEAN,
+ null,
+ 'MediaControllerServerInfoPlaybackInfoSendShuffleMode',
+ mode,
+ replyCallback
+ );
+ };
+
+ this.sendRepeatState = function(state, replyCallback) {
+ sendRequestWithReply(
+ _serverName,
+ 'state',
+ types_.ENUM,
+ Object.keys(MediaControllerRepeatState),
+ 'MediaControllerServerInfoPlaybackInfoSendRepeatState',
+ state,
+ replyCallback
+ );
+ };
+
+ this.addPlaybackInfoChangeListener = function(listener) {
+ var args = [_serverName].concat(Array.prototype.slice.call(arguments));
+ return addPlaybackInfoChangeListener.apply(this, args);
+ };
+
+ this.removePlaybackInfoChangeListener = function(watchId) {
+ removePlaybackInfoChangeListener(watchId);
+ };
}
+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 callback = function(result) {
+ native_.callIfPossible(
+ args.replyCallback,
+ native_.getResultObject(result).data,
+ native_.getResultObject(result).code
+ );
+ };
+
+ var nativeData = {
+ attribute: args[attribName],
+ serverName: serverName,
+ listenerId: ReplyCommandListener.listenerName
+ };
+
+ var result = native_.callSync(callString, nativeData);
+ if (native_.isFailure(result)) {
+ throw native_.getErrorObject(result);
+ }
+
+ var replyListenerId = ReplyCommandListener.addListener(callback);
+ ReplyCommandListener.requestIdToListenerId[replyListenerId] = result.requestId;
+};
+
exports = new MediaControllerManager();
exports.SearchFilter = SearchFilter;
exports.RequestReply = RequestReply;
return PlatformResult(ErrorCode::NO_ERROR);
}
+PlatformResult MediaControllerClient::SendPlaybackAction(const std::string& server_name,
+ const std::string& action,
+ const JsonCallback& callback,
+ char** request_id) {
+ ScopeLogger("Action to send: %s", action.c_str());
+ mc_playback_action_e playback_action = MC_PLAYBACK_ACTION_PLAY;
+ PlatformResult result =
+ types::MediaControllerPlaybackActionEnum.getValue(action, &playback_action);
+ if (!result) {
+ LoggerE("MediaControllerPlaybackActionEnum.getValue() failed, error: %s",
+ result.message().c_str());
+ return PlatformResult(ErrorCode::UNKNOWN_ERR);
+ }
+
+ int ret =
+ mc_client_send_playback_action_cmd(handle_, server_name.c_str(), playback_action, request_id);
+ if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
+ return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Error sending playback action",
+ ("mc_client_send_playback_action_cmd() error: %d, message: %s", ret,
+ get_error_message(ret)));
+ }
+
+ command_reply_callback_ = callback;
+ return PlatformResult(ErrorCode::NO_ERROR);
+}
+
PlatformResult MediaControllerClient::SendPlaybackPosition(const std::string& server_name,
- double position) {
+ const unsigned long long position,
+ const JsonCallback& callback,
+ char** request_id) {
ScopeLogger();
- /* TODO: Prepare an ACR and propose use case for request_id.
- char* request_id = nullptr;
- SCOPE_EXIT {
- free(request_id);
- };*/
- int ret = mc_client_send_playback_position_cmd(handle_, server_name.c_str(),
- static_cast<unsigned long long>(position),
- /*&request_id*/ nullptr);
+ int ret =
+ mc_client_send_playback_position_cmd(handle_, server_name.c_str(), position, request_id);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Error sending playback position",
("mc_client_send_playback_position_cmd() error: %d, message: %s", ret,
get_error_message(ret)));
}
+ command_reply_callback_ = callback;
return PlatformResult(ErrorCode::NO_ERROR);
}
-PlatformResult MediaControllerClient::SendShuffleMode(const std::string& server_name, bool mode) {
+PlatformResult MediaControllerClient::SendShuffleMode(const std::string& server_name,
+ const bool mode, const JsonCallback& callback,
+ char** request_id) {
ScopeLogger();
- /* TODO: Prepare an ACR and propose use case for request_id.
- char* request_id = nullptr;
- SCOPE_EXIT {
- free(request_id);
- };*/
- int ret = mc_client_send_shuffle_mode_cmd(handle_, server_name.c_str(),
- mode ? MC_SHUFFLE_MODE_ON : MC_SHUFFLE_MODE_OFF,
- /*&request_id*/ nullptr);
+
+ mc_shuffle_mode_e shuffle_mode = mode ? MC_SHUFFLE_MODE_ON : MC_SHUFFLE_MODE_OFF;
+ int ret = mc_client_send_shuffle_mode_cmd(handle_, server_name.c_str(), shuffle_mode, request_id);
if (MEDIA_CONTROLLER_ERROR_NONE != ret) {
return LogAndCreateResult(
ErrorCode::UNKNOWN_ERR, "Error sending shuffle mode",
("mc_client_send_shuffle_mode_cmd() error: %d, message: %s", ret, get_error_message(ret)));
}
+ command_reply_callback_ = callback;
return PlatformResult(ErrorCode::NO_ERROR);
}
}
PlatformResult MediaControllerClient::SendRepeatState(const std::string& server_name,
- const std::string& state) {
+ const std::string& state,
+ const JsonCallback& callback,
+ char** request_id) {
ScopeLogger();
- /* TODO: Prepare an ACR and propose use case for request_id.
- char* request_id = nullptr;
- SCOPE_EXIT {
- free(request_id);
- };*/
mc_repeat_mode_e state_e;
PlatformResult result = types::MediaControllerRepeatModeEnum.getValue(state, &state_e);
if (!result) {
return result;
}
- int ret = mc_client_send_repeat_mode_cmd(handle_, server_name.c_str(), state_e, nullptr);
+ int ret = mc_client_send_repeat_mode_cmd(handle_, server_name.c_str(), state_e, request_id);
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)));
}
+ command_reply_callback_ = callback;
return PlatformResult(ErrorCode::NO_ERROR);
}
common::PlatformResult GetMetadata(const std::string& server_name, picojson::object* metadata);
common::PlatformResult SendPlaybackState(const std::string& server_name,
const std::string& state);
- common::PlatformResult SendPlaybackPosition(const std::string& server_name, double position);
- common::PlatformResult SendShuffleMode(const std::string& server_name, bool mode);
+ common::PlatformResult SendPlaybackAction(const std::string& server_name,
+ const std::string& action, const JsonCallback& callback,
+ char** request_id);
+ common::PlatformResult SendPlaybackPosition(const std::string& server_name,
+ const unsigned long long position,
+ const JsonCallback& callback = nullptr,
+ char** request_id = nullptr);
+ common::PlatformResult SendShuffleMode(const std::string& server_name, const bool mode,
+ const JsonCallback& callback = nullptr,
+ char** request_id = nullptr);
common::PlatformResult SendRepeatMode(const std::string& server_name, bool mode);
- common::PlatformResult SendRepeatState(const std::string& server_name, const std::string& state);
+ common::PlatformResult SendRepeatState(const std::string& server_name, const std::string& state,
+ const JsonCallback& callback = nullptr,
+ char** request_id = nullptr);
common::PlatformResult SendSearchRequest(const std::string& server_name,
const picojson::value& request,
const JsonCallback& callback, char** request_id);
REGISTER_METHOD(MediaControllerServerInfoGetIconURI);
REGISTER_METHOD(MediaControllerClientAddAbilityChangeListener);
REGISTER_METHOD(MediaControllerClientRemoveAbilityChangeListener);
+ REGISTER_METHOD(MediaControllerServerInfoPlaybackInfoSendPlaybackAction);
+ REGISTER_METHOD(MediaControllerServerInfoPlaybackInfoSendPlaybackPosition);
+ REGISTER_METHOD(MediaControllerServerInfoPlaybackInfoSendShuffleMode);
+ REGISTER_METHOD(MediaControllerServerInfoPlaybackInfoSendRepeatState);
// abilities_info
REGISTER_METHOD(MediaControllerAbilitiesInfoSubscribe);
CHECK_EXIST(args, kRequestId, out);
CHECK_EXIST(args, kReply, out);
+ if (args.get(kRequestId).is<picojson::null>()) {
+ LoggerD("The request was sent without reply listener, skipping");
+ ReportSuccess(out);
+ return;
+ }
+
auto client_name = args.get(kClientName).get<std::string>();
auto request_id = args.get(kRequestId).get<std::string>();
return;
}
- CHECK_EXIST(args, kCallbackId, out)
- CHECK_EXIST(args, kName, out)
- CHECK_EXIST(args, kPosition, out)
+ CHECK_ARGS(args, kCallbackId, double, out)
+ CHECK_ARGS(args, kServerName, std::string, out)
+ CHECK_ARGS(args, kPosition, double, out)
auto send = [this, args]() -> void {
picojson::value response = picojson::value(picojson::object());
picojson::object& response_obj = response.get<picojson::object>();
response_obj[kCallbackId] = args.get(kCallbackId);
+ const std::string& server_name = args.get(kServerName).get<std::string>();
+ const unsigned long long position =
+ static_cast<unsigned long long>(args.get(kPosition).get<double>());
- PlatformResult result = client_->SendPlaybackPosition(args.get(kName).get<std::string>(),
- args.get(kPosition).get<double>());
+ PlatformResult result = client_->SendPlaybackPosition(server_name, position);
if (result) {
ReportSuccess(response_obj);
return;
}
- CHECK_EXIST(args, kCallbackId, out)
- CHECK_EXIST(args, kName, out)
- CHECK_EXIST(args, kMode, out)
+ CHECK_ARGS(args, kCallbackId, double, out)
+ CHECK_ARGS(args, kServerName, std::string, out)
+ CHECK_ARGS(args, kMode, bool, out)
auto send = [this, args]() -> void {
picojson::value response = picojson::value(picojson::object());
picojson::object& response_obj = response.get<picojson::object>();
response_obj[kCallbackId] = args.get(kCallbackId);
- PlatformResult result =
- client_->SendShuffleMode(args.get(kName).get<std::string>(), args.get(kMode).get<bool>());
+ const std::string& server_name = args.get(kServerName).get<std::string>();
+ const bool mode = args.get(kMode).get<bool>();
+
+ PlatformResult result = client_->SendShuffleMode(server_name, mode);
if (result) {
ReportSuccess(response_obj);
picojson::object& response_obj = response.get<picojson::object>();
response_obj[kCallbackId] = args.get(kCallbackId);
- PlatformResult result = client_->SendRepeatState(args.get(kName).get<std::string>(),
- args.get(kState).get<std::string>());
+ const std::string& server_name = args.get(kServerName).get<std::string>();
+ const std::string& state = args.get(kState).get<std::string>();
+
+ PlatformResult result = client_->SendRepeatState(server_name, state);
if (result) {
ReportSuccess(response_obj);
ReportSuccess(picojson::value(result), out);
}
+void MediaControllerInstance::MediaControllerServerInfoPlaybackInfoSendPlaybackAction(
+ const picojson::value& args, picojson::object& out) {
+ ScopeLogger();
+ if (!client_) {
+ LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, MediaControllerUnknownErrorMsg), &out,
+ (MediaControllerClientUnknownErrorMsg));
+ return;
+ }
+
+ CHECK_ARGS(args, kServerName, std::string, out)
+ CHECK_ARGS(args, kAttribute, std::string, out)
+ CHECK_ARGS(args, kListenerId, std::string, out)
+
+ JsonCallback reply_cb = [this, args](picojson::value* reply) -> void {
+ if (reply) {
+ picojson::object& reply_obj = reply->get<picojson::object>();
+ reply_obj[kListenerId] = args.get(kListenerId);
+ Instance::PostMessage(this, reply->serialize().c_str());
+ } else {
+ LoggerW("No reply passed to json callback, ignoring");
+ }
+ };
+
+ char* request_id = nullptr;
+ SCOPE_EXIT {
+ free(request_id);
+ };
+
+ const std::string& server_name = args.get(kServerName).get<std::string>();
+ const std::string& action = args.get(kAttribute).get<std::string>();
+
+ PlatformResult result = client_->SendPlaybackAction(server_name, action, reply_cb, &request_id);
+
+ if (result) {
+ ReportSuccess(out);
+ out[kRequestId] = picojson::value(std::string(request_id));
+ } else {
+ LogAndReportError(result, &out, ("Failed to send playback action."));
+ }
+}
+
+void MediaControllerInstance::MediaControllerServerInfoPlaybackInfoSendPlaybackPosition(
+ const picojson::value& args, picojson::object& out) {
+ ScopeLogger();
+ if (!client_) {
+ LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, MediaControllerUnknownErrorMsg), &out,
+ (MediaControllerClientUnknownErrorMsg));
+ return;
+ }
+
+ CHECK_ARGS(args, kServerName, std::string, out)
+ CHECK_ARGS(args, kAttribute, double, out)
+ CHECK_ARGS(args, kListenerId, std::string, out)
+
+ JsonCallback reply_cb = [this, args](picojson::value* reply) -> void {
+ if (reply) {
+ picojson::object& reply_obj = reply->get<picojson::object>();
+ reply_obj[kListenerId] = args.get(kListenerId);
+ Instance::PostMessage(this, reply->serialize().c_str());
+ } else {
+ LoggerW("No reply passed to json callback, ignoring");
+ }
+ };
+
+ char* request_id = nullptr;
+ SCOPE_EXIT {
+ free(request_id);
+ };
+
+ const std::string& server_name = args.get(kServerName).get<std::string>();
+ const unsigned long long position =
+ static_cast<unsigned long long>(args.get(kAttribute).get<double>());
+
+ PlatformResult result =
+ client_->SendPlaybackPosition(server_name, position, reply_cb, &request_id);
+
+ if (result) {
+ ReportSuccess(out);
+ out[kRequestId] = picojson::value(std::string(request_id));
+ } else {
+ LogAndReportError(result, &out, ("Failed to send playback position."));
+ }
+}
+
+void MediaControllerInstance::MediaControllerServerInfoPlaybackInfoSendShuffleMode(
+ const picojson::value& args, picojson::object& out) {
+ ScopeLogger();
+ if (!client_) {
+ LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, MediaControllerUnknownErrorMsg), &out,
+ (MediaControllerClientUnknownErrorMsg));
+ return;
+ }
+
+ CHECK_ARGS(args, kServerName, std::string, out)
+ CHECK_ARGS(args, kAttribute, bool, out)
+ CHECK_ARGS(args, kListenerId, std::string, out)
+
+ JsonCallback reply_cb = [this, args](picojson::value* reply) -> void {
+ if (reply) {
+ picojson::object& reply_obj = reply->get<picojson::object>();
+ reply_obj[kListenerId] = args.get(kListenerId);
+ Instance::PostMessage(this, reply->serialize().c_str());
+ } else {
+ LoggerW("No reply passed to json callback, ignoring");
+ }
+ };
+
+ char* request_id = nullptr;
+ SCOPE_EXIT {
+ free(request_id);
+ };
+
+ const std::string& server_name = args.get(kServerName).get<std::string>();
+ const bool mode = args.get(kAttribute).get<bool>();
+
+ PlatformResult result = client_->SendShuffleMode(server_name, mode, reply_cb, &request_id);
+
+ if (result) {
+ ReportSuccess(out);
+ out[kRequestId] = picojson::value(std::string(request_id));
+ } else {
+ LogAndReportError(result, &out, ("Failed to send playback position."));
+ }
+}
+
+void MediaControllerInstance::MediaControllerServerInfoPlaybackInfoSendRepeatState(
+ const picojson::value& args, picojson::object& out) {
+ ScopeLogger();
+ if (!client_) {
+ LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, MediaControllerUnknownErrorMsg), &out,
+ (MediaControllerClientUnknownErrorMsg));
+ return;
+ }
+
+ CHECK_ARGS(args, kServerName, std::string, out)
+ CHECK_ARGS(args, kAttribute, std::string, out)
+ CHECK_ARGS(args, kListenerId, std::string, out)
+
+ JsonCallback reply_cb = [this, args](picojson::value* reply) -> void {
+ if (reply) {
+ picojson::object& reply_obj = reply->get<picojson::object>();
+ reply_obj[kListenerId] = args.get(kListenerId);
+ Instance::PostMessage(this, reply->serialize().c_str());
+ } else {
+ LoggerW("No reply passed to json callback, ignoring");
+ }
+ };
+
+ char* request_id = nullptr;
+ SCOPE_EXIT {
+ free(request_id);
+ };
+
+ const std::string& server_name = args.get(kServerName).get<std::string>();
+ const std::string& state = args.get(kAttribute).get<std::string>();
+
+ PlatformResult result = client_->SendRepeatState(server_name, state, reply_cb, &request_id);
+
+ if (result) {
+ ReportSuccess(out);
+ out[kRequestId] = picojson::value(std::string(request_id));
+ } else {
+ LogAndReportError(result, &out, ("Failed to send playback position."));
+ }
+}
+
void MediaControllerInstance::MediaControllerClientAddAbilityChangeListener(
const picojson::value& args, picojson::object& out) {
ScopeLogger();
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,
+ picojson::object& out);
+ void MediaControllerServerInfoPlaybackInfoSendPlaybackPosition(const picojson::value& args,
+ picojson::object& out);
+ void MediaControllerServerInfoPlaybackInfoSendShuffleMode(const picojson::value& args,
+ picojson::object& out);
+ void MediaControllerServerInfoPlaybackInfoSendRepeatState(const picojson::value& args,
+ picojson::object& out);
// abilities_info
void MediaControllerAbilitiesInfoSubscribe(const picojson::value& args, picojson::object& out);
data_o[kAction] = picojson::value(std::string("onplaybackpositionrequest"));
data_o[kPosition] = picojson::value(static_cast<double>(position));
data_o[kClientName] = picojson::value(client_name);
+ data_o[kRequestId] = request_id ? picojson::value(std::string(request_id)) : picojson::value();
server->change_request_playback_info_listener_(&data);
}
data_o[kAction] = picojson::value(std::string("onshufflemoderequest"));
data_o[kMode] = picojson::value(mode == MC_SHUFFLE_MODE_ON);
data_o[kClientName] = picojson::value(client_name);
+ data_o[kRequestId] = request_id ? picojson::value(std::string(request_id)) : picojson::value();
server->change_request_playback_info_listener_(&data);
}
}
data_o[kAction] = picojson::value(std::string("onrepeatstaterequest"));
data_o[kState] = picojson::value(state);
+ data_o[kRequestId] = request_id ? picojson::value(std::string(request_id)) : picojson::value();
server->change_request_playback_info_listener_(&data);
}
const char* kAbilityType = "abilityType";
const char* kAction = "action";
const char* kAgeRating = "ageRating";
+const char* kAttribute = "attribute";
const char* kCallbackId = "callbackId";
const char* kCategory = "category";
const char* kClientName = "clientName";
extern const char* kAbilityType;
extern const char* kAction;
extern const char* kAgeRating;
+extern const char* kAttribute;
extern const char* kCallbackId;
extern const char* kCategory;
extern const char* kClientName;
}
};
+NativeManager.prototype.callIfPossibleAndReturn = function(callback) {
+ if (!_type.isNullOrUndefined(callback)) {
+ return callback.apply(callback, [].slice.call(arguments, 1));
+ }
+};
+
// WebAPIException and WebAPIError definition moved to Utils for compliance
// reasons with blink-wrt environment.
// In blink-wrt the original Tizen module is loaded, which is not providing