blob: ed450938a3ad6e801ec52297442b6d45b04bbac5 [file] [log] [blame]
// Copyright 2014 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/dbus_clients_common.h"
#include "base/command_line.h"
#include "chromeos/dbus/biod/biod_client.h"
#include "chromeos/dbus/cec_service_client.h"
#include "chromeos/dbus/constants/dbus_switches.h"
#include "chromeos/dbus/cras_audio_client.h"
#include "chromeos/dbus/cryptohome_client.h"
#include "chromeos/dbus/dbus_client_implementation_type.h"
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/fake_cras_audio_client.h"
#include "chromeos/dbus/fake_cryptohome_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_permission_broker_client.h"
#include "chromeos/dbus/fake_shill_device_client.h"
#include "chromeos/dbus/fake_shill_ipconfig_client.h"
#include "chromeos/dbus/fake_shill_manager_client.h"
#include "chromeos/dbus/fake_shill_profile_client.h"
#include "chromeos/dbus/fake_shill_service_client.h"
#include "chromeos/dbus/fake_shill_third_party_vpn_driver_client.h"
#include "chromeos/dbus/fake_sms_client.h"
#include "chromeos/dbus/fake_system_clock_client.h"
#include "chromeos/dbus/fake_upstart_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/modem_messaging_client.h"
#include "chromeos/dbus/permission_broker_client.h"
#include "chromeos/dbus/power_manager_client.h"
#include "chromeos/dbus/power_policy_controller.h"
#include "chromeos/dbus/session_manager_client.h"
#include "chromeos/dbus/shill_device_client.h"
#include "chromeos/dbus/shill_ipconfig_client.h"
#include "chromeos/dbus/shill_manager_client.h"
#include "chromeos/dbus/shill_profile_client.h"
#include "chromeos/dbus/shill_service_client.h"
#include "chromeos/dbus/shill_third_party_vpn_driver_client.h"
#include "chromeos/dbus/sms_client.h"
#include "chromeos/dbus/system_clock_client.h"
#include "chromeos/dbus/update_engine_client.h"
#include "chromeos/dbus/upstart_client.h"
namespace chromeos {
DBusClientsCommon::DBusClientsCommon(bool use_real_clients) {
const DBusClientImplementationType client_impl_type =
use_real_clients ? REAL_DBUS_CLIENT_IMPLEMENTATION
: FAKE_DBUS_CLIENT_IMPLEMENTATION;
biod_client_.reset(BiodClient::Create(client_impl_type));
cec_service_client_ = CecServiceClient::Create(client_impl_type);
if (use_real_clients)
cras_audio_client_.reset(CrasAudioClient::Create());
else
cras_audio_client_.reset(new FakeCrasAudioClient);
if (use_real_clients)
cryptohome_client_.reset(CryptohomeClient::Create());
else
cryptohome_client_.reset(new FakeCryptohomeClient);
if (use_real_clients) {
shill_manager_client_.reset(ShillManagerClient::Create());
shill_device_client_.reset(ShillDeviceClient::Create());
shill_ipconfig_client_.reset(ShillIPConfigClient::Create());
shill_service_client_.reset(ShillServiceClient::Create());
shill_profile_client_.reset(ShillProfileClient::Create());
shill_third_party_vpn_driver_client_.reset(
ShillThirdPartyVpnDriverClient::Create());
} else {
shill_manager_client_.reset(new FakeShillManagerClient);
shill_device_client_.reset(new FakeShillDeviceClient);
shill_ipconfig_client_.reset(new FakeShillIPConfigClient);
shill_service_client_.reset(new FakeShillServiceClient);
shill_profile_client_.reset(new FakeShillProfileClient);
shill_third_party_vpn_driver_client_.reset(
new FakeShillThirdPartyVpnDriverClient);
}
if (use_real_clients) {
gsm_sms_client_.reset(GsmSMSClient::Create());
} else {
FakeGsmSMSClient* gsm_sms_client = new FakeGsmSMSClient();
gsm_sms_client->set_sms_test_message_switch_present(
base::CommandLine::ForCurrentProcess()->HasSwitch(
chromeos::switches::kSmsTestMessages));
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);
if (use_real_clients)
modem_messaging_client_.reset(ModemMessagingClient::Create());
else
modem_messaging_client_.reset(new FakeModemMessagingClient);
if (use_real_clients)
permission_broker_client_.reset(PermissionBrokerClient::Create());
else
permission_broker_client_.reset(new FakePermissionBrokerClient);
power_manager_client_.reset(PowerManagerClient::Create(client_impl_type));
session_manager_client_.reset(SessionManagerClient::Create(client_impl_type));
if (use_real_clients)
sms_client_.reset(SMSClient::Create());
else
sms_client_.reset(new FakeSMSClient);
if (use_real_clients)
system_clock_client_.reset(SystemClockClient::Create());
else
system_clock_client_.reset(new FakeSystemClockClient);
update_engine_client_.reset(UpdateEngineClient::Create(client_impl_type));
if (use_real_clients)
upstart_client_.reset(UpstartClient::Create());
else
upstart_client_.reset(new FakeUpstartClient);
}
DBusClientsCommon::~DBusClientsCommon() = default;
void DBusClientsCommon::Initialize(dbus::Bus* system_bus) {
DCHECK(DBusThreadManager::IsInitialized());
biod_client_->Init(system_bus);
cec_service_client_->Init(system_bus);
cras_audio_client_->Init(system_bus);
cryptohome_client_->Init(system_bus);
gsm_sms_client_->Init(system_bus);
hammerd_client_->Init(system_bus);
machine_learning_client_->Init(system_bus);
modem_messaging_client_->Init(system_bus);
permission_broker_client_->Init(system_bus);
power_manager_client_->Init(system_bus);
session_manager_client_->Init(system_bus);
shill_device_client_->Init(system_bus);
shill_ipconfig_client_->Init(system_bus);
shill_manager_client_->Init(system_bus);
shill_service_client_->Init(system_bus);
shill_profile_client_->Init(system_bus);
shill_third_party_vpn_driver_client_->Init(system_bus);
sms_client_->Init(system_bus);
system_clock_client_->Init(system_bus);
update_engine_client_->Init(system_bus);
upstart_client_->Init(system_bus);
ShillManagerClient::TestInterface* manager =
shill_manager_client_->GetTestInterface();
if (manager)
manager->SetupDefaultEnvironment();
}
} // namespace chromeos