blob: b9bb36c0a475a483fd1c87088a28992af3678f80 [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 "chrome/browser/chromeos/dbus/dbus_helper.h"
#include "base/path_service.h"
#include "base/system/sys_info.h"
#include "chrome/browser/chromeos/settings/device_settings_service.h"
#include "chrome/common/chrome_paths.h"
#include "chromeos/constants/chromeos_paths.h"
#include "chromeos/cryptohome/system_salt_getter.h"
#include "chromeos/dbus/arc_camera_client.h"
#include "chromeos/dbus/audio/cras_audio_client.h"
#include "chromeos/dbus/auth_policy/auth_policy_client.h"
#include "chromeos/dbus/biod/biod_client.h"
#include "chromeos/dbus/cups_proxy/cups_proxy_client.h"
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/kerberos/kerberos_client.h"
#include "chromeos/dbus/machine_learning/machine_learning_client.h"
#include "chromeos/dbus/media_analytics/media_analytics_client.h"
#include "chromeos/dbus/permission_broker/permission_broker_client.h"
#include "chromeos/dbus/power/power_manager_client.h"
#include "chromeos/dbus/session_manager/session_manager_client.h"
#include "chromeos/dbus/system_clock/system_clock_client.h"
#include "chromeos/dbus/upstart/upstart_client.h"
#include "chromeos/tpm/install_attributes.h"
namespace {
void OverrideStubPathsIfNeeded() {
base::FilePath user_data_dir;
if (!base::SysInfo::IsRunningOnChromeOS() &&
base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir)) {
chromeos::RegisterStubPathOverrides(user_data_dir);
}
}
} // namespace
namespace chromeos {
void InitializeDBus() {
OverrideStubPathsIfNeeded();
SystemSaltGetter::Initialize();
// Initialize DBusThreadManager for the browser.
DBusThreadManager::Initialize(DBusThreadManager::kAll);
// Initialize Chrome dbus clients.
dbus::Bus* bus = DBusThreadManager::Get()->GetSystemBus();
// NOTE: base::Feature is not initialized yet, so any non MultiProcessMash
// dbus client initialization for Ash should be done in Shell::Init.
if (bus) {
ArcCameraClient::Initialize(bus);
AuthPolicyClient::Initialize(bus);
BiodClient::Initialize(bus); // For device::Fingerprint.
CrasAudioClient::Initialize(bus);
CryptohomeClient::Initialize(bus);
CupsProxyClient::Initialize(bus);
KerberosClient::Initialize(bus);
MachineLearningClient::Initialize(bus);
MediaAnalyticsClient::Initialize(bus);
PermissionBrokerClient::Initialize(bus);
PowerManagerClient::Initialize(bus);
SessionManagerClient::Initialize(bus);
SystemClockClient::Initialize(bus);
UpstartClient::Initialize(bus);
} else {
ArcCameraClient::InitializeFake();
AuthPolicyClient::InitializeFake();
BiodClient::InitializeFake(); // For device::Fingerprint.
CrasAudioClient::InitializeFake();
CryptohomeClient::InitializeFake();
CupsProxyClient::InitializeFake();
KerberosClient::InitializeFake();
MachineLearningClient::InitializeFake();
MediaAnalyticsClient::InitializeFake();
PermissionBrokerClient::InitializeFake();
PowerManagerClient::InitializeFake();
SessionManagerClient::InitializeFake();
SystemClockClient::InitializeFake();
UpstartClient::InitializeFake();
}
// Initialize the device settings service so that we'll take actions per
// signals sent from the session manager. This needs to happen before
// g_browser_process initializes BrowserPolicyConnector.
DeviceSettingsService::Initialize();
InstallAttributes::Initialize();
}
void ShutdownDBus() {
UpstartClient::Shutdown();
SystemClockClient::Shutdown();
SessionManagerClient::Shutdown();
PowerManagerClient::Shutdown();
PermissionBrokerClient::Shutdown();
MediaAnalyticsClient::Shutdown();
MachineLearningClient::Shutdown();
KerberosClient::Shutdown();
CupsProxyClient::Shutdown();
CryptohomeClient::Shutdown();
CrasAudioClient::Shutdown();
BiodClient::Shutdown();
AuthPolicyClient::Shutdown();
ArcCameraClient::Shutdown();
DBusThreadManager::Shutdown();
SystemSaltGetter::Shutdown();
}
} // namespace chromeos