blob: 8c13a15bba16904eaad0e2d21b6d514ea5bdf9c0 [file] [log] [blame]
// Copyright 2018 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_diagnosticsd_client.h"
#include <utility>
#include "base/bind.h"
#include "base/threading/thread_task_runner_handle.h"
namespace chromeos {
FakeDiagnosticsdClient::FakeDiagnosticsdClient() = default;
FakeDiagnosticsdClient::~FakeDiagnosticsdClient() = default;
void FakeDiagnosticsdClient::Init(dbus::Bus* bus) {}
void FakeDiagnosticsdClient::WaitForServiceToBeAvailable(
WaitForServiceToBeAvailableCallback callback) {
if (wait_for_service_to_be_available_result_) {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(callback),
*wait_for_service_to_be_available_result_
/* service_is_available */));
} else {
pending_wait_for_service_to_be_available_callbacks_.push_back(
std::move(callback));
}
}
void FakeDiagnosticsdClient::BootstrapMojoConnection(
base::ScopedFD fd,
VoidDBusMethodCallback callback) {
if (bootstrap_mojo_connection_result_) {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE,
base::BindOnce(std::move(callback),
*bootstrap_mojo_connection_result_ /* result */));
} else {
pending_bootstrap_mojo_connection_callbacks_.push_back(std::move(callback));
}
}
int FakeDiagnosticsdClient::
wait_for_service_to_be_available_in_flight_call_count() const {
return static_cast<int>(
pending_wait_for_service_to_be_available_callbacks_.size());
}
void FakeDiagnosticsdClient::SetWaitForServiceToBeAvailableResult(
base::Optional<bool> wait_for_service_to_be_available_result) {
wait_for_service_to_be_available_result_ =
wait_for_service_to_be_available_result;
if (!wait_for_service_to_be_available_result_)
return;
std::vector<WaitForServiceToBeAvailableCallback> callbacks;
callbacks.swap(pending_wait_for_service_to_be_available_callbacks_);
for (auto& callback : callbacks)
std::move(callback).Run(*wait_for_service_to_be_available_result_);
}
int FakeDiagnosticsdClient::bootstrap_mojo_connection_in_flight_call_count()
const {
return static_cast<int>(pending_bootstrap_mojo_connection_callbacks_.size());
}
void FakeDiagnosticsdClient::SetBootstrapMojoConnectionResult(
base::Optional<bool> bootstrap_mojo_connection_result) {
bootstrap_mojo_connection_result_ = bootstrap_mojo_connection_result;
if (!bootstrap_mojo_connection_result_)
return;
std::vector<VoidDBusMethodCallback> callbacks;
callbacks.swap(pending_bootstrap_mojo_connection_callbacks_);
for (auto& callback : callbacks)
std::move(callback).Run(*bootstrap_mojo_connection_result_);
}
} // namespace chromeos