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 |