910e62b5创建于 1月15日历史提交
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CONTENT_BROWSER_BLUETOOTH_TEST_MOCK_BLUETOOTH_DELEGATE_H_
#define CONTENT_BROWSER_BLUETOOTH_TEST_MOCK_BLUETOOTH_DELEGATE_H_

#include <memory>
#include <optional>
#include <string>
#include <vector>

#include "content/public/browser/bluetooth_chooser.h"
#include "content/public/browser/bluetooth_delegate.h"
#include "content/public/browser/render_frame_host.h"
#include "device/bluetooth/public/cpp/bluetooth_uuid.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "third_party/blink/public/common/bluetooth/web_bluetooth_device_id.h"
#include "third_party/blink/public/mojom/bluetooth/web_bluetooth.mojom.h"

namespace content {

class MockBluetoothDelegate : public BluetoothDelegate {
 public:
  MockBluetoothDelegate();
  MockBluetoothDelegate(const MockBluetoothDelegate&) = delete;
  MockBluetoothDelegate& operator=(const MockBluetoothDelegate&) = delete;
  ~MockBluetoothDelegate() override;

  MOCK_METHOD(std::unique_ptr<BluetoothChooser>,
              RunBluetoothChooser,
              (RenderFrameHost*, const BluetoothChooser::EventHandler&));
  MOCK_METHOD(std::unique_ptr<BluetoothScanningPrompt>,
              ShowBluetoothScanningPrompt,
              (RenderFrameHost*, const BluetoothScanningPrompt::EventHandler&));
  MOCK_METHOD(void,
              ShowDevicePairPrompt,
              (RenderFrameHost*,
               const std::u16string&,
               PairPromptCallback,
               PairingKind,
               const std::optional<std::u16string>&));
  MOCK_METHOD(blink::WebBluetoothDeviceId,
              GetWebBluetoothDeviceId,
              (RenderFrameHost*, const std::string&));
  MOCK_METHOD(std::string,
              GetDeviceAddress,
              (RenderFrameHost*, const blink::WebBluetoothDeviceId&));
  MOCK_METHOD(blink::WebBluetoothDeviceId,
              AddScannedDevice,
              (RenderFrameHost*, const std::string&));
  MOCK_METHOD(blink::WebBluetoothDeviceId,
              GrantServiceAccessPermission,
              (RenderFrameHost*,
               const device::BluetoothDevice*,
               const blink::mojom::WebBluetoothRequestDeviceOptions*));
  MOCK_METHOD(bool,
              HasDevicePermission,
              (RenderFrameHost*, const blink::WebBluetoothDeviceId&));
  MOCK_METHOD(void,
              RevokeDevicePermissionWebInitiated,
              (RenderFrameHost*, const blink::WebBluetoothDeviceId& device_id));
  MOCK_METHOD(bool, MayUseBluetooth, (RenderFrameHost*));
  MOCK_METHOD(bool,
              IsAllowedToAccessService,
              (RenderFrameHost*,
               const blink::WebBluetoothDeviceId&,
               const device::BluetoothUUID&));
  MOCK_METHOD(bool,
              IsAllowedToAccessAtLeastOneService,
              (RenderFrameHost*, const blink::WebBluetoothDeviceId&));
  MOCK_METHOD(bool,
              IsAllowedToAccessManufacturerData,
              (RenderFrameHost*, const blink::WebBluetoothDeviceId&, uint16_t));
  MOCK_METHOD(std::vector<blink::mojom::WebBluetoothDevicePtr>,
              GetPermittedDevices,
              (RenderFrameHost*));
  MOCK_METHOD(void, AddFramePermissionObserver, (FramePermissionObserver*));
  MOCK_METHOD(void, RemoveFramePermissionObserver, (FramePermissionObserver*));
};

}  // namespace content

#endif  // CONTENT_BROWSER_BLUETOOTH_TEST_MOCK_BLUETOOTH_DELEGATE_H_