#include <memory>
#include <utility>
#include <vector>
#include "base/containers/flat_set.h"
#include "chrome/browser/bluetooth/bluetooth_chooser_context_factory.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/test/base/testing_profile.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "components/permissions/contexts/bluetooth_chooser_context.h"
#include "components/permissions/object_permission_context_base.h"
#include "components/permissions/test/object_permission_context_base_mock_permission_observer.h"
#include "content/public/test/browser_task_environment.h"
#include "device/bluetooth/public/cpp/bluetooth_uuid.h"
#include "device/bluetooth/test/mock_bluetooth_adapter.h"
#include "device/bluetooth/test/mock_bluetooth_device.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/mojom/bluetooth/web_bluetooth.mojom.h"
#include "url/gurl.h"
#include "url/origin.h"
WebBluetoothRequestDeviceOptionsPtr;
BluetoothUUID;
BluetoothUUIDHash;
BluetoothChooserContext;
NiceMock;
namespace {
constexpr char kDeviceAddressKey[] = …;
constexpr char kDeviceNameKey[] = …;
constexpr char kServicesKey[] = …;
constexpr char kManufacturerDataKey[] = …;
constexpr char kWebBluetoothDeviceIdKey[] = …;
const uint32_t kGamepadBluetoothClass = …;
constexpr char kDeviceAddress1[] = …;
constexpr char kDeviceAddress2[] = …;
constexpr char kGlucoseUUIDString[] = …;
constexpr char kHeartRateUUIDString[] = …;
constexpr char kBatteryServiceUUIDString[] = …;
constexpr char kBloodPressureUUIDString[] = …;
constexpr char kCyclingPowerUUIDString[] = …;
const BluetoothUUID kGlucoseUUID(kGlucoseUUIDString);
const BluetoothUUID kHeartRateUUID(kHeartRateUUIDString);
const BluetoothUUID kBatteryServiceUUID(kBatteryServiceUUIDString);
const BluetoothUUID kBloodPressureUUID(kBloodPressureUUIDString);
const BluetoothUUID kCyclingPowerUUID(kCyclingPowerUUIDString);
WebBluetoothRequestDeviceOptionsPtr CreateOptionsForServicesAndManufacturerData(
const std::vector<BluetoothUUID>& filter_services,
const std::vector<BluetoothUUID>& optional_services,
const std::vector<uint16_t>& optional_manufacturer_data) { … }
WebBluetoothRequestDeviceOptionsPtr CreateOptionsForServices(
const std::vector<BluetoothUUID>& filter_services,
const std::vector<BluetoothUUID>& optional_services) { … }
WebBluetoothRequestDeviceOptionsPtr CreateOptionsForServices(
const std::vector<BluetoothUUID>& filter_services) { … }
WebBluetoothRequestDeviceOptionsPtr CreateOptionsForManufacturerData(
const std::vector<uint16_t>& optional_manufacturer_data) { … }
}
class FakeBluetoothAdapter : public device::MockBluetoothAdapter { … };
class FakeBluetoothDevice : public device::MockBluetoothDevice { … };
class BluetoothChooserContextTest : public testing::Test { … };
TEST_F(BluetoothChooserContextTest, CheckGrantAndRevokePermission) { … }
TEST_F(BluetoothChooserContextTest, RevokeDevicePermissionWebInitiated) { … }
TEST_F(BluetoothChooserContextTest, GrantPermissionInIncognito) { … }
TEST_F(BluetoothChooserContextTest, CheckGrantWithServiceUpdates) { … }
TEST_F(BluetoothChooserContextTest, CheckGrantWithOptionalServices) { … }
TEST_F(BluetoothChooserContextTest, CheckGrantWithOptionalManufacturerData) { … }
TEST_F(BluetoothChooserContextTest, BluetoothGuardPermission) { … }
TEST_F(BluetoothChooserContextTest, BluetoothLEScannedDevices) { … }
TEST_F(BluetoothChooserContextTest, BluetoothLEScanWithGrantedDevices) { … }