aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/testrunner.rs
diff options
context:
space:
mode:
authorzakorgyula <gyula.zakor@gmail.com>2016-10-03 22:09:52 +0200
committerzakorgyula <gyula.zakor@gmail.com>2016-11-04 12:36:23 +0100
commite15d54edfd0bb63132137b7b2905a3da253bf2cf (patch)
tree1923a16e4504d0a678f36d7eaad6d30410c7c95b /components/script/dom/testrunner.rs
parent4eec2c6ddcf8928546eb551f19dc975b08a7573f (diff)
downloadservo-e15d54edfd0bb63132137b7b2905a3da253bf2cf.tar.gz
servo-e15d54edfd0bb63132137b7b2905a3da253bf2cf.zip
WebBluetooth Test API
Diffstat (limited to 'components/script/dom/testrunner.rs')
-rw-r--r--components/script/dom/testrunner.rs53
1 files changed, 53 insertions, 0 deletions
diff --git a/components/script/dom/testrunner.rs b/components/script/dom/testrunner.rs
new file mode 100644
index 00000000000..f96ab6dbf65
--- /dev/null
+++ b/components/script/dom/testrunner.rs
@@ -0,0 +1,53 @@
+/* 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 bluetooth_traits::BluetoothMethodMsg;
+use dom::bindings::codegen::Bindings::TestRunnerBinding;
+use dom::bindings::codegen::Bindings::TestRunnerBinding::TestRunnerMethods;
+use dom::bindings::error::{Error, ErrorResult};
+use dom::bindings::js::Root;
+use dom::bindings::reflector::{Reflectable, Reflector, reflect_dom_object};
+use dom::bindings::str::DOMString;
+use dom::globalscope::GlobalScope;
+use ipc_channel::ipc::{self, IpcSender};
+
+// https://webbluetoothcg.github.io/web-bluetooth/tests#test-runner
+ #[dom_struct]
+pub struct TestRunner {
+ reflector_: Reflector,
+}
+
+impl TestRunner {
+ pub fn new_inherited() -> TestRunner {
+ TestRunner {
+ reflector_: Reflector::new(),
+ }
+ }
+
+ pub fn new(global: &GlobalScope) -> Root<TestRunner> {
+ reflect_dom_object(box TestRunner::new_inherited(),
+ global,
+ TestRunnerBinding::Wrap)
+ }
+
+ fn get_bluetooth_thread(&self) -> IpcSender<BluetoothMethodMsg> {
+ self.global().as_window().bluetooth_thread()
+ }
+}
+
+impl TestRunnerMethods for TestRunner {
+ // https://webbluetoothcg.github.io/web-bluetooth/tests#setBluetoothMockDataSet
+ fn SetBluetoothMockDataSet(&self, dataSetName: DOMString) -> ErrorResult {
+ let (sender, receiver) = ipc::channel().unwrap();
+ self.get_bluetooth_thread().send(BluetoothMethodMsg::Test(String::from(dataSetName), sender)).unwrap();
+ match receiver.recv().unwrap().into() {
+ Ok(()) => {
+ Ok(())
+ },
+ Err(error) => {
+ Err(Error::from(error))
+ },
+ }
+ }
+}