// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module content.mojom;
import "url/mojom/origin.mojom";
// This interface is being developed to support Web Platform Tests for Web
// Bluetooth.
// https://docs.google.com/document/d/1Nhv_oVDCodd1pEH_jj9k8gF4rPGb_84VYaZ9IG8M_WY
//
// These interfaces are not intended to be used directly.
// `web-bluetooth-test.js` makes the Fake Bluetooth interface easier to work
// with.
// * Calls are synchronous.
// * IDs are cached.
//
// If another C++ client intends to use FakeBluetooth a C++ wrapper similar to
// `web-bluetooth-test.js` should be created.
//
// The implementation details of FakeBluetoothChooser can be found in the Web
// Bluetooth Test Scanning design document.
// https://docs.google.com/document/d/1XFl_4ZAgO8ddM6U53A9AfUuZeWgJnlYD5wtbXqEpzeg
// Indicates the types of Bluetooth chooser events.
enum ChooserEventType {
CHOOSER_OPENED,
CHOOSER_CLOSED,
ADAPTER_REMOVED,
ADAPTER_DISABLED,
ADAPTER_ENABLED,
DISCOVERY_FAILED_TO_START,
DISCOVERING,
DISCOVERY_IDLE,
ADD_OR_UPDATE_DEVICE,
UNAUTHORIZED,
};
// FakeBluetoothChooser allows clients to control the global state of the
// Bluetooth chooser during a web test.
interface FakeBluetoothChooser {
// Simulates a user selecting the given |peripheral_address| in the Bluetooth
// chooser.
SelectPeripheral(string peripheral_address);
// Calls the event handler function with the CANCELLED event.
Cancel();
// Calls the event handler function with the RESCAN event.
Rescan();
};
// FakeBluetoothChooserFactory ensures that FakeBluetoothChoosers are created
// with an associated FakeBluetoothChooserClient.
interface FakeBluetoothChooserFactory {
CreateFakeBluetoothChooser(
pending_receiver<FakeBluetoothChooser> fake_chooser,
pending_associated_remote<FakeBluetoothChooserClient> client) => ();
};
// FakeBluetoothChooserEvent describes the type of chooser event that has been
// produced by the FakeBluetoothChooser.
struct FakeBluetoothChooserEvent {
ChooserEventType type;
// Describes the origin the chooser is currently displaying.
// This field will be used by the |CHOOSER_OPENED| event type.
url.mojom.Origin? origin;
// Describes the MAC address of the Bluetooth device.
string? peripheral_address;
};
// Classes that implement this interface will be notified of chooser events.
interface FakeBluetoothChooserClient {
OnEvent(FakeBluetoothChooserEvent event);
};