From: PF4Public@users.noreply.github.com License: BSD Subject: Fix building with use_bluez=false This is a quick and dirty fix for building chromium with use_bluez=false It prevents initialization and usage of Bluetooth by the browser It is not supposed to be applied for use_bluez=true The browser will SEGFAULT upon accessing chrome://bluetooth-internals/ It also breaks WebAuthn: https://github.com/PF4Public/gentoo-overlay/issues/254 --- --- a/headless/lib/browser/headless_browser_main_parts_posix.cc +++ b/headless/lib/browser/headless_browser_main_parts_posix.cc @@ -25,9 +25,8 @@ #include "components/os_crypt/sync/os_crypt.h" #include "headless/public/switches.h" -#if defined(USE_DBUS) -#include "device/bluetooth/dbus/bluez_dbus_manager.h" -#endif +#include "device/bluetooth/bluetooth_adapter_factory.h" +#include "device/bluetooth/dbus/dbus_bluez_manager_wrapper_linux.h" #endif // BUILDFLAG(IS_LINUX) @@ -134,7 +133,7 @@ #if BUILDFLAG(IS_LINUX) #if defined(USE_DBUS) - bluez::BluezDBusManager::Initialize(/*system_bus=*/nullptr); + bluez::DBusBluezManagerWrapperLinux::Initialize(); #endif // Set up crypt config. This needs to be done before anything starts the --- a/chrome/browser/chrome_browser_main_linux.cc +++ b/chrome/browser/chrome_browser_main_linux.cc @@ -35,6 +35,11 @@ #include "chrome/browser/dbus_memory_pressure_evaluator_linux.h" #endif +#if BUILDFLAG(IS_LINUX) +#include "device/bluetooth/bluetooth_adapter_factory.h" +#include "device/bluetooth/dbus/dbus_bluez_manager_wrapper_linux.h" +#endif + #if !BUILDFLAG(IS_CHROMEOS_ASH) #include "base/command_line.h" #include "base/linux_util.h" @@ -59,7 +64,9 @@ #endif // BUILDFLAG(IS_CHROMEOS) #if !BUILDFLAG(IS_CHROMEOS) - bluez::BluezDBusManager::Initialize(nullptr /* system_bus */); + #if BUILDFLAG(IS_LINUX) + bluez::DBusBluezManagerWrapperLinux::Initialize(); + #endif // Set up crypt config. This needs to be done before anything starts the // network service, as the raw encryption key needs to be shared with the @@ -117,7 +124,7 @@ #endif // defined(USE_DBUS) && !BUILDFLAG(IS_CHROMEOS) void ChromeBrowserMainPartsLinux::PostDestroyThreads() { -#if BUILDFLAG(IS_CHROMEOS) +#if BUILDFLAG(IS_LINUX) // No-op; per PostBrowserStart() comment, this is done elsewhere. #else bluez::BluezDBusManager::Shutdown(); --- a/chrome/browser/metrics/bluetooth_metrics_provider.cc +++ b/chrome/browser/metrics/bluetooth_metrics_provider.cc @@ -16,9 +16,7 @@ bool BluetoothMetricsProvider::ProvideHistograms() { base::UmaHistogramEnumeration("Bluetooth.StackName", - floss::features::IsFlossEnabled() - ? BluetoothStackName::kFloss - : BluetoothStackName::kBlueZ); + BluetoothStackName::kBlueZ); return true; } --- a/device/bluetooth/adapter.cc +++ b/device/bluetooth/adapter.cc @@ -115,7 +115,7 @@ adapter_info->system_name = adapter_->GetSystemName(); #endif #if BUILDFLAG(IS_CHROMEOS) - adapter_info->floss = floss::features::IsFlossEnabled(); + adapter_info->floss = false; adapter_info->extended_advertisement_support = adapter_->IsExtendedAdvertisementsAvailable(); #endif