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 |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b293c443a6e9fce9b8842e778a986b3270c2c931 |
--- /dev/null |
+++ b/extensions/browser/api/media_perception_private/media_perception_private_api.cc |
@@ -0,0 +1,108 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#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; |
+ |
+namespace extensions { |
+ |
+MediaPerceptionPrivateGetStateFunction :: |
+ MediaPerceptionPrivateGetStateFunction() {} |
+ |
+MediaPerceptionPrivateGetStateFunction :: |
+ ~MediaPerceptionPrivateGetStateFunction() {} |
+ |
+bool MediaPerceptionPrivateGetStateFunction::RunAsync() { |
+ MediaPerceptionAPIManager* manager = |
+ MediaPerceptionAPIManager::Get(browser_context()); |
+ if (!manager) { |
+ SetError("Can't get manager."); |
+ return false; |
+ } |
+ manager->GetState(base::Bind( |
+ &MediaPerceptionPrivateGetStateFunction::GetStateCallback, this)); |
+ return true; |
+} |
+ |
+void MediaPerceptionPrivateGetStateFunction::GetStateCallback( |
+ bool succeeded, |
+ media_perception::State state) { |
+ if (!succeeded) { |
+ SendResponse(false); |
+ return; |
+ } |
+ SetResult(state.ToValue()); |
+ SendResponse(true); |
+} |
+ |
+MediaPerceptionPrivateSetStateFunction :: |
+ MediaPerceptionPrivateSetStateFunction() {} |
+ |
+MediaPerceptionPrivateSetStateFunction :: |
+ ~MediaPerceptionPrivateSetStateFunction() {} |
+ |
+bool MediaPerceptionPrivateSetStateFunction::RunAsync() { |
+ std::unique_ptr<media_perception::SetState::Params> params = |
+ media_perception::SetState::Params::Create(*args_); |
+ EXTENSION_FUNCTION_VALIDATE(params.get()); |
tbarzic
2017/05/05 21:10:41
Check params->state is a settable one here and ret
Luke Sorenson
2017/05/08 19:06:06
Done. In https://codereview.chromium.org/285835300
|
+ // Test triggering an onMediaPerception event. |
+ MediaPerceptionAPIManager* manager = |
+ MediaPerceptionAPIManager::Get(browser_context()); |
+ if (!manager) { |
+ SetError("Can't get manager."); |
+ return false; |
+ } |
+ manager->SetState( |
+ params->state, |
+ base::Bind(&MediaPerceptionPrivateSetStateFunction::SetStateCallback, |
+ this)); |
+ return true; |
+} |
+ |
+void MediaPerceptionPrivateSetStateFunction::SetStateCallback( |
+ bool succeeded, |
+ media_perception::State state) { |
+ if (!succeeded) { |
+ SendResponse(false); |
+ return; |
+ } |
+ SetResult(state.ToValue()); |
+ SendResponse(true); |
+} |
+ |
+MediaPerceptionPrivateGetDiagnosticsFunction :: |
+ MediaPerceptionPrivateGetDiagnosticsFunction() {} |
+ |
+MediaPerceptionPrivateGetDiagnosticsFunction :: |
+ ~MediaPerceptionPrivateGetDiagnosticsFunction() {} |
+ |
+bool MediaPerceptionPrivateGetDiagnosticsFunction::RunAsync() { |
+ MediaPerceptionAPIManager* manager = |
+ MediaPerceptionAPIManager::Get(browser_context()); |
+ if (!manager) { |
+ SetError("Can't get manager."); |
+ return false; |
+ } |
+ manager->GetDiagnostics(base::Bind( |
+ &MediaPerceptionPrivateGetDiagnosticsFunction::GetDiagnosticsCallback, |
+ this)); |
+ return true; |
+} |
+ |
+void MediaPerceptionPrivateGetDiagnosticsFunction::GetDiagnosticsCallback( |
+ bool succeeded, |
+ media_perception::Diagnostics diagnostics) { |
+ if (!succeeded) { |
+ SendResponse(false); |
+ return; |
+ } |
+ SetResult(diagnostics.ToValue()); |
+ SendResponse(true); |
+} |
+ |
+} // namespace extensions |