diff options
author | zakorgyula <gyula.zakor@gmail.com> | 2016-10-03 22:09:52 +0200 |
---|---|---|
committer | zakorgyula <gyula.zakor@gmail.com> | 2016-11-04 12:36:23 +0100 |
commit | e15d54edfd0bb63132137b7b2905a3da253bf2cf (patch) | |
tree | 1923a16e4504d0a678f36d7eaad6d30410c7c95b /components/script/dom/testrunner.rs | |
parent | 4eec2c6ddcf8928546eb551f19dc975b08a7573f (diff) | |
download | servo-e15d54edfd0bb63132137b7b2905a3da253bf2cf.tar.gz servo-e15d54edfd0bb63132137b7b2905a3da253bf2cf.zip |
WebBluetooth Test API
Diffstat (limited to 'components/script/dom/testrunner.rs')
-rw-r--r-- | components/script/dom/testrunner.rs | 53 |
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)) + }, + } + } +} |