Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(654)

Unified Diff: extensions/browser/api/media_perception_private/media_perception_private_api.cc

Issue 2858353002: MediaPerceptionPrivate API impl and testing. (Closed)
Patch Set: Added media_perception_proto as direct dependency of test targets. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698