Index: chromeos/dbus/fake_media_analytics_client.cc |
diff --git a/chromeos/dbus/fake_media_analytics_client.cc b/chromeos/dbus/fake_media_analytics_client.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..79cd314331e2bf3aeb847a9e54f8c325468e455b |
--- /dev/null |
+++ b/chromeos/dbus/fake_media_analytics_client.cc |
@@ -0,0 +1,90 @@ |
+// 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 "chromeos/dbus/fake_media_analytics_client.h" |
+ |
+#include "base/bind.h" |
+#include "base/logging.h" |
+#include "base/threading/thread_task_runner_handle.h" |
+ |
+namespace chromeos { |
+ |
+FakeMediaAnalyticsClient::FakeMediaAnalyticsClient() |
+ : weak_ptr_factory_(this) {} |
+ |
+FakeMediaAnalyticsClient::~FakeMediaAnalyticsClient() {} |
+ |
+// Override these initializations to do nothing. |
+void FakeMediaAnalyticsClient::Init(dbus::Bus* bus) {} |
+void FakeMediaAnalyticsClient::StartMediaAnalytics( |
+ const UpstartCallback& callback) { |
+ callback.Run(true); |
+} |
+ |
+void FakeMediaAnalyticsClient::RestartMediaAnalytics( |
+ const UpstartCallback& callback) { |
+ callback.Run(true); |
+} |
+ |
+void FakeMediaAnalyticsClient::SetMediaPerceptionSignalHandler( |
+ const MediaPerceptionSignalHandler& handler) { |
+ media_perception_signal_handler_ = handler; |
+ // Also fire a fake MediaPerception detection signal. |
+ base::ThreadTaskRunnerHandle::Get()->PostTask( |
+ FROM_HERE, base::Bind(&FakeMediaAnalyticsClient::OnMediaPerception, |
+ weak_ptr_factory_.GetWeakPtr())); |
+} |
+ |
+void FakeMediaAnalyticsClient::State(const uint8_t* bytes, |
+ size_t length, |
+ const StateCallback& callback) { |
+ if (bytes != nullptr && length != 0) { |
+ if (!state_.ParseFromArray(bytes, length)) { |
+ LOG(ERROR) << "Failed to parse State message."; |
+ return; |
+ } |
+ } |
+ base::ThreadTaskRunnerHandle::Get()->PostTask( |
+ FROM_HERE, base::Bind(&FakeMediaAnalyticsClient::OnState, |
+ weak_ptr_factory_.GetWeakPtr(), callback)); |
+} |
+ |
+void FakeMediaAnalyticsClient::OnState(const StateCallback& callback) { |
+ int size = state_.ByteSize(); |
+ uint8_t buffer[size]; |
+ state_.SerializeToArray(&buffer, size); |
+ callback.Run(true, buffer, size); |
+} |
+ |
+void FakeMediaAnalyticsClient::GetDiagnostics( |
+ const DiagnoticsCallback& callback) { |
+ base::ThreadTaskRunnerHandle::Get()->PostTask( |
+ FROM_HERE, base::Bind(&FakeMediaAnalyticsClient::OnGetDiagnostics, |
+ weak_ptr_factory_.GetWeakPtr(), callback)); |
+} |
+ |
+void FakeMediaAnalyticsClient::OnGetDiagnostics( |
+ const DiagnoticsCallback& callback) { |
+ mri::Diagnostics diagnostics; |
+ diagnostics.add_perception_sample()->mutable_frame_perception()->set_frame_id( |
+ 1); |
+ int size = diagnostics.ByteSize(); |
+ uint8_t buffer[size]; |
+ diagnostics.SerializeToArray(&buffer, size); |
+ callback.Run(true, buffer, size); |
+} |
+ |
+void FakeMediaAnalyticsClient::OnMediaPerception() { |
+ if (media_perception_signal_handler_.is_null()) { |
+ return; |
+ } |
+ mri::MediaPerception media_perception; |
+ media_perception.set_timestamp(1); |
+ int size = media_perception.ByteSize(); |
+ uint8_t buffer[size]; |
+ media_perception.SerializeToArray(&buffer, size); |
+ media_perception_signal_handler_.Run(buffer, size); |
+} |
+ |
+} // namespace chromeos |