// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// https://webbluetoothchrome.github.io/web-bluetooth/#idl-def-bluetoothgattcharacteristic

// Implement BluetoothRemoteGATTCharacteristic interface: https://crbug.com/483344

[
    GarbageCollected,
    DependentLifetime,
    RuntimeEnabled=WebBluetooth,
    // TODO(https://crbug.com/584113) Enable Web Bluetooth Experiment.
    // OriginTrialEnabled=WebBluetooth,
] interface BluetoothRemoteGATTCharacteristic : EventTarget {//: CharacteristicEventHandlers {
    // TODO(ortuno): Add test to make sure service matches the service
    // used to call getCharacteristic.
    // readonly    attribute BluetoothRemoteGATTService     service;
    readonly    attribute UUID                  uuid;
    readonly    attribute BluetoothCharacteristicProperties properties;
    readonly    attribute DataView?             value;
    // Promise<BluetoothRemoteGATTDescriptor>           getDescriptor(BluetoothDescriptorUUID descriptor);
    // Promise<sequence<BluetoothRemoteGATTDescriptor>> getDescriptors(optional BluetoothDescriptorUUID descriptor);
    [CallWith=ScriptState] Promise<DataView>    readValue();
    [CallWith=ScriptState] Promise<void>        writeValue(BufferSource value);
    [CallWith=ScriptState] Promise<void>        startNotifications();
    [CallWith=ScriptState] Promise<void>        stopNotifications();

    // TODO(ortuno): Move this to CharacteristicEventHandlers.
    // http://crbug.com/537459
    attribute EventHandler oncharacteristicvaluechanged;
};
