Created
January 27, 2016 14:23
-
-
Save zakorgy/a048b108f9f7bad660ad to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/components/script/dom/bluetoothadvertisingdata.rs b/components/script/dom/bluetoothadvertisingdata.rs | |
index 1896e46..5634a62 100644 | |
--- a/components/script/dom/bluetoothadvertisingdata.rs | |
+++ b/components/script/dom/bluetoothadvertisingdata.rs | |
@@ -40,14 +40,17 @@ impl BluetoothAdvertisingData { | |
} | |
impl BluetoothAdvertisingDataMethods for BluetoothAdvertisingData { | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothadvertisingdata-appearance | |
fn GetAppearance(&self) -> Option<u16> { | |
Some(self.appearance) | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothadvertisingdata-txpower | |
fn GetTxPower(&self) -> Option<i8> { | |
Some(self.txPower) | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothadvertisingdata-rssi | |
fn GetRssi(&self) -> Option<i8> { | |
Some(self.rssi) | |
} | |
diff --git a/components/script/dom/bluetoothcharacteristicproperties.rs b/components/script/dom/bluetoothcharacteristicproperties.rs | |
index f97a55a..13a23a8 100644 | |
--- a/components/script/dom/bluetoothcharacteristicproperties.rs | |
+++ b/components/script/dom/bluetoothcharacteristicproperties.rs | |
@@ -3,7 +3,7 @@ | |
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
use dom::bindings::codegen::Bindings::BluetoothCharacteristicPropertiesBinding; | |
-use dom::bindings::codegen::Bindings::BluetoothCharacteristicPropertiesBinding::BluetoothCharacteristicPropertiesMethods; | |
+use dom::bindings::codegen::Bindings::BluetoothCharacteristicPropertiesBinding::*; | |
use dom::bindings::global::GlobalRef; | |
use dom::bindings::js::Root; | |
use dom::bindings::reflector::{Reflector, reflect_dom_object}; | |
@@ -75,38 +75,47 @@ impl BluetoothCharacteristicProperties { | |
} | |
impl BluetoothCharacteristicPropertiesMethods for BluetoothCharacteristicProperties { | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothcharacteristicproperties-broadcast | |
fn Broadcast(&self) -> bool { | |
self.broadcast | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothcharacteristicproperties-read | |
fn Read(&self) -> bool { | |
self.read | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothcharacteristicproperties-writewithoutresponse | |
fn WriteWithoutResponse(&self) -> bool { | |
self.writeWithoutResponse | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothcharacteristicproperties-write | |
fn Write(&self) -> bool { | |
self.write | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothcharacteristicproperties-notify | |
fn Notify(&self) -> bool { | |
self.notify | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothcharacteristicproperties-indicate | |
fn Indicate(&self) -> bool { | |
self.indicate | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothcharacteristicproperties-authenticatedsignedwrites | |
fn AuthenticatedSignedWrites(&self) -> bool { | |
self.authenticatedSignedWrites | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothcharacteristicproperties-reliablewrite | |
fn ReliableWrite(&self) -> bool { | |
self.reliableWrite | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothcharacteristicproperties-writeableauxilaries | |
fn WritableAuxiliaries(&self) -> bool { | |
self.writableAuxiliaries | |
} | |
diff --git a/components/script/dom/bluetoothdevice.rs b/components/script/dom/bluetoothdevice.rs | |
index 732b206..9f09673 100644 | |
--- a/components/script/dom/bluetoothdevice.rs | |
+++ b/components/script/dom/bluetoothdevice.rs | |
@@ -2,16 +2,19 @@ | |
* License, v. 2.0. If a copy of the MPL was not distributed with this | |
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
-use dom::bluetoothadvertisingdata::BluetoothAdvertisingData; | |
use dom::bindings::codegen::Bindings::BluetoothDeviceBinding; | |
use dom::bindings::codegen::Bindings::BluetoothDeviceBinding::{BluetoothDeviceMethods, VendorIDSource}; | |
use dom::bindings::global::GlobalRef; | |
use dom::bindings::js::{JS, Root}; | |
use dom::bindings::reflector::{Reflector, reflect_dom_object}; | |
+use dom::bluetoothadvertisingdata::BluetoothAdvertisingData; | |
+use dom::bluetoothgattremoteserver::BluetoothGATTRemoteServer; | |
use util::str::DOMString; | |
// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothdevice | |
+pub type Uuid = DOMString; | |
+ | |
#[dom_struct] | |
pub struct BluetoothDevice { | |
reflector_: Reflector, | |
@@ -23,8 +26,8 @@ pub struct BluetoothDevice { | |
vendorID: u32, | |
productID: u32, | |
productVersion: u32, | |
- // gattServer: BluetoothGATTRemoteServer, | |
- // uuids: UUID[], | |
+ gattServer: JS<BluetoothGATTRemoteServer>, | |
+ //TODO:uuids: Vec<u32>, | |
} | |
impl BluetoothDevice { | |
@@ -35,7 +38,8 @@ impl BluetoothDevice { | |
vendorIDSource: VendorIDSource, | |
vendorID: u32, | |
productID: u32, | |
- productVersion: u32) | |
+ productVersion: u32, | |
+ gattServer: &BluetoothGATTRemoteServer) | |
-> BluetoothDevice { | |
BluetoothDevice { | |
reflector_: Reflector::new(), | |
@@ -47,6 +51,7 @@ impl BluetoothDevice { | |
vendorID: vendorID, | |
productID: productID, | |
productVersion: productVersion, | |
+ gattServer: JS::from_ref(gattServer), | |
} | |
} | |
@@ -58,7 +63,8 @@ impl BluetoothDevice { | |
vendorIDSource: VendorIDSource, | |
vendorID: u32, | |
productID: u32, | |
- productVersion: u32) | |
+ productVersion: u32, | |
+ gattServer: &BluetoothGATTRemoteServer) | |
-> Root<BluetoothDevice> { | |
reflect_dom_object(box BluetoothDevice::new_inherited(id, | |
name, | |
@@ -67,42 +73,56 @@ impl BluetoothDevice { | |
vendorIDSource, | |
vendorID, | |
productID, | |
- productVersion), | |
+ productVersion, | |
+ gattServer), | |
global, | |
BluetoothDeviceBinding::Wrap) | |
} | |
} | |
impl BluetoothDeviceMethods for BluetoothDevice { | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothdevice-id | |
fn Id(&self) -> DOMString { | |
self.id.clone() | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothdevice-name | |
fn GetName(&self) -> Option<DOMString> { | |
Some(self.name.clone()) | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#addata | |
fn AdData(&self) -> Root<BluetoothAdvertisingData> { | |
Root::from_ref(&*self.adData) | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothdevice-deviceclass | |
fn GetDeviceClass(&self) -> Option<u32> { | |
Some(self.deviceClass) | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothdevice-vendoridsource | |
fn GetVendorIDSource(&self) -> Option<VendorIDSource> { | |
Some(self.vendorIDSource) | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothdevice-vendorid | |
fn GetVendorID(&self) -> Option<u32> { | |
Some(self.vendorID) | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothdevice-productid | |
fn GetProductID(&self) -> Option<u32> { | |
Some(self.productID) | |
} | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothdevice-productversion | |
fn GetProductVersion(&self) -> Option<u32> { | |
Some(self.productVersion) | |
} | |
+ | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#gattserver | |
+ fn GetGattServer(&self) -> Option<Root<BluetoothGATTRemoteServer>> { | |
+ Some(Root::from_ref(&*self.gattServer)) | |
+ } | |
} | |
diff --git a/components/script/dom/bluetoothgattremoteserver.rs b/components/script/dom/bluetoothgattremoteserver.rs | |
new file mode 100644 | |
index 0000000..ee3af67 | |
--- /dev/null | |
+++ b/components/script/dom/bluetoothgattremoteserver.rs | |
@@ -0,0 +1,59 @@ | |
+/* This Source Code Form is subject to the terms of the Mozilla Public | |
+ * License, v. 2.0. If a copy of the MPL was not distributed with this | |
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
+ | |
+use dom::bindings::codegen::Bindings::BluetoothGATTRemoteServerBinding; | |
+use dom::bindings::codegen::Bindings::BluetoothGATTRemoteServerBinding::BluetoothGATTRemoteServerMethods; | |
+use dom::bindings::global::GlobalRef; | |
+use dom::bindings::js::{JS, Root}; | |
+use dom::bindings::reflector::{Reflector, reflect_dom_object}; | |
+use dom::bluetoothdevice::BluetoothDevice; | |
+ | |
+#[dom_struct] | |
+pub struct BluetoothGATTRemoteServer { | |
+ reflector_: Reflector, | |
+ device: JS<BluetoothDevice>, | |
+ connected: bool, | |
+} | |
+ | |
+impl BluetoothGATTRemoteServer { | |
+ pub fn new_inherited(device: &BluetoothDevice, connected: bool) -> BluetoothGATTRemoteServer { | |
+ BluetoothGATTRemoteServer { | |
+ reflector_: Reflector::new(), | |
+ device: JS::from_ref(device), | |
+ connected: connected, | |
+ } | |
+ } | |
+ | |
+ pub fn new(global: GlobalRef, device: &BluetoothDevice, connected: bool) -> Root<BluetoothGATTRemoteServer> { | |
+ reflect_dom_object(box BluetoothGATTRemoteServer::new_inherited( | |
+ device, | |
+ connected), | |
+ global, | |
+ BluetoothGATTRemoteServerBinding::Wrap) | |
+ } | |
+ | |
+ fn disconnect(&self) -> () { | |
+ // FIXME (zakorgy) | |
+ // Set this.connected to false. | |
+ // In parallel: if, for all BluetoothDevices device in the whole UA with device@[[representedDevice]] | |
+ // the same device as this.device@[[representedDevice]], | |
+ // device.gattServer === null or !device.gattServer.connected, | |
+ // the UA MAY destroy device@[[representedDevice]]’s ATT Bearer. | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothgattremoteserver-disconnect | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#same-device | |
+ () | |
+ } | |
+} | |
+ | |
+impl BluetoothGATTRemoteServerMethods for BluetoothGATTRemoteServer { | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothgattremoteserver-device | |
+ fn Device(&self) -> Root<BluetoothDevice> { | |
+ Root::from_ref(&*self.device) | |
+ } | |
+ | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothgattremoteserver-connected | |
+ fn Connected(&self) -> bool { | |
+ self.connected | |
+ } | |
+} | |
diff --git a/components/script/dom/bluetoothgattservice.rs b/components/script/dom/bluetoothgattservice.rs | |
new file mode 100644 | |
index 0000000..dd72bd4 | |
--- /dev/null | |
+++ b/components/script/dom/bluetoothgattservice.rs | |
@@ -0,0 +1,58 @@ | |
+/* This Source Code Form is subject to the terms of the Mozilla Public | |
+ * License, v. 2.0. If a copy of the MPL was not distributed with this | |
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
+ | |
+extern crate uuid; | |
+use dom::bindings::codegen::Bindings::BluetoothGATTServiceBinding; | |
+use dom::bindings::codegen::Bindings::BluetoothGATTServiceBinding::BluetoothGATTServiceMethods; | |
+use dom::bindings::global::GlobalRef; | |
+use dom::bindings::js::{JS, Root}; | |
+use dom::bindings::reflector::{Reflector, reflect_dom_object}; | |
+use dom::bluetoothdevice::BluetoothDevice; | |
+use util::str::DOMString; | |
+use uuid::Uuid; | |
+ | |
+#[dom_struct] | |
+pub struct BluetoothGATTService { | |
+ reflector_: Reflector, | |
+ device: JS<BluetoothDevice>, | |
+ isPrimary: bool, | |
+ uuid: Uuid, | |
+} | |
+ | |
+impl BluetoothGATTService { | |
+ pub fn new_inherited(device: &BluetoothDevice, isPrimary: bool, uuid: Uuid) -> BluetoothGATTService { | |
+ BluetoothGATTService { | |
+ reflector_: Reflector::new(), | |
+ device: JS::from_ref(device), | |
+ isPrimary: isPrimary, | |
+ uuid: uuid, | |
+ } | |
+ } | |
+ | |
+ pub fn new(global: GlobalRef, device: &BluetoothDevice, isPrimary: bool, uuid: Uuid) -> Root<BluetoothGATTService> { | |
+ reflect_dom_object(box BluetoothGATTService::new_inherited( | |
+ device, | |
+ isPrimary, | |
+ uuid), | |
+ global, | |
+ BluetoothGATTServiceBinding::Wrap) | |
+ } | |
+} | |
+ | |
+impl BluetoothGATTServiceMethods for BluetoothGATTService { | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothgattservice-device | |
+ fn Device(&self) -> Root<BluetoothDevice> { | |
+ Root::from_ref(&*self.device) | |
+ } | |
+ | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothgattservice-uuid | |
+ fn IsPrimary(&self) -> bool { | |
+ self.isPrimary | |
+ } | |
+ | |
+ // https://webbluetoothcg.github.io/web-bluetooth/#dom-bluetoothgattservice-uuid | |
+ fn Uuid(&self) -> DOMString { | |
+ DOMString::from_string(self.uuid.to_simple_string().clone()) | |
+ } | |
+} | |
diff --git a/components/script/dom/bluetoothuuid.rs b/components/script/dom/bluetoothuuid.rs | |
index 65a64f5..6756c40 100644 | |
--- a/components/script/dom/bluetoothuuid.rs | |
+++ b/components/script/dom/bluetoothuuid.rs | |
@@ -13,6 +13,7 @@ pub struct BluetoothUUID { | |
reflector_: Reflector, | |
} | |
+ | |
impl BluetoothUUID { | |
pub fn CanonicalUUID(_: GlobalRef, _alias: u32) -> DOMString { | |
DOMString::new() | |
diff --git a/components/script/dom/mod.rs b/components/script/dom/mod.rs | |
index a91e2d1..3423c3a 100644 | |
--- a/components/script/dom/mod.rs | |
+++ b/components/script/dom/mod.rs | |
@@ -221,6 +221,8 @@ pub mod bluetooth; | |
pub mod bluetoothadvertisingdata; | |
pub mod bluetoothcharacteristicproperties; | |
pub mod bluetoothdevice; | |
+pub mod bluetoothgattremoteserver; | |
+pub mod bluetoothgattservice; | |
pub mod bluetoothuuid; | |
pub mod browsingcontext; | |
pub mod canvasgradient; | |
diff --git a/components/script/dom/webidls/Bluetooth.webidl b/components/script/dom/webidls/Bluetooth.webidl | |
index b60d7c0..6084275 100644 | |
--- a/components/script/dom/webidls/Bluetooth.webidl | |
+++ b/components/script/dom/webidls/Bluetooth.webidl | |
@@ -13,4 +13,4 @@ interface Bluetooth { | |
// Bluetooth implements EventTarget; | |
// Bluetooth implements CharacteristicEventHandlers; | |
-// Bluetooth implements ServiceEventHandlers; | |
\ No newline at end of file | |
+// Bluetooth implements ServiceEventHandlers; | |
diff --git a/components/script/dom/webidls/BluetoothAdvertisingData.webidl b/components/script/dom/webidls/BluetoothAdvertisingData.webidl | |
index 7f3e3f5..4175261 100644 | |
--- a/components/script/dom/webidls/BluetoothAdvertisingData.webidl | |
+++ b/components/script/dom/webidls/BluetoothAdvertisingData.webidl | |
@@ -3,7 +3,7 @@ | |
* License, v. 2.0. If a copy of the MPL was not distributed with this | |
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
-// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothadvertisingdata | |
+//https://webbluetoothcg.github.io/web-bluetooth/#bluetoothadvertisingdata | |
interface BluetoothAdvertisingData { | |
readonly attribute unsigned short? appearance; | |
diff --git a/components/script/dom/webidls/BluetoothDevice.webidl b/components/script/dom/webidls/BluetoothDevice.webidl | |
index ab6a804..d69b483 100644 | |
--- a/components/script/dom/webidls/BluetoothDevice.webidl | |
+++ b/components/script/dom/webidls/BluetoothDevice.webidl | |
@@ -20,7 +20,7 @@ interface BluetoothDevice { | |
readonly attribute unsigned long? vendorID; | |
readonly attribute unsigned long? productID; | |
readonly attribute unsigned long? productVersion; | |
- // readonly attribute BluetoothGATTRemoteServer? gattServer; | |
- // readonly attribute UUID[] uuids; | |
+ readonly attribute BluetoothGATTRemoteServer? gattServer; | |
+ //readonly attribute UUID[] uuids; | |
//Promise<BluetoothGATTRemoteServer> connectGATT(); | |
}; | |
diff --git a/components/script/dom/webidls/BluetoothGATTRemoteServer.webidl b/components/script/dom/webidls/BluetoothGATTRemoteServer.webidl | |
new file mode 100644 | |
index 0000000..34eb4fa | |
--- /dev/null | |
+++ b/components/script/dom/webidls/BluetoothGATTRemoteServer.webidl | |
@@ -0,0 +1,16 @@ | |
+/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ | |
+/* This Source Code Form is subject to the terms of the Mozilla Public | |
+ * License, v. 2.0. If a copy of the MPL was not distributed with this | |
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
+ | |
+//https://webbluetoothcg.github.io/web-bluetooth/#bluetoothgattremoteserver | |
+ | |
+interface BluetoothGATTRemoteServer { | |
+ readonly attribute BluetoothDevice device; | |
+ | |
+ readonly attribute boolean connected; | |
+ | |
+ //void disconnect(); | |
+ //Promise<BluetoothGATTService> getPrimaryService(BluetoothServiceUUID service); | |
+ //Promise<sequence<BluetoothGATTService>>getPrimaryServices(optional BluetoothServiceUUID service); | |
+}; | |
diff --git a/components/script/dom/webidls/BluetoothGATTService.webidl b/components/script/dom/webidls/BluetoothGATTService.webidl | |
new file mode 100644 | |
index 0000000..57f2b6a | |
--- /dev/null | |
+++ b/components/script/dom/webidls/BluetoothGATTService.webidl | |
@@ -0,0 +1,17 @@ | |
+/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ | |
+/* This Source Code Form is subject to the terms of the Mozilla Public | |
+ * License, v. 2.0. If a copy of the MPL was not distributed with this | |
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
+ | |
+// https://webbluetoothcg.github.io/web-bluetooth/#bluetoothgattservice | |
+ | |
+interface BluetoothGATTService { | |
+ readonly attribute BluetoothDevice device; | |
+ readonly attribute boolean isPrimary; | |
+ readonly attribute UUID uuid; | |
+ //Promise<BluetoothGATTCharacteristic>getCharacteristic(BluetoothCharacteristicUUID characteristic); | |
+ //Promise<sequence<BluetoothGATTCharacteristic>> | |
+ //getCharacteristics(optional BluetoothCharacteristicUUID characteristic); | |
+ //Promise<BluetoothGATTService>getIncludedService(BluetoothServiceUUID service); | |
+ //Promise<sequence<BluetoothGATTService>>getIncludedServices(optional BluetoothServiceUUID service); | |
+}; | |
diff --git a/python/tidy.py b/python/tidy.py | |
index eada4fb..243cbed 100644 | |
--- a/python/tidy.py | |
+++ b/python/tidy.py | |
@@ -445,6 +445,7 @@ def check_webidl_spec(file_name, contents): | |
"//xhr.spec.whatwg.org", | |
"//w3c.github.io", | |
"//heycam.github.io/webidl", | |
+ "//webbluetoothcg.github.io/web-bluetooth/", | |
# Not a URL | |
"// This interface is entirely internal to Servo, and should not be" + | |
" accessible to\n// web pages." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment