| Index: chrome/common/extensions/api/bluetooth_low_energy.idl
 | 
| diff --git a/chrome/common/extensions/api/bluetooth_low_energy.idl b/chrome/common/extensions/api/bluetooth_low_energy.idl
 | 
| index 2fd511dc54e4ecf9d1d929f094052f7b4e6a8def..9bb5e49f2517d893d86ba6b7b8993c1125d50fba 100644
 | 
| --- a/chrome/common/extensions/api/bluetooth_low_energy.idl
 | 
| +++ b/chrome/common/extensions/api/bluetooth_low_energy.idl
 | 
| @@ -20,6 +20,30 @@ namespace bluetoothLowEnergy {
 | 
|    // Adapter's MAC Address.
 | 
|    enum AdvertisementType {broadcast, peripheral};
 | 
|  
 | 
| +  // Result of a register or unregister service call.
 | 
| +  enum ServiceResult {
 | 
| +    // The service operation was successful.
 | 
| +    success,
 | 
| +    // The service that is being registered is already regsitered.
 | 
| +    alreadyRegistered,
 | 
| +    // The service that is being unregistered is not regsitered.
 | 
| +    notRegistered
 | 
| +  };
 | 
| +
 | 
| +  // Represents a bluetooth central device that is connected to the local GATT
 | 
| +  // server.
 | 
| +  dictionary Device {
 | 
| +    // The address of the device, in the format 'XX:XX:XX:XX:XX:XX'.
 | 
| +    DOMString address;
 | 
| +
 | 
| +    // The human-readable name of the device.
 | 
| +    DOMString? name;
 | 
| +
 | 
| +    // The class of the device, a bit-field defined by
 | 
| +    // http://www.bluetooth.org/en-us/specification/assigned-numbers/baseband.
 | 
| +    long? deviceClass;
 | 
| +  };
 | 
| +
 | 
|    // Represents a peripheral's Bluetooth GATT Service, a collection of
 | 
|    // characteristics and relationships to other services that encapsulate
 | 
|    // the behavior of part of a device.
 | 
| @@ -30,11 +54,6 @@ namespace bluetoothLowEnergy {
 | 
|      // Indicates whether the type of this service is primary or secondary.
 | 
|      boolean isPrimary;
 | 
|  
 | 
| -    // Indicates whether this service represents a local service hosted by the
 | 
| -    // application and available to other peripherals, or a remote service
 | 
| -    // hosted and received from a remote peripheral.
 | 
| -    [nodoc] boolean isLocal;
 | 
| -
 | 
|      // Returns the identifier assigned to this service. Use the instance ID to
 | 
|      // distinguish between services from a peripheral with the same UUID and
 | 
|      // to make function calls that take in a service identifier. Present, if
 | 
| @@ -53,13 +72,8 @@ namespace bluetoothLowEnergy {
 | 
|      // 00002a37-0000-1000-8000-00805f9b34fb.
 | 
|      DOMString uuid;
 | 
|  
 | 
| -    // Indicates whether this characteristic represents a local characteristic
 | 
| -    // hosted by the application and available to other peripherals, or a remote
 | 
| -    // characteristic hosted and received from a remote peripheral.
 | 
| -    [nodoc] boolean isLocal;
 | 
| -
 | 
|      // The GATT service this characteristic belongs to.
 | 
| -    Service service;
 | 
| +    Service? service;
 | 
|  
 | 
|      // The properties of this characteristic.
 | 
|      CharacteristicProperty[] properties;
 | 
| @@ -83,13 +97,8 @@ namespace bluetoothLowEnergy {
 | 
|      // 00002902-0000-1000-8000-00805f9b34fb.
 | 
|      DOMString uuid;
 | 
|  
 | 
| -    // Indicates whether this descriptor represents a local descriptor
 | 
| -    // hosted by the application and available to other peripherals, or a remote
 | 
| -    // descriptor hosted and received from a remote peripheral.
 | 
| -    [nodoc] boolean isLocal;
 | 
| -
 | 
|      // The GATT characteristic this descriptor belongs to.
 | 
| -    Characteristic characteristic;
 | 
| +    Characteristic? characteristic;
 | 
|  
 | 
|      // Returns the identifier assigned to this descriptor. Use the instance ID
 | 
|      // to distinguish between descriptors from a peripheral with the same UUID
 | 
| @@ -157,13 +166,38 @@ namespace bluetoothLowEnergy {
 | 
|      ServiceData[]? serviceData;
 | 
|    };
 | 
|  
 | 
| +  // Represents a an attribute read/write request.
 | 
| +  dictionary Request {
 | 
| +    // Unique ID for this request. Use this ID when responding to this request.
 | 
| +    long requestId;
 | 
| +    // Device that send this request.
 | 
| +    Device device;
 | 
| +    // Value to write (if this is a write request).
 | 
| +    ArrayBuffer? value;
 | 
| +  };
 | 
| +
 | 
| +  // Represents a response to an attribute read/write request.
 | 
| +  dictionary Response {
 | 
| +    // Id of the request this is a response to.
 | 
| +    long requestId;
 | 
| +    // If this is an error response, this should be true.
 | 
| +    boolean isError;
 | 
| +    // Response value. Write requests and error responses will ignore this
 | 
| +    // parameter.
 | 
| +    ArrayBuffer? value;
 | 
| +  };
 | 
| +
 | 
|    callback CharacteristicCallback = void(Characteristic result);
 | 
| +  callback CreateCharacteristicCallback = void(DOMString characteristicId);
 | 
|    callback CharacteristicsCallback = void(Characteristic[] result);
 | 
|    callback DescriptorCallback = void(Descriptor result);
 | 
| +  callback CreateDescriptorCallback = void(DOMString descriptorId);
 | 
|    callback DescriptorsCallback = void(Descriptor[] result);
 | 
|    callback ResultCallback = void();
 | 
|    callback ServiceCallback = void(Service result);
 | 
| +  callback CreateServiceCallback = void(DOMString serviceId);
 | 
|    callback ServicesCallback = void(Service[] result);
 | 
| +  callback ServiceResultCallback = void(ServiceResult result);
 | 
|    callback RegisterAdvertisementCallback = void (long advertisementId);
 | 
|  
 | 
|    // These functions all report failures via chrome.runtime.lastError.
 | 
| @@ -175,10 +209,10 @@ namespace bluetoothLowEnergy {
 | 
|      // make sure that a connection to the device is maintained. If the device
 | 
|      // is not connected, all GATT services of the device will be discovered
 | 
|      // after a successful call to <code>connect</code>.
 | 
| -    // |deviceAddress| : The Bluetooth address of the remote device to which a
 | 
| +    // |deviceAddress|: The Bluetooth address of the remote device to which a
 | 
|      // GATT connection should be opened.
 | 
| -    // |properties| : Connection properties (optional).
 | 
| -    // |callback| : Called when the connect request has completed.
 | 
| +    // |properties|: Connection properties (optional).
 | 
| +    // |callback|: Called when the connect request has completed.
 | 
|      static void connect(DOMString deviceAddress,
 | 
|                          optional ConnectProperties properties,
 | 
|                          ResultCallback callback);
 | 
| @@ -186,80 +220,116 @@ namespace bluetoothLowEnergy {
 | 
|      // Closes the app's connection to the device with the given address. Note
 | 
|      // that this will not always destroy the physical link itself, since there
 | 
|      // may be other apps with open connections.
 | 
| -    // |deviceAddress| : The Bluetooth address of the remote device.
 | 
| -    // |callback| : Called when the disconnect request has completed.
 | 
| +    // |deviceAddress|: The Bluetooth address of the remote device.
 | 
| +    // |callback|: Called when the disconnect request has completed.
 | 
|      static void disconnect(DOMString deviceAddress,
 | 
|                             optional ResultCallback callback);
 | 
|  
 | 
|      // Get the GATT service with the given instance ID.
 | 
| -    // |serviceId| : The instance ID of the requested GATT service.
 | 
| -    // |callback| : Called with the requested Service object.
 | 
| +    // |serviceId|: The instance ID of the requested GATT service.
 | 
| +    // |callback|: Called with the requested Service object.
 | 
|      static void getService(DOMString serviceId, ServiceCallback callback);
 | 
|  
 | 
| +    // Create a locally hosted GATT service. This service can be registered
 | 
| +    // to be available on a local GATT server.
 | 
| +    // This function is only available if the app has both the
 | 
| +    // bluetooth:low_energy and the bluetooth:peripheral permissions set to
 | 
| +    // true. The peripheral permission may not be available to all apps.
 | 
| +    // |service|: The service to create.
 | 
| +    // |callback|: Called with the created services's unique ID.
 | 
| +    static void createService(Service service, CreateServiceCallback callback);
 | 
| +
 | 
|      // Get all the GATT services that were discovered on the remote device with
 | 
|      // the given device address.
 | 
| -    // |deviceAddress| : The Bluetooth address of the remote device whose GATT
 | 
| +    // |deviceAddress|: The Bluetooth address of the remote device whose GATT
 | 
|      // services should be returned.
 | 
| -    // |callback| : Called with the list of requested Service objects.
 | 
| +    // |callback|: Called with the list of requested Service objects.
 | 
|      static void getServices(DOMString deviceAddress, ServicesCallback callback);
 | 
|  
 | 
|      // Get the GATT characteristic with the given instance ID that belongs to
 | 
|      // the given GATT service, if the characteristic exists.
 | 
| -    // |characteristicId| : The instance ID of the requested GATT
 | 
| +    // |characteristicId|: The instance ID of the requested GATT
 | 
|      // characteristic.
 | 
| -    // |callback| : Called with the requested Characteristic object.
 | 
| +    // |callback|: Called with the requested Characteristic object.
 | 
|      static void getCharacteristic(DOMString characteristicId,
 | 
|                                    CharacteristicCallback callback);
 | 
|  
 | 
| +    // Create a locally hosted GATT characteristic. This characteristic must
 | 
| +    // be hosted under a valid service. If the service ID is not valid, the
 | 
| +    // lastError will be set.
 | 
| +    // This function is only available if the app has both the
 | 
| +    // bluetooth:low_energy and the bluetooth:peripheral permissions set to
 | 
| +    // true. The peripheral permission may not be available to all apps.
 | 
| +    // |characteristic|: The characteristic to create.
 | 
| +    // |serviceId|: ID of the service to create this characteristic for.
 | 
| +    // |callback|: Called with the created characteristic's unique ID.
 | 
| +    static void createCharacteristic(Characteristic characteristic,
 | 
| +                                     DOMString serviceId,
 | 
| +                                     CreateCharacteristicCallback callback);
 | 
| +
 | 
|      // Get a list of all discovered GATT characteristics that belong to the
 | 
|      // given service.
 | 
| -    // |serviceId| : The instance ID of the GATT service whose characteristics
 | 
| +    // |serviceId|: The instance ID of the GATT service whose characteristics
 | 
|      // should be returned.
 | 
| -    // |callback| : Called with the list of characteristics that belong to the
 | 
| +    // |callback|: Called with the list of characteristics that belong to the
 | 
|      // given service.
 | 
|      static void getCharacteristics(DOMString serviceId,
 | 
|                                     CharacteristicsCallback callback);
 | 
|  
 | 
|      // Get a list of GATT services that are included by the given service.
 | 
| -    // |serviceId| : The instance ID of the GATT service whose included
 | 
| +    // |serviceId|: The instance ID of the GATT service whose included
 | 
|      // services should be returned.
 | 
| -    // |callback| : Called with the list of GATT services included from the
 | 
| +    // |callback|: Called with the list of GATT services included from the
 | 
|      // given service.
 | 
|      static void getIncludedServices(DOMString serviceId,
 | 
|                                      ServicesCallback callback);
 | 
|  
 | 
|      // Get the GATT characteristic descriptor with the given instance ID.
 | 
| -    // |descriptorId| : The instance ID of the requested GATT characteristic
 | 
| +    // |descriptorId|: The instance ID of the requested GATT characteristic
 | 
|      // descriptor.
 | 
| -    // |callback| : Called with the requested Descriptor object.
 | 
| +    // |callback|: Called with the requested Descriptor object.
 | 
|      static void getDescriptor(DOMString descriptorId,
 | 
|                                DescriptorCallback callback);
 | 
|  
 | 
| +    // Create a locally hosted GATT descriptor. This descriptor must
 | 
| +    // be hosted under a valid characteristic. If the characteristic ID is not
 | 
| +    // valid, the lastError will be set.
 | 
| +    // This function is only available if the app has both the
 | 
| +    // bluetooth:low_energy and the bluetooth:peripheral permissions set to
 | 
| +    // true. The peripheral permission may not be available to all apps.
 | 
| +    // |descriptor|: The descriptor to create.
 | 
| +    // |characteristicId|: ID of the characteristic to create this descriptor
 | 
| +    // for.
 | 
| +    // |callback|: Called with the created descriptor's unique ID.
 | 
| +    static void createDescriptor(Descriptor descriptor,
 | 
| +                                 DOMString characteristicId,
 | 
| +                                 CreateDescriptorCallback callback);
 | 
| +
 | 
|      // Get a list of GATT characteristic descriptors that belong to the given
 | 
|      // characteristic.
 | 
| -    // |characteristicId| : The instance ID of the GATT characteristic whose
 | 
| +    // |characteristicId|: The instance ID of the GATT characteristic whose
 | 
|      // descriptors should be returned.
 | 
| -    // |callback| : Called with the list of descriptors that belong to the given
 | 
| +    // |callback|: Called with the list of descriptors that belong to the given
 | 
|      // characteristic.
 | 
|      static void getDescriptors(DOMString characteristicId,
 | 
|                                 DescriptorsCallback callback);
 | 
|  
 | 
|      // Retrieve the value of a specified characteristic from a remote
 | 
|      // peripheral.
 | 
| -    // |characteristicId| : The instance ID of the GATT characteristic whose
 | 
| +    // |characteristicId|: The instance ID of the GATT characteristic whose
 | 
|      // value should be read from the remote device.
 | 
| -    // |callback| : Called with the Characteristic object whose value was
 | 
| +    // |callback|: Called with the Characteristic object whose value was
 | 
|      // requested. The <code>value</code> field of the returned Characteristic
 | 
|      // object contains the result of the read request.
 | 
|      static void readCharacteristicValue(DOMString characteristicId,
 | 
|                                          CharacteristicCallback callback);
 | 
|  
 | 
|      // Write the value of a specified characteristic from a remote peripheral.
 | 
| -    // |characteristicId| : The instance ID of the GATT characteristic whose
 | 
| +    // |characteristicId|: The instance ID of the GATT characteristic whose
 | 
|      // value should be written to.
 | 
| -    // |value| : The value that should be sent to the remote characteristic as
 | 
| +    // |value|: The value that should be sent to the remote characteristic as
 | 
|      // part of the write request.
 | 
| -    // |callback| : Called when the write request has completed.
 | 
| +    // |callback|: Called when the write request has completed.
 | 
|      static void writeCharacteristicValue(DOMString characteristicId,
 | 
|                                           ArrayBuffer value,
 | 
|                                           ResultCallback callback);
 | 
| @@ -267,10 +337,10 @@ namespace bluetoothLowEnergy {
 | 
|      // Enable value notifications/indications from the specified characteristic.
 | 
|      // Once enabled, an application can listen to notifications using the
 | 
|      // $(ref:onCharacteristicValueChanged) event.
 | 
| -    // |characteristicId| : The instance ID of the GATT characteristic that
 | 
| +    // |characteristicId|: The instance ID of the GATT characteristic that
 | 
|      // notifications should be enabled on.
 | 
| -    // |properties| : Notification session properties (optional).
 | 
| -    // |callback| : Called when the request has completed.
 | 
| +    // |properties|: Notification session properties (optional).
 | 
| +    // |callback|: Called when the request has completed.
 | 
|      static void startCharacteristicNotifications(
 | 
|          DOMString characteristicId,
 | 
|          optional NotificationProperties properties,
 | 
| @@ -279,18 +349,18 @@ namespace bluetoothLowEnergy {
 | 
|      // Disable value notifications/indications from the specified
 | 
|      // characteristic. After a successful call, the application will stop
 | 
|      // receiving notifications/indications from this characteristic.
 | 
| -    // |characteristicId| : The instance ID of the GATT characteristic on which
 | 
| +    // |characteristicId|: The instance ID of the GATT characteristic on which
 | 
|      // this app's notification session should be stopped.
 | 
| -    // |callback| : Called when the request has completed (optional).
 | 
| +    // |callback|: Called when the request has completed (optional).
 | 
|      static void stopCharacteristicNotifications(
 | 
|          DOMString characteristicId,
 | 
|          optional ResultCallback callback);
 | 
|  
 | 
|      // Retrieve the value of a specified characteristic descriptor from a remote
 | 
|      // peripheral.
 | 
| -    // |descriptorId| : The instance ID of the GATT characteristic descriptor
 | 
| +    // |descriptorId|: The instance ID of the GATT characteristic descriptor
 | 
|      // whose value should be read from the remote device.
 | 
| -    // |callback| : Called with the Descriptor object whose value was requested.
 | 
| +    // |callback|: Called with the Descriptor object whose value was requested.
 | 
|      // The <code>value</code> field of the returned Descriptor object contains
 | 
|      // the result of the read request.
 | 
|      static void readDescriptorValue(DOMString descriptorId,
 | 
| @@ -298,15 +368,35 @@ namespace bluetoothLowEnergy {
 | 
|  
 | 
|      // Write the value of a specified characteristic descriptor from a remote
 | 
|      // peripheral.
 | 
| -    // |descriptorId| : The instance ID of the GATT characteristic descriptor
 | 
| +    // |descriptorId|: The instance ID of the GATT characteristic descriptor
 | 
|      // whose value should be written to.
 | 
| -    // |value| : The value that should be sent to the remote descriptor as part
 | 
| +    // |value|: The value that should be sent to the remote descriptor as part
 | 
|      // of the write request.
 | 
| -    // |callback| : Called when the write request has completed.
 | 
| +    // |callback|: Called when the write request has completed.
 | 
|      static void writeDescriptorValue(DOMString descriptorId,
 | 
|                                       ArrayBuffer value,
 | 
|                                       ResultCallback callback);
 | 
|  
 | 
| +    // Register the given service with the local GATT server. If the service
 | 
| +    // ID is invalid, the lastError will be set.
 | 
| +    // This function is only available if the app has both the
 | 
| +    // bluetooth:low_energy and the bluetooth:peripheral permissions set to
 | 
| +    // true. The peripheral permission may not be available to all apps.
 | 
| +    // |serviceId|: Unique ID of a created service.
 | 
| +    // |callback|: Callback with the result of the register operation.
 | 
| +    static void registerService(
 | 
| +        DOMString serviceId, ServiceResultCallback callback);
 | 
| +
 | 
| +    // Unregister the given service with the local GATT server. If the service
 | 
| +    // ID is invalid, the lastError will be set.
 | 
| +    // This function is only available if the app has both the
 | 
| +    // bluetooth:low_energy and the bluetooth:peripheral permissions set to
 | 
| +    // true. The peripheral permission may not be available to all apps.
 | 
| +    // |serviceId|: Unique ID of a current registered service.
 | 
| +    // |callback|: Callback with the result of the register operation.
 | 
| +    static void unregisterService(
 | 
| +        DOMString serviceId, ServiceResultCallback callback);
 | 
| +
 | 
|      // Create an advertisement and register it for advertising. To call this
 | 
|      // function, the app must have the bluetooth:low_energy and
 | 
|      // bluetooth:peripheral permissions set to true. Additionally this API
 | 
| @@ -320,8 +410,8 @@ namespace bluetoothLowEnergy {
 | 
|      // device in both modes will lead to undefined behavior or prevent other
 | 
|      // central-role applications from behaving correctly (including the
 | 
|      // discovery of Bluetooth Low Energy devices).
 | 
| -    // |advertisement| : The advertisement to advertise.
 | 
| -    // |callback| : Called once the registeration is done and we've started
 | 
| +    // |advertisement|: The advertisement to advertise.
 | 
| +    // |callback|: Called once the registeration is done and we've started
 | 
|      // advertising. Returns the id of the created advertisement.
 | 
|      static void registerAdvertisement(
 | 
|          Advertisement advertisement, RegisterAdvertisementCallback callback);
 | 
| @@ -329,43 +419,95 @@ namespace bluetoothLowEnergy {
 | 
|      // Unregisters an advertisement and stops its advertising. If the
 | 
|      // advertisement fails to unregister the only way to stop advertising
 | 
|      // might be to restart the device.
 | 
| -    // |advertisementId| : Id of the advertisement to unregister.
 | 
| -    // |callback| : Called once the advertisement is unregistered and is no
 | 
| +    // |advertisementId|: Id of the advertisement to unregister.
 | 
| +    // |callback|: Called once the advertisement is unregistered and is no
 | 
|      // longer being advertised.
 | 
|      static void unregisterAdvertisement(long advertisementId,
 | 
| -                                                ResultCallback callback);
 | 
| +        ResultCallback callback);
 | 
| +
 | 
| +    // Sends a response for a characteristic or descriptor read/write
 | 
| +    // request.
 | 
| +    // This function is only available if the app has both the
 | 
| +    // bluetooth:low_energy and the bluetooth:peripheral permissions set to
 | 
| +    // true. The peripheral permission may not be available to all apps.
 | 
| +    // |response|: The response to the request.
 | 
| +    static void sendRequestResponse(Response response);
 | 
|    };
 | 
|  
 | 
|    interface Events {
 | 
|      // Fired whan a new GATT service has been discovered on a remote device.
 | 
| -    // |service| : The GATT service that was added.
 | 
| +    // |service|: The GATT service that was added.
 | 
|      static void onServiceAdded(Service service);
 | 
|  
 | 
|      // Fired when the state of a remote GATT service changes. This involves any
 | 
|      // characteristics and/or descriptors that get added or removed from the
 | 
|      // service, as well as "ServiceChanged" notifications from the remote
 | 
|      // device.
 | 
| -    // |service| : The GATT service whose state has changed.
 | 
| +    // |service|: The GATT service whose state has changed.
 | 
|      static void onServiceChanged(Service service);
 | 
|  
 | 
|      // Fired when a GATT service that was previously discovered on a remote
 | 
|      // device has been removed.
 | 
| -    // |service| : The GATT service that was removed.
 | 
| +    // |service|: The GATT service that was removed.
 | 
|      static void onServiceRemoved(Service service);
 | 
|  
 | 
|      // Fired when the value of a remote GATT characteristic changes, either as
 | 
|      // a result of a read request, or a value change notification/indication
 | 
|      // This event will only be sent if the app has enabled notifications by
 | 
|      // calling $(ref:startCharacteristicNotifications).
 | 
| -    // |characteristic| : The GATT characteristic whose value has changed.
 | 
| +    // |characteristic|: The GATT characteristic whose value has changed.
 | 
|      static void onCharacteristicValueChanged(Characteristic characteristic);
 | 
|  
 | 
|      // Fired when the value of a remote GATT characteristic descriptor changes,
 | 
|      // usually as a result of a read request. This event exists
 | 
|      // mostly for convenience and will always be sent after a successful
 | 
|      // call to $(ref:readDescriptorValue).
 | 
| -    // |descriptor| : The GATT characteristic descriptor whose value has
 | 
| +    // |descriptor|: The GATT characteristic descriptor whose value has
 | 
|      // changed.
 | 
|      static void onDescriptorValueChanged(Descriptor descriptor);
 | 
| +
 | 
| +    // Fired when a connected central device requests to read the value of a
 | 
| +    // characteristic registered on the local GATT server. Not responding
 | 
| +    // to this request for a long time may lead to a disconnection.
 | 
| +    // This event is only available if the app has both the
 | 
| +    // bluetooth:low_energy and the bluetooth:peripheral permissions set to
 | 
| +    // true. The peripheral permission may not be available to all apps.
 | 
| +    // |request|: Request data for this request.
 | 
| +    // |characteristic|: The GATT characteristic whose value is requested.
 | 
| +    static void onCharacteristicReadRequest(
 | 
| +        Request request, DOMString characteristicId);
 | 
| +
 | 
| +    // Fired when a connected central device requests to write the value of a
 | 
| +    // characteristic registered on the local GATT server. Not responding
 | 
| +    // to this request for a long time may lead to a disconnection.
 | 
| +    // This event is only available if the app has both the
 | 
| +    // bluetooth:low_energy and the bluetooth:peripheral permissions set to
 | 
| +    // true. The peripheral permission may not be available to all apps.
 | 
| +    // |request|: Request data for this request.
 | 
| +    // |characteristic|: The GATT characteristic whose value is being written.
 | 
| +    static void onCharacteristicWriteRequest(
 | 
| +        Request request, DOMString characteristicId);
 | 
| +
 | 
| +    // Fired when a connected central device requests to read the value of a
 | 
| +    // descriptor registered on the local GATT server. Not responding to
 | 
| +    // this request for a long time may lead to a disconnection.
 | 
| +    // This event is only available if the app has both the
 | 
| +    // bluetooth:low_energy and the bluetooth:peripheral permissions set to
 | 
| +    // true. The peripheral permission may not be available to all apps.
 | 
| +    // |request|: Request data for this request.
 | 
| +    // |descriptor|: The GATT descriptor whose value is requested.
 | 
| +    static void onDescriptorReadRequest(
 | 
| +        Request request, DOMString descriptorId);
 | 
| +
 | 
| +    // Fired when a connected central device requests to write the value of a
 | 
| +    // descriptor registered on the local GATT server. Not responding to
 | 
| +    // this request for a long time may lead to a disconnection.
 | 
| +    // This event is only available if the app has both the
 | 
| +    // bluetooth:low_energy and the bluetooth:peripheral permissions set to
 | 
| +    // true. The peripheral permission may not be available to all apps.
 | 
| +    // |request|: Request data for this request.
 | 
| +    // |descriptor|: The GATT descriptor whose value is being written.
 | 
| +    static void onDescriptorWriteRequest(
 | 
| +        Request request, DOMString descriptorId);
 | 
|    };
 | 
|  };
 | 
| 
 |