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..f9e54188df3457f2aacfd691f5d59832e7777629 |
--- /dev/null |
+++ b/chromeos/dbus/fake_media_analytics_client.cc |
@@ -0,0 +1,103 @@ |
+// 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() |
+ : process_running_(false), weak_ptr_factory_(this) { |
+ current_state_.set_status(mri::State::UNINITIALIZED); |
+} |
+ |
+FakeMediaAnalyticsClient::~FakeMediaAnalyticsClient() {} |
+ |
+void FakeMediaAnalyticsClient::FireMediaPerceptionEvent( |
+ mri::MediaPerception media_perception) { |
+ if (!process_running_) { |
+ LOG(ERROR) << "Fake media analytics process not running."; |
tbarzic
2017/05/11 16:55:55
maybe return false here, so tests can assert the e
Luke Sorenson
2017/05/11 18:16:47
Done.
|
+ return; |
+ } |
+ base::ThreadTaskRunnerHandle::Get()->PostTask( |
+ FROM_HERE, base::Bind(&FakeMediaAnalyticsClient::OnMediaPerception, |
+ weak_ptr_factory_.GetWeakPtr(), media_perception)); |
+} |
+ |
+void FakeMediaAnalyticsClient::SetDiagnostics(mri::Diagnostics diagnostics) { |
+ diagnostics_ = diagnostics; |
+} |
+ |
+void FakeMediaAnalyticsClient::Init(dbus::Bus* bus) {} |
+ |
+void FakeMediaAnalyticsClient::SetMediaPerceptionSignalHandler( |
+ const MediaPerceptionSignalHandler& handler) { |
+ media_perception_signal_handler_ = handler; |
+} |
+ |
+void FakeMediaAnalyticsClient::ClearMediaPerceptionSignalHandler() { |
+ media_perception_signal_handler_.Reset(); |
+} |
+ |
+void FakeMediaAnalyticsClient::GetState(const StateCallback& callback) { |
+ if (!process_running_) { |
+ LOG(ERROR) << "Fake media analytics process not running."; |
tbarzic
2017/05/11 16:55:55
I'd consider removing these logs
Luke Sorenson
2017/05/11 18:16:47
Done.
|
+ callback.Run(false, current_state_); |
+ return; |
+ } |
+ base::ThreadTaskRunnerHandle::Get()->PostTask( |
+ FROM_HERE, base::Bind(&FakeMediaAnalyticsClient::OnState, |
+ weak_ptr_factory_.GetWeakPtr(), callback)); |
+} |
+ |
+void FakeMediaAnalyticsClient::SetState(const mri::State& state, |
+ const StateCallback& callback) { |
+ if (!process_running_) { |
+ LOG(ERROR) << "Fake media analytics process not running."; |
+ callback.Run(false, current_state_); |
+ return; |
+ } |
+ DCHECK(state.has_status()) << "Trying to set state without status."; |
+ DCHECK(state.status() == mri::State::SUSPENDED || |
+ state.status() == mri::State::RUNNING) |
+ << "Trying set state to something other than RUNNING or SUSPENDED."; |
+ current_state_ = state; |
+ base::ThreadTaskRunnerHandle::Get()->PostTask( |
+ FROM_HERE, base::Bind(&FakeMediaAnalyticsClient::OnState, |
+ weak_ptr_factory_.GetWeakPtr(), callback)); |
+} |
+ |
+void FakeMediaAnalyticsClient::OnState(const StateCallback& callback) { |
+ callback.Run(true, current_state_); |
+} |
+ |
+void FakeMediaAnalyticsClient::GetDiagnostics( |
+ const DiagnosticsCallback& callback) { |
+ if (!process_running_) { |
+ LOG(ERROR) << "Fake media analytics process not running."; |
+ callback.Run(false, mri::Diagnostics()); |
+ return; |
+ } |
+ base::ThreadTaskRunnerHandle::Get()->PostTask( |
+ FROM_HERE, base::Bind(&FakeMediaAnalyticsClient::OnGetDiagnostics, |
+ weak_ptr_factory_.GetWeakPtr(), callback)); |
+} |
+ |
+void FakeMediaAnalyticsClient::OnGetDiagnostics( |
+ const DiagnosticsCallback& callback) { |
+ callback.Run(true, diagnostics_); |
+} |
+ |
+void FakeMediaAnalyticsClient::OnMediaPerception( |
+ mri::MediaPerception media_perception) { |
+ if (media_perception_signal_handler_.is_null()) { |
tbarzic
2017/05/11 16:55:55
nit: I prefer one line ifs without {}
Luke Sorenson
2017/05/11 18:16:47
Done.
|
+ return; |
+ } |
+ media_perception_signal_handler_.Run(media_perception); |
+} |
+ |
+} // namespace chromeos |