| Index: third_party/WebKit/public/platform/modules/bluetooth/web_bluetooth.mojom | 
| diff --git a/third_party/WebKit/public/platform/modules/bluetooth/web_bluetooth.mojom b/third_party/WebKit/public/platform/modules/bluetooth/web_bluetooth.mojom | 
| index ecacfdb945c0b1af77877dba8cfed1a6700d2316..148e756e94deb4db78a5fe81ef9a98ff23e6bf84 100644 | 
| --- a/third_party/WebKit/public/platform/modules/bluetooth/web_bluetooth.mojom | 
| +++ b/third_party/WebKit/public/platform/modules/bluetooth/web_bluetooth.mojom | 
| @@ -6,8 +6,39 @@ module blink.mojom; | 
|  | 
| import "device/bluetooth/public/interfaces/uuid.mojom"; | 
|  | 
| -// Result codes that can occur during Web Bluetooth execution, which are | 
| -// transformed to a DOMException in Source/modules/bluetooth/BluetoothError.cpp. | 
| +// Bluetooth Terminology: | 
| +// | 
| +// https://en.wikipedia.org/wiki/Bluetooth_low_energy is a good resource | 
| +// describing the Bluetooth concepts used in this file: | 
| +// Generic Attribute Profile (GATT), device, services, characteristics, | 
| +// descriptors, and UUIDs. | 
| + | 
| +// Instance ID Note: | 
| +// | 
| +// Structs and parameters use 'instance_id' string values as unique identifiers | 
| +// for Bluetooth GATT object instances. UUIDs are used to refer to e.g. a type | 
| +// of service (such as a battery service), while the instance ID refers to the | 
| +// unique instance of that service (there may be more than one). | 
| +// | 
| +// Subsequent calls from and to the client code use the ids to refer to | 
| +// previously disclosed objects. | 
| +// | 
| +// Device IDs are exposed to web content, valid to persist, and have a dedicated | 
| +// type, WebBluetoothDeviceId. See comments on that struct. | 
| +// | 
| +// Service, characteristic, and descriptor IDs are simply strings not exposed to | 
| +// web content and use platform specific values. They are only used for | 
| +// comparison and not intended to be parsed by code, serialized, or exposed to | 
| +// web content. | 
| +// | 
| +// For example: | 
| +// RemoteServerGetPrimaryServices() may return a struct of type | 
| +// WebBluetoothRemoteGATTService with an instance_id of "service1". | 
| +// To retrieve characteristics of that service use that id when calling | 
| +// RemoteServiceGetCharacteristics("service1", ...). | 
| + | 
| +// Result codes that can occur during Web Bluetooth execution. | 
| +// Transformed to a DOMException in Source/modules/bluetooth/BluetoothError.cpp. | 
| // | 
| // These errors all produce constant message strings. If a particular message | 
| // needs a dynamic component, we should add a separate enum so type-checking the | 
| @@ -93,6 +124,10 @@ enum WebBluetoothGATTQueryQuantity { | 
| MULTIPLE | 
| }; | 
|  | 
| +// An identifier uniquely identifying a Bluetooth device. This identifier is | 
| +// safe to provide to web content and is unique per origin, even if referring | 
| +// to a common device. Web content may persist this identifier for future | 
| +// sessions to identify the same device. | 
| struct WebBluetoothDeviceId { | 
| string device_id; | 
| }; | 
| @@ -103,19 +138,19 @@ struct WebBluetoothDevice { | 
| }; | 
|  | 
| struct WebBluetoothRemoteGATTService { | 
| -  string instance_id; | 
| -  string uuid; | 
| +  string instance_id; // See Instance ID Note above. | 
| +  bluetooth.mojom.UUID uuid; | 
| }; | 
|  | 
| struct WebBluetoothRemoteGATTCharacteristic { | 
| -  string instance_id; | 
| -  string uuid; | 
| +  string instance_id; // See Instance ID Note above. | 
| +  bluetooth.mojom.UUID uuid; | 
| uint32 properties; | 
| }; | 
|  | 
| struct WebBluetoothRemoteGATTDescriptor { | 
| -  string instance_id; | 
| -  string uuid; | 
| +  string instance_id; // See Instance ID Note above. | 
| +  bluetooth.mojom.UUID uuid; | 
| }; | 
|  | 
| // Web Bluetooth Interface that Blink can use to perform | 
| @@ -129,19 +164,20 @@ interface WebBluetoothService { | 
| RequestDevice(WebBluetoothRequestDeviceOptions options) | 
| => (WebBluetoothResult result, WebBluetoothDevice? device); | 
|  | 
| -  // Creates a GATT Connection to a Bluetooth Device with |device_id| if a | 
| -  // connection to the device didn't exist already. If a GATT connection existed | 
| -  // already then this function increases the ref count to keep that connection | 
| -  // alive. | 
| +  // Creates a GATT Connection to a Bluetooth Device identified by |device_id| | 
| +  // if a connection to the device didn't exist already. If a GATT connection | 
| +  // existed already then this function increases the ref count to keep that | 
| +  // connection alive. | 
| RemoteServerConnect(WebBluetoothDeviceId device_id) => (WebBluetoothResult result); | 
|  | 
| -  // If a GATT connection exists for Device with |device_id| then decreases | 
| -  // the ref count for that connection. | 
| +  // If a GATT connection exists for Device identified by |device_id| then | 
| +  // decreases the ref count for that connection. | 
| RemoteServerDisconnect(WebBluetoothDeviceId device_id); | 
|  | 
| -  // If |services_uuid| is present, returns services with |services_uuid|. | 
| +  // Returns the Services of a GATT Device identified by |device_id|. | 
| +  // If |services_uuid| is present, filters services by |services_uuid|. | 
| // Otherwise returns all non-blocklisted services. | 
| -  // If |quantity| == WebBluetoothGATTQueryQuantity::SINGLE, only one | 
| +  // If |quantity| == WebBluetoothGATTQueryQuantity::SINGLE, at most one | 
| // service will be returned. | 
| RemoteServerGetPrimaryServices( | 
| WebBluetoothDeviceId device_id, | 
| @@ -150,8 +186,11 @@ interface WebBluetoothService { | 
| WebBluetoothResult result, | 
| array<WebBluetoothRemoteGATTService>? services); | 
|  | 
| -  // Returns the Characteristics of a GATT Service with |service_instance_id|. | 
| -  // If |quantity| == WebBluetoothGATTQueryQuantity::SINGLE, only one | 
| +  // Returns the Characteristics of a GATT Service identified by | 
| +  // |service_instance_id|. | 
| +  // If |characteristics_uuid| is present, filters characteristics by | 
| +  // |characteristics_uuid|. Otherwise returns all non-blocklisted services. | 
| +  // If |quantity| == WebBluetoothGATTQueryQuantity::SINGLE, at most one | 
| // characteristic will be returned. | 
| RemoteServiceGetCharacteristics( | 
| string service_instance_id, | 
| @@ -160,7 +199,7 @@ interface WebBluetoothService { | 
| WebBluetoothResult result, | 
| array<WebBluetoothRemoteGATTCharacteristic>? characteristics); | 
|  | 
| -  // Reads the value for characteristic with | 
| +  // Reads the value for the characteristic identified by | 
| // |characteristic_instance_id|. If the value is successfully read the | 
| // callback will be run with WebBluetoothResult::SUCCESS and the | 
| // characteristic's value. If the value is not successfully read the | 
| @@ -170,7 +209,7 @@ interface WebBluetoothService { | 
| WebBluetoothResult result, | 
| array<uint8>? value); | 
|  | 
| -  // Writes a value to the characteristic with | 
| +  // Writes a value to the characteristic identified by | 
| // |characteristic_instance_id|. The callback is run with | 
| // WebBluetoothResult::SUCCESS if the value was successfully | 
| // written. | 
| @@ -178,20 +217,22 @@ interface WebBluetoothService { | 
| string characteristic_instance_id, | 
| array<uint8> value) => (WebBluetoothResult result); | 
|  | 
| -  // Starts notifications for the characteristic with | 
| +  // Starts notifications for the characteristic identified by | 
| // |characteristic_instance_id|. | 
| RemoteCharacteristicStartNotifications( | 
| string characteristic_instance_id) => (WebBluetoothResult result); | 
|  | 
| -  // Stops notifications for the characteristic with | 
| +  // Stops notifications for the characteristic identified by | 
| // |characteristic_instance_id|. | 
| RemoteCharacteristicStopNotifications( | 
| string characteristic_instance_id) => (); | 
|  | 
| -  // Returns the Descriptors of a GATT Characteristic with | 
| +  // Returns the Descriptors of a GATT Characteristic identified by | 
| // |characteristics_instance_id|. | 
| -  // If |quantity| == WebBluetoothGATTQueryQuantity::SINGLE, only one descriptor | 
| -  // will be returned. | 
| +  // If |descriptor_uuid| is present, filters descriptors by | 
| +  // |descriptor_uuid|. Otherwise returns all non-blocklisted descriptors. | 
| +  // If |quantity| == WebBluetoothGATTQueryQuantity::SINGLE, at most one | 
| +  // characteristic will be returned. | 
| RemoteCharacteristicGetDescriptors( | 
| string characteristics_instance_id, | 
| WebBluetoothGATTQueryQuantity quantity, | 
| @@ -204,7 +245,11 @@ interface WebBluetoothService { | 
| // bound to them to the WebBluetoothService by using SetClient. Classes | 
| // that do this will be notified of device events e.g. device disconnection. | 
| interface WebBluetoothServiceClient { | 
| +  // The characteristic identified by |characteristic_instance_id| has received | 
| +  // a notification of value change. | 
| RemoteCharacteristicValueChanged(string characteristic_instance_id, | 
| array<uint8> value); | 
| + | 
| +  // The device identified by |device_id| has been disconnected. | 
| GattServerDisconnected(WebBluetoothDeviceId device_id); | 
| }; | 
|  |