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

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

Issue 2858353002: MediaPerceptionPrivate API impl and testing. (Closed)
Patch Set: Addressing comments on API implementation. 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 c6320279d22a85aa4c8e31ea006f074575e0fb06..52191b985da626a7a14b57d77d6ca00f16186be5 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,6 +4,7 @@
#include "extensions/browser/api/media_perception_private/media_perception_private_api.h"
+#include "extensions/browser/api/media_perception_private/media_perception_api_manager.h"
#include "extensions/browser/extension_function.h"
namespace media_perception = extensions::api::media_perception_private;
@@ -18,7 +19,23 @@ MediaPerceptionPrivateGetStateFunction ::
ExtensionFunction::ResponseAction
MediaPerceptionPrivateGetStateFunction::Run() {
- return RespondNow(Error("Not implemented."));
+ MediaPerceptionAPIManager* manager =
+ MediaPerceptionAPIManager::Get(browser_context());
+ if (!manager) {
tbarzic 2017/05/09 01:28:37 Should this ever happen? Wound DCHECK be more appr
Luke Sorenson 2017/05/09 21:05:45 Don't think so. Replaced.
+ return RespondNow(Error("Can't get manager."));
+ }
+ manager->GetState(base::Bind(
+ &MediaPerceptionPrivateGetStateFunction::GetStateCallback, this));
+ return RespondLater();
+}
+
+void MediaPerceptionPrivateGetStateFunction::GetStateCallback(
+ bool succeeded,
+ media_perception::State state) {
+ if (!succeeded) {
+ Respond(Error("Failed to getState."));
tbarzic 2017/05/09 01:28:37 return;
Luke Sorenson 2017/05/09 21:05:45 Done.
+ }
+ Respond(OneArgument(state.ToValue()));
}
MediaPerceptionPrivateSetStateFunction ::
@@ -29,7 +46,33 @@ 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());
+ // Check that the desired status is settable.
+ if (params->state.status != media_perception::STATUS_RUNNING &&
+ params->state.status != media_perception::STATUS_SUSPENDED) {
+ return RespondNow(Error("Settable statuses are RUNNING and SUSPENDED."));
tbarzic 2017/05/09 01:28:37 Status can be set only to RUNNING or SUSPEND. Also
Luke Sorenson 2017/05/09 21:05:45 Done.
+ }
+ MediaPerceptionAPIManager* manager =
+ MediaPerceptionAPIManager::Get(browser_context());
+ if (!manager) {
+ return RespondNow(Error("Can't get manager."));
+ }
+ manager->SetState(
+ params->state,
+ base::Bind(&MediaPerceptionPrivateSetStateFunction::SetStateCallback,
+ this));
+ return RespondLater();
+}
+
+void MediaPerceptionPrivateSetStateFunction::SetStateCallback(
+ bool succeeded,
+ media_perception::State state) {
+ if (!succeeded) {
+ Respond(Error("Failed to setState."));
tbarzic 2017/05/09 01:28:37 return;
Luke Sorenson 2017/05/09 21:05:45 Done.
+ }
+ Respond(OneArgument(state.ToValue()));
}
MediaPerceptionPrivateGetDiagnosticsFunction ::
@@ -40,7 +83,24 @@ MediaPerceptionPrivateGetDiagnosticsFunction ::
ExtensionFunction::ResponseAction
MediaPerceptionPrivateGetDiagnosticsFunction::Run() {
- return RespondNow(Error("Not implemented."));
+ MediaPerceptionAPIManager* manager =
+ MediaPerceptionAPIManager::Get(browser_context());
+ if (!manager) {
+ return RespondNow(Error("Can't get manager."));
+ }
+ manager->GetDiagnostics(base::Bind(
+ &MediaPerceptionPrivateGetDiagnosticsFunction::GetDiagnosticsCallback,
+ this));
+ return RespondLater();
+}
+
+void MediaPerceptionPrivateGetDiagnosticsFunction::GetDiagnosticsCallback(
+ bool succeeded,
+ media_perception::Diagnostics diagnostics) {
+ if (!succeeded) {
+ Respond(Error("Failed to getDiagnostics."));
tbarzic 2017/05/09 01:28:37 return
Luke Sorenson 2017/05/09 21:05:45 Done.
+ }
+ Respond(OneArgument(diagnostics.ToValue()));
}
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698