| Index: extensions/browser/api/media_perception_private/media_perception_private_api.cc
|
| diff --git a/extensions/browser/api/media_perception_private/media_perception_private_api.cc b/extensions/browser/api/media_perception_private/media_perception_private_api.cc
|
| index daa65c18a009b64a1345e7eb9237d8e06a8d284b..48bb02bf770d2c6d1cca54d9c3be497ffa5d39bf 100644
|
| --- a/extensions/browser/api/media_perception_private/media_perception_private_api.cc
|
| +++ b/extensions/browser/api/media_perception_private/media_perception_private_api.cc
|
| @@ -4,8 +4,33 @@
|
|
|
| #include "extensions/browser/api/media_perception_private/media_perception_private_api.h"
|
|
|
| +namespace media_perception = extensions::api::media_perception_private;
|
| +
|
| namespace extensions {
|
|
|
| +using CallbackStatus = MediaPerceptionAPIManager::CallbackStatus;
|
| +
|
| +namespace {
|
| +
|
| +const char kErrorStringStatusDbusError[] = "Service is unreachable.";
|
| +const char kErrorStringStatusIdle[] = "Service is not running.";
|
| +const char kErrorStringStatusLaunching[] = "Service busy launching.";
|
| +
|
| +std::string CallbackStatusToErrorMessage(const CallbackStatus& status) {
|
| + switch (status) {
|
| + case CallbackStatus::DBUS_ERROR:
|
| + return kErrorStringStatusDbusError;
|
| + case CallbackStatus::PROCESS_IDLE_ERROR:
|
| + return kErrorStringStatusIdle;
|
| + case CallbackStatus::PROCESS_LAUNCHING_ERROR:
|
| + return kErrorStringStatusLaunching;
|
| + case CallbackStatus::SUCCESS:
|
| + return "CallbackStatus success.";
|
| + }
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| MediaPerceptionPrivateGetStateFunction ::
|
| MediaPerceptionPrivateGetStateFunction() {}
|
|
|
| @@ -14,7 +39,21 @@ MediaPerceptionPrivateGetStateFunction ::
|
|
|
| ExtensionFunction::ResponseAction
|
| MediaPerceptionPrivateGetStateFunction::Run() {
|
| - return RespondNow(Error("Not implemented."));
|
| + MediaPerceptionAPIManager* manager =
|
| + MediaPerceptionAPIManager::Get(browser_context());
|
| + manager->GetState(base::Bind(
|
| + &MediaPerceptionPrivateGetStateFunction::GetStateCallback, this));
|
| + return RespondLater();
|
| +}
|
| +
|
| +void MediaPerceptionPrivateGetStateFunction::GetStateCallback(
|
| + CallbackStatus status,
|
| + media_perception::State state) {
|
| + if (status != CallbackStatus::SUCCESS) {
|
| + Respond(Error(CallbackStatusToErrorMessage(status)));
|
| + return;
|
| + }
|
| + Respond(OneArgument(state.ToValue()));
|
| }
|
|
|
| MediaPerceptionPrivateSetStateFunction ::
|
| @@ -25,7 +64,38 @@ MediaPerceptionPrivateSetStateFunction ::
|
|
|
| ExtensionFunction::ResponseAction
|
| MediaPerceptionPrivateSetStateFunction::Run() {
|
| - return RespondNow(Error("Not implemented."));
|
| + std::unique_ptr<media_perception::SetState::Params> params =
|
| + media_perception::SetState::Params::Create(*args_);
|
| + EXTENSION_FUNCTION_VALIDATE(params.get());
|
| + if (params->state.status != media_perception::STATUS_RUNNING &&
|
| + params->state.status != media_perception::STATUS_SUSPENDED) {
|
| + return RespondNow(
|
| + Error("Status can only be set to RUNNING and SUSPENDED."));
|
| + }
|
| +
|
| + // Check that device context is only provided with SetState RUNNING.
|
| + if (params->state.status != media_perception::STATUS_RUNNING &&
|
| + params->state.device_context.get() != nullptr) {
|
| + return RespondNow(
|
| + Error("Only provide deviceContext with SetState RUNNING."));
|
| + }
|
| + MediaPerceptionAPIManager* manager =
|
| + MediaPerceptionAPIManager::Get(browser_context());
|
| + manager->SetState(
|
| + params->state,
|
| + base::Bind(&MediaPerceptionPrivateSetStateFunction::SetStateCallback,
|
| + this));
|
| + return RespondLater();
|
| +}
|
| +
|
| +void MediaPerceptionPrivateSetStateFunction::SetStateCallback(
|
| + CallbackStatus status,
|
| + media_perception::State state) {
|
| + if (status != CallbackStatus::SUCCESS) {
|
| + Respond(Error(CallbackStatusToErrorMessage(status)));
|
| + return;
|
| + }
|
| + Respond(OneArgument(state.ToValue()));
|
| }
|
|
|
| MediaPerceptionPrivateGetDiagnosticsFunction ::
|
| @@ -36,7 +106,22 @@ MediaPerceptionPrivateGetDiagnosticsFunction ::
|
|
|
| ExtensionFunction::ResponseAction
|
| MediaPerceptionPrivateGetDiagnosticsFunction::Run() {
|
| - return RespondNow(Error("Not implemented."));
|
| + MediaPerceptionAPIManager* manager =
|
| + MediaPerceptionAPIManager::Get(browser_context());
|
| + manager->GetDiagnostics(base::Bind(
|
| + &MediaPerceptionPrivateGetDiagnosticsFunction::GetDiagnosticsCallback,
|
| + this));
|
| + return RespondLater();
|
| +}
|
| +
|
| +void MediaPerceptionPrivateGetDiagnosticsFunction::GetDiagnosticsCallback(
|
| + CallbackStatus status,
|
| + media_perception::Diagnostics diagnostics) {
|
| + if (status != CallbackStatus::SUCCESS) {
|
| + Respond(Error(CallbackStatusToErrorMessage(status)));
|
| + return;
|
| + }
|
| + Respond(OneArgument(diagnostics.ToValue()));
|
| }
|
|
|
| } // namespace extensions
|
|
|