Commit 61d9c1b6 authored by Steven Bennetts's avatar Steven Bennetts Committed by Commit Bot

Extract HammerdClient from DbusThreadManager

Bug: 938717
Change-Id: Ied6a40e873849bdd91d499fe1a9093752d144763
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1504500
Commit-Queue: Steven Bennetts <stevenjb@chromium.org>
Reviewed-by: default avatarToni Baržić <tbarzic@chromium.org>
Reviewed-by: default avatarJames Cook <jamescook@chromium.org>
Cr-Commit-Position: refs/heads/master@{#638326}
parent 1af146a0
...@@ -62,6 +62,7 @@ include_rules = [ ...@@ -62,6 +62,7 @@ include_rules = [
"+chromeos/dbus/dbus_thread_manager.h", "+chromeos/dbus/dbus_thread_manager.h",
"+chromeos/dbus/fake_power_manager_client.h", "+chromeos/dbus/fake_power_manager_client.h",
"+chromeos/dbus/fake_session_manager_client.h", "+chromeos/dbus/fake_session_manager_client.h",
"+chromeos/dbus/hammerd",
"+chromeos/dbus/power_manager", "+chromeos/dbus/power_manager",
"+chromeos/dbus/power_manager_client.h", "+chromeos/dbus/power_manager_client.h",
"+chromeos/dbus/power_policy_controller.h", "+chromeos/dbus/power_policy_controller.h",
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "base/threading/thread_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h"
#include "chromeos/audio/cras_audio_handler.h" #include "chromeos/audio/cras_audio_handler.h"
#include "chromeos/dbus/dbus_thread_manager.h" #include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/hammerd/hammerd_client.h"
#include "chromeos/dbus/power_policy_controller.h" #include "chromeos/dbus/power_policy_controller.h"
#include "chromeos/dbus/system_clock/system_clock_client.h" #include "chromeos/dbus/system_clock/system_clock_client.h"
#include "chromeos/network/network_connect.h" #include "chromeos/network/network_connect.h"
...@@ -80,15 +81,19 @@ AshService::~AshService() { ...@@ -80,15 +81,19 @@ AshService::~AshService() {
Shell::DeleteInstance(); Shell::DeleteInstance();
statistics_provider_.reset(); statistics_provider_.reset();
// NOTE: PowerStatus is shutdown by Shell.
chromeos::CrasAudioHandler::Shutdown();
chromeos::NetworkConnect::Shutdown(); chromeos::NetworkConnect::Shutdown();
network_connect_delegate_.reset(); network_connect_delegate_.reset();
chromeos::NetworkHandler::Shutdown(); chromeos::NetworkHandler::Shutdown();
device::BluetoothAdapterFactory::Shutdown(); device::BluetoothAdapterFactory::Shutdown();
bluez::BluezDBusManager::Shutdown(); bluez::BluezDBusManager::Shutdown();
chromeos::PowerPolicyController::Shutdown(); chromeos::PowerPolicyController::Shutdown();
chromeos::SystemClockClient::Shutdown();
chromeos::PowerManagerClient::Shutdown(); chromeos::PowerManagerClient::Shutdown();
chromeos::HammerdClient::Shutdown();
chromeos::CrasAudioHandler::Shutdown();
chromeos::DBusThreadManager::Shutdown(); chromeos::DBusThreadManager::Shutdown();
// |gpu_host_| must be completely destroyed before Env as GpuHost depends on // |gpu_host_| must be completely destroyed before Env as GpuHost depends on
...@@ -154,9 +159,13 @@ void AshService::InitializeDBusClients() { ...@@ -154,9 +159,13 @@ void AshService::InitializeDBusClients() {
// dbus::Thread, dbus::Bus and required clients directly. // dbus::Thread, dbus::Bus and required clients directly.
chromeos::DBusThreadManager::Initialize(chromeos::DBusThreadManager::kShared); chromeos::DBusThreadManager::Initialize(chromeos::DBusThreadManager::kShared);
dbus::Bus* bus = chromeos::DBusThreadManager::Get()->GetSystemBus(); dbus::Bus* bus = chromeos::DBusThreadManager::Get()->GetSystemBus();
chromeos::SystemClockClient::Initialize(bus);
// TODO(jamescook): Initialize real audio handler.
chromeos::CrasAudioHandler::InitializeForTesting();
chromeos::HammerdClient::Initialize(bus);
chromeos::PowerManagerClient::Initialize(bus); chromeos::PowerManagerClient::Initialize(bus);
chromeos::SystemClockClient::Initialize(bus);
chromeos::PowerPolicyController::Initialize( chromeos::PowerPolicyController::Initialize(
chromeos::PowerManagerClient::Get()); chromeos::PowerManagerClient::Get());
...@@ -168,9 +177,6 @@ void AshService::InitializeDBusClients() { ...@@ -168,9 +177,6 @@ void AshService::InitializeDBusClients() {
chromeos::NetworkHandler::Initialize(); chromeos::NetworkHandler::Initialize();
network_connect_delegate_ = std::make_unique<NetworkConnectDelegateMus>(); network_connect_delegate_ = std::make_unique<NetworkConnectDelegateMus>();
chromeos::NetworkConnect::Initialize(network_connect_delegate_.get()); chromeos::NetworkConnect::Initialize(network_connect_delegate_.get());
// TODO(jamescook): Initialize real audio handler.
chromeos::CrasAudioHandler::InitializeForTesting();
} }
void AshService::OnStart() { void AshService::OnStart() {
......
...@@ -55,7 +55,8 @@ DetachableBaseHandler::DetachableBaseHandler(Shell* shell) ...@@ -55,7 +55,8 @@ DetachableBaseHandler::DetachableBaseHandler(Shell* shell)
if (shell_) if (shell_)
shell_->AddShellObserver(this); shell_->AddShellObserver(this);
hammerd_observer_.Add(chromeos::DBusThreadManager::Get()->GetHammerdClient()); if (chromeos::HammerdClient::Get()) // May be null in tests
hammerd_observer_.Add(chromeos::HammerdClient::Get());
chromeos::PowerManagerClient* power_manager_client = chromeos::PowerManagerClient* power_manager_client =
chromeos::PowerManagerClient::Get(); chromeos::PowerManagerClient::Get();
power_manager_observer_.Add(power_manager_client); power_manager_observer_.Add(power_manager_client);
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#include "base/observer_list.h" #include "base/observer_list.h"
#include "base/optional.h" #include "base/optional.h"
#include "base/scoped_observer.h" #include "base/scoped_observer.h"
#include "chromeos/dbus/hammerd_client.h" #include "chromeos/dbus/hammerd/hammerd_client.h"
#include "chromeos/dbus/power_manager_client.h" #include "chromeos/dbus/power_manager_client.h"
class PrefRegistrySimple; class PrefRegistrySimple;
......
...@@ -14,9 +14,8 @@ ...@@ -14,9 +14,8 @@
#include "base/run_loop.h" #include "base/run_loop.h"
#include "base/test/scoped_task_environment.h" #include "base/test/scoped_task_environment.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/fake_hammerd_client.h"
#include "chromeos/dbus/fake_power_manager_client.h" #include "chromeos/dbus/fake_power_manager_client.h"
#include "chromeos/dbus/hammerd/fake_hammerd_client.h"
#include "components/account_id/account_id.h" #include "components/account_id/account_id.h"
#include "components/prefs/testing_pref_service.h" #include "components/prefs/testing_pref_service.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
...@@ -86,12 +85,8 @@ class DetachableBaseHandlerTest : public testing::Test { ...@@ -86,12 +85,8 @@ class DetachableBaseHandlerTest : public testing::Test {
// testing::Test: // testing::Test:
void SetUp() override { void SetUp() override {
std::unique_ptr<chromeos::DBusThreadManagerSetter> dbus_setter = chromeos::HammerdClient::Initialize(nullptr /* bus */);
chromeos::DBusThreadManager::GetSetterForTesting(); hammerd_client_ = chromeos::FakeHammerdClient::Get();
auto hammerd_client = std::make_unique<chromeos::FakeHammerdClient>();
hammerd_client_ = hammerd_client.get();
dbus_setter->SetHammerdClient(std::move(hammerd_client));
chromeos::PowerManagerClient::Initialize(); chromeos::PowerManagerClient::Initialize();
chromeos::FakePowerManagerClient::Get()->SetTabletMode( chromeos::FakePowerManagerClient::Get()->SetTabletMode(
...@@ -110,7 +105,7 @@ class DetachableBaseHandlerTest : public testing::Test { ...@@ -110,7 +105,7 @@ class DetachableBaseHandlerTest : public testing::Test {
handler_.reset(); handler_.reset();
hammerd_client_ = nullptr; hammerd_client_ = nullptr;
chromeos::PowerManagerClient::Shutdown(); chromeos::PowerManagerClient::Shutdown();
chromeos::DBusThreadManager::Shutdown(); chromeos::HammerdClient::Shutdown();
} }
protected: protected:
...@@ -142,7 +137,6 @@ class DetachableBaseHandlerTest : public testing::Test { ...@@ -142,7 +137,6 @@ class DetachableBaseHandlerTest : public testing::Test {
handler_->OnLocalStatePrefServiceInitialized(&local_state_); handler_->OnLocalStatePrefServiceInitialized(&local_state_);
} }
// Owned by DBusThreadManager:
chromeos::FakeHammerdClient* hammerd_client_ = nullptr; chromeos::FakeHammerdClient* hammerd_client_ = nullptr;
TestBaseObserver detachable_base_observer_; TestBaseObserver detachable_base_observer_;
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include "base/token.h" #include "base/token.h"
#include "chromeos/audio/cras_audio_handler.h" #include "chromeos/audio/cras_audio_handler.h"
#include "chromeos/dbus/dbus_thread_manager.h" #include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/hammerd/hammerd_client.h"
#include "chromeos/dbus/power_policy_controller.h" #include "chromeos/dbus/power_policy_controller.h"
#include "chromeos/network/network_handler.h" #include "chromeos/network/network_handler.h"
#include "chromeos/system/fake_statistics_provider.h" #include "chromeos/system/fake_statistics_provider.h"
...@@ -160,6 +161,8 @@ void AshTestHelper::SetUp(bool start_session, bool provide_local_state) { ...@@ -160,6 +161,8 @@ void AshTestHelper::SetUp(bool start_session, bool provide_local_state) {
if (!chromeos::DBusThreadManager::IsInitialized()) { if (!chromeos::DBusThreadManager::IsInitialized()) {
chromeos::DBusThreadManager::Initialize( chromeos::DBusThreadManager::Initialize(
chromeos::DBusThreadManager::kShared); chromeos::DBusThreadManager::kShared);
chromeos::HammerdClient::Initialize(
chromeos::DBusThreadManager::Get()->GetSystemBus());
dbus_thread_manager_initialized_ = true; dbus_thread_manager_initialized_ = true;
} }
...@@ -272,6 +275,7 @@ void AshTestHelper::TearDown() { ...@@ -272,6 +275,7 @@ void AshTestHelper::TearDown() {
} }
if (dbus_thread_manager_initialized_) { if (dbus_thread_manager_initialized_) {
chromeos::HammerdClient::Shutdown();
chromeos::DBusThreadManager::Shutdown(); chromeos::DBusThreadManager::Shutdown();
dbus_thread_manager_initialized_ = false; dbus_thread_manager_initialized_ = false;
} }
......
...@@ -7,9 +7,11 @@ ...@@ -7,9 +7,11 @@
#include "chrome/browser/chromeos/settings/device_settings_service.h" #include "chrome/browser/chromeos/settings/device_settings_service.h"
#include "chromeos/cryptohome/system_salt_getter.h" #include "chromeos/cryptohome/system_salt_getter.h"
#include "chromeos/dbus/dbus_thread_manager.h" #include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/hammerd/hammerd_client.h"
#include "chromeos/dbus/power_manager_client.h" #include "chromeos/dbus/power_manager_client.h"
#include "chromeos/dbus/system_clock/system_clock_client.h" #include "chromeos/dbus/system_clock/system_clock_client.h"
#include "chromeos/tpm/install_attributes.h" #include "chromeos/tpm/install_attributes.h"
#include "ui/base/ui_base_features.h"
namespace chromeos { namespace chromeos {
...@@ -21,6 +23,13 @@ void InitializeDBus() { ...@@ -21,6 +23,13 @@ void InitializeDBus() {
// Initialize Chrome dbus clients. // Initialize Chrome dbus clients.
dbus::Bus* bus = DBusThreadManager::Get()->GetSystemBus(); dbus::Bus* bus = DBusThreadManager::Get()->GetSystemBus();
// Features only needed in Ash. Initialize them here for non MultiProcessMash
// to limit the number of places where dbus handlers are initialized. For
// MultiProcessMash they are initialized in AshService::InitializeDBusClients.
if (!::features::IsMultiProcessMash())
chromeos::HammerdClient::Initialize(bus);
PowerManagerClient::Initialize(bus); PowerManagerClient::Initialize(bus);
SystemClockClient::Initialize(bus); SystemClockClient::Initialize(bus);
...@@ -32,9 +41,13 @@ void InitializeDBus() { ...@@ -32,9 +41,13 @@ void InitializeDBus() {
} }
void ShutdownDBus() { void ShutdownDBus() {
// NOTE: These must only be called if InitializeDBus() was called.
PowerManagerClient::Shutdown();
SystemClockClient::Shutdown(); SystemClockClient::Shutdown();
PowerManagerClient::Shutdown();
// See comment in InitializeDBus() for MultiProcessMash behavior.
if (!::features::IsMultiProcessMash())
chromeos::HammerdClient::Shutdown();
DBusThreadManager::Shutdown(); DBusThreadManager::Shutdown();
SystemSaltGetter::Shutdown(); SystemSaltGetter::Shutdown();
} }
......
...@@ -119,8 +119,6 @@ component("dbus") { ...@@ -119,8 +119,6 @@ component("dbus") {
"fake_easy_unlock_client.h", "fake_easy_unlock_client.h",
"fake_gsm_sms_client.cc", "fake_gsm_sms_client.cc",
"fake_gsm_sms_client.h", "fake_gsm_sms_client.h",
"fake_hammerd_client.cc",
"fake_hammerd_client.h",
"fake_image_burner_client.cc", "fake_image_burner_client.cc",
"fake_image_burner_client.h", "fake_image_burner_client.h",
"fake_image_loader_client.cc", "fake_image_loader_client.cc",
...@@ -169,8 +167,10 @@ component("dbus") { ...@@ -169,8 +167,10 @@ component("dbus") {
"fake_virtual_file_provider_client.h", "fake_virtual_file_provider_client.h",
"gsm_sms_client.cc", "gsm_sms_client.cc",
"gsm_sms_client.h", "gsm_sms_client.h",
"hammerd_client.cc", "hammerd/fake_hammerd_client.cc",
"hammerd_client.h", "hammerd/fake_hammerd_client.h",
"hammerd/hammerd_client.cc",
"hammerd/hammerd_client.h",
"image_burner_client.cc", "image_burner_client.cc",
"image_burner_client.h", "image_burner_client.h",
"image_loader_client.cc", "image_loader_client.cc",
......
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
#include "chromeos/dbus/fake_cras_audio_client.h" #include "chromeos/dbus/fake_cras_audio_client.h"
#include "chromeos/dbus/fake_cryptohome_client.h" #include "chromeos/dbus/fake_cryptohome_client.h"
#include "chromeos/dbus/fake_gsm_sms_client.h" #include "chromeos/dbus/fake_gsm_sms_client.h"
#include "chromeos/dbus/fake_hammerd_client.h"
#include "chromeos/dbus/fake_modem_messaging_client.h" #include "chromeos/dbus/fake_modem_messaging_client.h"
#include "chromeos/dbus/fake_permission_broker_client.h" #include "chromeos/dbus/fake_permission_broker_client.h"
#include "chromeos/dbus/fake_shill_device_client.h" #include "chromeos/dbus/fake_shill_device_client.h"
...@@ -27,7 +26,6 @@ ...@@ -27,7 +26,6 @@
#include "chromeos/dbus/fake_sms_client.h" #include "chromeos/dbus/fake_sms_client.h"
#include "chromeos/dbus/fake_upstart_client.h" #include "chromeos/dbus/fake_upstart_client.h"
#include "chromeos/dbus/gsm_sms_client.h" #include "chromeos/dbus/gsm_sms_client.h"
#include "chromeos/dbus/hammerd_client.h"
#include "chromeos/dbus/machine_learning_client.h" #include "chromeos/dbus/machine_learning_client.h"
#include "chromeos/dbus/modem_messaging_client.h" #include "chromeos/dbus/modem_messaging_client.h"
#include "chromeos/dbus/permission_broker_client.h" #include "chromeos/dbus/permission_broker_client.h"
...@@ -91,12 +89,6 @@ DBusClientsCommon::DBusClientsCommon(bool use_real_clients) { ...@@ -91,12 +89,6 @@ DBusClientsCommon::DBusClientsCommon(bool use_real_clients) {
gsm_sms_client_.reset(gsm_sms_client); gsm_sms_client_.reset(gsm_sms_client);
} }
if (use_real_clients) {
hammerd_client_ = HammerdClient::Create();
} else {
hammerd_client_ = std::make_unique<FakeHammerdClient>();
}
machine_learning_client_ = MachineLearningClient::Create(client_impl_type); machine_learning_client_ = MachineLearningClient::Create(client_impl_type);
if (use_real_clients) if (use_real_clients)
...@@ -134,7 +126,6 @@ void DBusClientsCommon::Initialize(dbus::Bus* system_bus) { ...@@ -134,7 +126,6 @@ void DBusClientsCommon::Initialize(dbus::Bus* system_bus) {
cras_audio_client_->Init(system_bus); cras_audio_client_->Init(system_bus);
cryptohome_client_->Init(system_bus); cryptohome_client_->Init(system_bus);
gsm_sms_client_->Init(system_bus); gsm_sms_client_->Init(system_bus);
hammerd_client_->Init(system_bus);
machine_learning_client_->Init(system_bus); machine_learning_client_->Init(system_bus);
modem_messaging_client_->Init(system_bus); modem_messaging_client_->Init(system_bus);
permission_broker_client_->Init(system_bus); permission_broker_client_->Init(system_bus);
......
...@@ -21,7 +21,6 @@ class CecServiceClient; ...@@ -21,7 +21,6 @@ class CecServiceClient;
class CrasAudioClient; class CrasAudioClient;
class CryptohomeClient; class CryptohomeClient;
class GsmSMSClient; class GsmSMSClient;
class HammerdClient;
class MachineLearningClient; class MachineLearningClient;
class ModemMessagingClient; class ModemMessagingClient;
class PermissionBrokerClient; class PermissionBrokerClient;
...@@ -56,7 +55,6 @@ class COMPONENT_EXPORT(CHROMEOS_DBUS) DBusClientsCommon { ...@@ -56,7 +55,6 @@ class COMPONENT_EXPORT(CHROMEOS_DBUS) DBusClientsCommon {
std::unique_ptr<CrasAudioClient> cras_audio_client_; std::unique_ptr<CrasAudioClient> cras_audio_client_;
std::unique_ptr<CryptohomeClient> cryptohome_client_; std::unique_ptr<CryptohomeClient> cryptohome_client_;
std::unique_ptr<GsmSMSClient> gsm_sms_client_; std::unique_ptr<GsmSMSClient> gsm_sms_client_;
std::unique_ptr<HammerdClient> hammerd_client_;
std::unique_ptr<MachineLearningClient> machine_learning_client_; std::unique_ptr<MachineLearningClient> machine_learning_client_;
std::unique_ptr<ModemMessagingClient> modem_messaging_client_; std::unique_ptr<ModemMessagingClient> modem_messaging_client_;
std::unique_ptr<ShillDeviceClient> shill_device_client_; std::unique_ptr<ShillDeviceClient> shill_device_client_;
......
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
#include "chromeos/dbus/debug_daemon_client.h" #include "chromeos/dbus/debug_daemon_client.h"
#include "chromeos/dbus/easy_unlock_client.h" #include "chromeos/dbus/easy_unlock_client.h"
#include "chromeos/dbus/gsm_sms_client.h" #include "chromeos/dbus/gsm_sms_client.h"
#include "chromeos/dbus/hammerd_client.h"
#include "chromeos/dbus/image_burner_client.h" #include "chromeos/dbus/image_burner_client.h"
#include "chromeos/dbus/image_loader_client.h" #include "chromeos/dbus/image_loader_client.h"
#include "chromeos/dbus/lorgnette_manager_client.h" #include "chromeos/dbus/lorgnette_manager_client.h"
...@@ -215,10 +214,6 @@ GsmSMSClient* DBusThreadManager::GetGsmSMSClient() { ...@@ -215,10 +214,6 @@ GsmSMSClient* DBusThreadManager::GetGsmSMSClient() {
return clients_common_->gsm_sms_client_.get(); return clients_common_->gsm_sms_client_.get();
} }
HammerdClient* DBusThreadManager::GetHammerdClient() {
return clients_common_->hammerd_client_.get();
}
ImageBurnerClient* DBusThreadManager::GetImageBurnerClient() { ImageBurnerClient* DBusThreadManager::GetImageBurnerClient() {
return clients_browser_ ? clients_browser_->image_burner_client_.get() return clients_browser_ ? clients_browser_->image_burner_client_.get()
: nullptr; : nullptr;
...@@ -419,12 +414,6 @@ void DBusThreadManagerSetter::SetDebugDaemonClient( ...@@ -419,12 +414,6 @@ void DBusThreadManagerSetter::SetDebugDaemonClient(
std::move(client); std::move(client);
} }
void DBusThreadManagerSetter::SetHammerdClient(
std::unique_ptr<HammerdClient> client) {
DBusThreadManager::Get()->clients_common_->hammerd_client_ =
std::move(client);
}
void DBusThreadManagerSetter::SetRuntimeProbeClient( void DBusThreadManagerSetter::SetRuntimeProbeClient(
std::unique_ptr<RuntimeProbeClient> client) { std::unique_ptr<RuntimeProbeClient> client) {
DBusThreadManager::Get()->clients_browser_->runtime_probe_client_ = DBusThreadManager::Get()->clients_browser_->runtime_probe_client_ =
......
...@@ -43,7 +43,6 @@ class DebugDaemonClient; ...@@ -43,7 +43,6 @@ class DebugDaemonClient;
class DiagnosticsdClient; class DiagnosticsdClient;
class EasyUnlockClient; class EasyUnlockClient;
class GsmSMSClient; class GsmSMSClient;
class HammerdClient;
class ImageBurnerClient; class ImageBurnerClient;
class ImageLoaderClient; class ImageLoaderClient;
class LorgnetteManagerClient; class LorgnetteManagerClient;
...@@ -150,7 +149,6 @@ class COMPONENT_EXPORT(CHROMEOS_DBUS) DBusThreadManager { ...@@ -150,7 +149,6 @@ class COMPONENT_EXPORT(CHROMEOS_DBUS) DBusThreadManager {
DiagnosticsdClient* GetDiagnosticsdClient(); DiagnosticsdClient* GetDiagnosticsdClient();
EasyUnlockClient* GetEasyUnlockClient(); EasyUnlockClient* GetEasyUnlockClient();
GsmSMSClient* GetGsmSMSClient(); GsmSMSClient* GetGsmSMSClient();
HammerdClient* GetHammerdClient();
ImageBurnerClient* GetImageBurnerClient(); ImageBurnerClient* GetImageBurnerClient();
ImageLoaderClient* GetImageLoaderClient(); ImageLoaderClient* GetImageLoaderClient();
LorgnetteManagerClient* GetLorgnetteManagerClient(); LorgnetteManagerClient* GetLorgnetteManagerClient();
...@@ -214,7 +212,6 @@ class COMPONENT_EXPORT(CHROMEOS_DBUS) DBusThreadManagerSetter { ...@@ -214,7 +212,6 @@ class COMPONENT_EXPORT(CHROMEOS_DBUS) DBusThreadManagerSetter {
void SetCrosDisksClient(std::unique_ptr<CrosDisksClient> client); void SetCrosDisksClient(std::unique_ptr<CrosDisksClient> client);
void SetCryptohomeClient(std::unique_ptr<CryptohomeClient> client); void SetCryptohomeClient(std::unique_ptr<CryptohomeClient> client);
void SetDebugDaemonClient(std::unique_ptr<DebugDaemonClient> client); void SetDebugDaemonClient(std::unique_ptr<DebugDaemonClient> client);
void SetHammerdClient(std::unique_ptr<HammerdClient> client);
void SetImageBurnerClient(std::unique_ptr<ImageBurnerClient> client); void SetImageBurnerClient(std::unique_ptr<ImageBurnerClient> client);
void SetImageLoaderClient(std::unique_ptr<ImageLoaderClient> client); void SetImageLoaderClient(std::unique_ptr<ImageLoaderClient> client);
void SetMediaAnalyticsClient(std::unique_ptr<MediaAnalyticsClient> client); void SetMediaAnalyticsClient(std::unique_ptr<MediaAnalyticsClient> client);
......
...@@ -2,15 +2,29 @@ ...@@ -2,15 +2,29 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chromeos/dbus/fake_hammerd_client.h" #include "chromeos/dbus/hammerd/fake_hammerd_client.h"
namespace chromeos { namespace chromeos {
FakeHammerdClient::FakeHammerdClient() = default; namespace {
FakeHammerdClient* g_instance = nullptr;
}
FakeHammerdClient::~FakeHammerdClient() = default; FakeHammerdClient::FakeHammerdClient() {
CHECK(!g_instance);
g_instance = this;
}
void FakeHammerdClient::Init(dbus::Bus* bus) {} FakeHammerdClient::~FakeHammerdClient() {
CHECK_EQ(g_instance, this);
g_instance = nullptr;
}
// static
FakeHammerdClient* FakeHammerdClient::Get() {
CHECK(g_instance);
return g_instance;
}
void FakeHammerdClient::AddObserver(Observer* observer) { void FakeHammerdClient::AddObserver(Observer* observer) {
observers_.AddObserver(observer); observers_.AddObserver(observer);
......
...@@ -2,15 +2,15 @@ ...@@ -2,15 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROMEOS_DBUS_FAKE_HAMMERD_CLIENT_H_ #ifndef CHROMEOS_DBUS_HAMMERD_FAKE_HAMMERD_CLIENT_H_
#define CHROMEOS_DBUS_FAKE_HAMMERD_CLIENT_H_ #define CHROMEOS_DBUS_HAMMERD_FAKE_HAMMERD_CLIENT_H_
#include <vector> #include <vector>
#include "base/component_export.h" #include "base/component_export.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/observer_list.h" #include "base/observer_list.h"
#include "chromeos/dbus/hammerd_client.h" #include "chromeos/dbus/hammerd/hammerd_client.h"
namespace chromeos { namespace chromeos {
...@@ -19,8 +19,10 @@ class COMPONENT_EXPORT(CHROMEOS_DBUS) FakeHammerdClient : public HammerdClient { ...@@ -19,8 +19,10 @@ class COMPONENT_EXPORT(CHROMEOS_DBUS) FakeHammerdClient : public HammerdClient {
FakeHammerdClient(); FakeHammerdClient();
~FakeHammerdClient() override; ~FakeHammerdClient() override;
// Checks that a FakeHammerdClient instance was initialized and returns it.
static FakeHammerdClient* Get();
// HammerdClient: // HammerdClient:
void Init(dbus::Bus* bus) override;
void AddObserver(Observer* observer) override; void AddObserver(Observer* observer) override;
void RemoveObserver(Observer* observer) override; void RemoveObserver(Observer* observer) override;
...@@ -41,4 +43,4 @@ class COMPONENT_EXPORT(CHROMEOS_DBUS) FakeHammerdClient : public HammerdClient { ...@@ -41,4 +43,4 @@ class COMPONENT_EXPORT(CHROMEOS_DBUS) FakeHammerdClient : public HammerdClient {
} // namespace chromeos } // namespace chromeos
#endif // CHROMEOS_DBUS_FAKE_HAMMERD_CLIENT_H_ #endif // CHROMEOS_DBUS_HAMMERD_FAKE_HAMMERD_CLIENT_H_
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chromeos/dbus/hammerd_client.h" #include "chromeos/dbus/hammerd/hammerd_client.h"
#include <string> #include <string>
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "base/observer_list.h" #include "base/observer_list.h"
#include "chromeos/dbus/hammerd/fake_hammerd_client.h"
#include "dbus/bus.h" #include "dbus/bus.h"
#include "dbus/message.h" #include "dbus/message.h"
#include "dbus/object_path.h" #include "dbus/object_path.h"
...@@ -21,13 +22,15 @@ namespace chromeos { ...@@ -21,13 +22,15 @@ namespace chromeos {
namespace { namespace {
HammerdClient* g_instance = nullptr;
class HammerdClientImpl : public HammerdClient { class HammerdClientImpl : public HammerdClient {
public: public:
HammerdClientImpl() = default; HammerdClientImpl() = default;
~HammerdClientImpl() override = default; ~HammerdClientImpl() override = default;
// HammerdClient: // HammerdClient:
void Init(dbus::Bus* bus) override { void Init(dbus::Bus* bus) {
bus_proxy_ = bus_proxy_ =
bus->GetObjectProxy(hammerd::kHammerdServiceName, bus->GetObjectProxy(hammerd::kHammerdServiceName,
dbus::ObjectPath(hammerd::kHammerdServicePath)); dbus::ObjectPath(hammerd::kHammerdServicePath));
...@@ -156,9 +159,32 @@ class HammerdClientImpl : public HammerdClient { ...@@ -156,9 +159,32 @@ class HammerdClientImpl : public HammerdClient {
} // namespace } // namespace
HammerdClient::HammerdClient() = default;
HammerdClient::~HammerdClient() = default;
// static
void HammerdClient::Initialize(dbus::Bus* bus) {
CHECK(!g_instance);
if (bus) {
auto* instance = new HammerdClientImpl();
instance->Init(bus);
g_instance = instance;
} else {
g_instance = new FakeHammerdClient();
}
}
// static
void HammerdClient::Shutdown() {
CHECK(g_instance);
delete g_instance;
g_instance = nullptr;
}
// static // static
std::unique_ptr<HammerdClient> HammerdClient::Create() { HammerdClient* HammerdClient::Get() {
return std::make_unique<HammerdClientImpl>(); return g_instance;
} }
} // namespace chromeos } // namespace chromeos
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROMEOS_DBUS_HAMMERD_CLIENT_H_ #ifndef CHROMEOS_DBUS_HAMMERD_HAMMERD_CLIENT_H_
#define CHROMEOS_DBUS_HAMMERD_CLIENT_H_ #define CHROMEOS_DBUS_HAMMERD_HAMMERD_CLIENT_H_
#include <stdint.h> #include <stdint.h>
...@@ -23,7 +23,7 @@ namespace chromeos { ...@@ -23,7 +23,7 @@ namespace chromeos {
// * the connected base pairing events. // * the connected base pairing events.
// The client forwards the received signals to its observers (together with any // The client forwards the received signals to its observers (together with any
// data extracted from the signal object). // data extracted from the signal object).
class COMPONENT_EXPORT(CHROMEOS_DBUS) HammerdClient : public DBusClient { class COMPONENT_EXPORT(CHROMEOS_DBUS) HammerdClient {
public: public:
class Observer { class Observer {
public: public:
...@@ -54,14 +54,19 @@ class COMPONENT_EXPORT(CHROMEOS_DBUS) HammerdClient : public DBusClient { ...@@ -54,14 +54,19 @@ class COMPONENT_EXPORT(CHROMEOS_DBUS) HammerdClient : public DBusClient {
virtual void InvalidBaseConnected() = 0; virtual void InvalidBaseConnected() = 0;
}; };
~HammerdClient() override = default; HammerdClient();
virtual ~HammerdClient();
// Creates and initializes the global instance. If |bus| is null, a
// FakeHammerdClient instance will be created.
static void Initialize(dbus::Bus* bus);
static void Shutdown();
static HammerdClient* Get();
virtual void AddObserver(Observer* observer) = 0; virtual void AddObserver(Observer* observer) = 0;
virtual void RemoveObserver(Observer* observer) = 0; virtual void RemoveObserver(Observer* observer) = 0;
static std::unique_ptr<HammerdClient> Create();
}; };
} // namespace chromeos } // namespace chromeos
#endif // CHROMEOS_DBUS_HAMMERD_CLIENT_H_ #endif // CHROMEOS_DBUS_HAMMERD_HAMMERD_CLIENT_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment