#include "services/device/public/cpp/device_features.h"
#include "services/device/public/cpp/geolocation/buildflags.h"
namespace features {
BASE_FEATURE(kComputePressureBreakCalibrationMitigation,
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kGenericSensorExtraClasses, base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kSerialPortConnected,
#if !BUILDFLAG(IS_ANDROID)
base::FEATURE_ENABLED_BY_DEFAULT
#else
base::FEATURE_DISABLED_BY_DEFAULT
#endif
);
BASE_FEATURE(kWebUsbBlocklist,
"WebUSBBlocklist",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kWebHidAttributeAllowsBackForwardCache,
base::FEATURE_ENABLED_BY_DEFAULT);
#if BUILDFLAG(IS_WIN)
BASE_FEATURE(kWinSystemLocationPermission, base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kHidGetFeatureReportFix, base::FEATURE_ENABLED_BY_DEFAULT);
const base::FeatureParam<int> kWinSystemLocationPermissionPollingParam{
&kWinSystemLocationPermission, "polling_interval_in_ms", 500};
#endif
#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
BASE_FEATURE(kLocationProviderManager, base::FEATURE_ENABLED_BY_DEFAULT);
#else
BASE_FEATURE(kLocationProviderManager, base::FEATURE_DISABLED_BY_DEFAULT);
#endif
#if BUILDFLAG(IS_CHROMEOS)
BASE_FEATURE(kUsbDeviceLinuxOpenCrashKey, base::FEATURE_ENABLED_BY_DEFAULT);
#endif
#if BUILDFLAG(IS_ANDROID)
BASE_FEATURE(kBatteryStatusManagerBroadcastReceiverInBackground,
base::FEATURE_ENABLED_BY_DEFAULT);
#endif
#if !BUILDFLAG(IS_ANDROID)
BASE_FEATURE(kSecurityKeyHidInterfacesAreFido,
base::FEATURE_ENABLED_BY_DEFAULT);
#endif
const base::FeatureParam<device::mojom::LocationProviderManagerMode>::Option
location_provider_manager_mode_options[] = {
{device::mojom::LocationProviderManagerMode::kNetworkOnly,
"NetworkOnly"},
{device::mojom::LocationProviderManagerMode::kPlatformOnly,
"PlatformOnly"},
{device::mojom::LocationProviderManagerMode::kHybridPlatform,
"HybridPlatform"},
{device::mojom::LocationProviderManagerMode::kHybridPlatform2,
"HybridPlatform2"},
};
#if BUILDFLAG(IS_MAC)
const base::FeatureParam<device::mojom::LocationProviderManagerMode>
kLocationProviderManagerParam{
&kLocationProviderManager, "LocationProviderManagerMode",
device::mojom::LocationProviderManagerMode::kHybridPlatform,
&location_provider_manager_mode_options};
#elif BUILDFLAG(IS_WIN)
const base::FeatureParam<device::mojom::LocationProviderManagerMode>
kLocationProviderManagerParam{
&kLocationProviderManager, "LocationProviderManagerMode",
device::mojom::LocationProviderManagerMode::kPlatformOnly,
&location_provider_manager_mode_options};
#else
const base::FeatureParam<device::mojom::LocationProviderManagerMode>
kLocationProviderManagerParam{
&kLocationProviderManager, "LocationProviderManagerMode",
device::mojom::LocationProviderManagerMode::kNetworkOnly,
&location_provider_manager_mode_options};
#endif
bool IsOsLevelGeolocationPermissionSupportEnabled() {
#if BUILDFLAG(IS_WIN)
return base::FeatureList::IsEnabled(features::kWinSystemLocationPermission);
#elif BUILDFLAG(OS_LEVEL_GEOLOCATION_PERMISSION_SUPPORTED)
return true;
#else
return false;
#endif
}
#if BUILDFLAG(IS_ANDROID)
BASE_FEATURE(kAutomaticUsbDetach, base::FEATURE_ENABLED_BY_DEFAULT);
#elif BUILDFLAG(IS_LINUX)
BASE_FEATURE(kAutomaticUsbDetach, base::FEATURE_DISABLED_BY_DEFAULT);
#endif
#if !BUILDFLAG(IS_WIN)
BASE_FEATURE(kSerialSplitDtrAndRts, base::FEATURE_ENABLED_BY_DEFAULT);
#endif
#if BUILDFLAG(IS_MAC)
BASE_FEATURE(kHidReportRequestExactLength, base::FEATURE_ENABLED_BY_DEFAULT);
#endif
}