blob: 32bac438832d13732d0237220f61982649776826 [file] [log] [blame]
// Copyright 2021 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/lacros/dbus/lacros_dbus_helper.h"
#include "base/feature_list.h"
#include "chromeos/dbus/init/initialize_dbus_client.h"
#include "chromeos/dbus/missive/missive_client.h"
#include "chromeos/dbus/permission_broker/permission_broker_client.h"
#include "chromeos/dbus/tpm_manager/tpm_manager_client.h"
#include "chromeos/dbus/u2f/u2f_client.h"
#include "chromeos/lacros/dbus/lacros_dbus_thread_manager.h"
#include "device/bluetooth/dbus/bluez_dbus_manager.h"
#include "device/bluetooth/floss/floss_dbus_manager.h"
#include "device/bluetooth/floss/floss_features.h"
namespace chromeos {
void LacrosInitializeDBus() {
// Unlike Ash, Lacros has no services that need paths, and therefore needs
// not override paths like Ash does.
// Initialize LacrosDBusThreadManager for the browser.
LacrosDBusThreadManager::Initialize();
// Initialize Chrome D-Bus clients.
dbus::Bus* bus = LacrosDBusThreadManager::Get()->GetSystemBus();
InitializeDBusClient<PermissionBrokerClient>(bus);
InitializeDBusClient<MissiveClient>(bus);
InitializeDBusClient<TpmManagerClient>(bus);
InitializeDBusClient<U2FClient>(bus);
}
void LacrosInitializeFeatureListDependentDBus() {
dbus::Bus* bus = LacrosDBusThreadManager::Get()->GetSystemBus();
if (base::FeatureList::IsEnabled(floss::features::kFlossEnabled)) {
InitializeDBusClient<floss::FlossDBusManager>(bus);
} else {
InitializeDBusClient<bluez::BluezDBusManager>(bus);
}
}
void LacrosShutdownDBus() {
// Shut down D-Bus clients in reverse order of initialization.
if (base::FeatureList::IsEnabled(floss::features::kFlossEnabled)) {
floss::FlossDBusManager::Shutdown();
} else {
bluez::BluezDBusManager::Shutdown();
}
MissiveClient::Shutdown();
PermissionBrokerClient::Shutdown();
LacrosDBusThreadManager::Shutdown();
}
} // namespace chromeos