diff options
Diffstat (limited to 'components/script/dom/forcetouchevent.rs')
-rw-r--r-- | components/script/dom/forcetouchevent.rs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/components/script/dom/forcetouchevent.rs b/components/script/dom/forcetouchevent.rs new file mode 100644 index 00000000000..b0fd6376760 --- /dev/null +++ b/components/script/dom/forcetouchevent.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::ForceTouchEventBinding; +use dom::bindings::codegen::Bindings::ForceTouchEventBinding::ForceTouchEventMethods; +use dom::bindings::codegen::Bindings::UIEventBinding::UIEventMethods; +use dom::bindings::global::GlobalRef; +use dom::bindings::inheritance::Castable; +use dom::bindings::js::{Root}; +use dom::bindings::num::Finite; +use dom::bindings::reflector::reflect_dom_object; +use dom::uievent::UIEvent; +use dom::window::Window; +use util::str::DOMString; + +#[dom_struct] +pub struct ForceTouchEvent { + uievent: UIEvent, + force: f32, +} + +impl ForceTouchEvent { + fn new_inherited(force: f32) -> ForceTouchEvent { + ForceTouchEvent { + uievent: UIEvent::new_inherited(), + force: force, + } + } + + pub fn new(window: &Window, + type_: DOMString, + force: f32) -> Root<ForceTouchEvent> { + let event = box ForceTouchEvent::new_inherited(force); + let ev = reflect_dom_object(event, GlobalRef::Window(window), ForceTouchEventBinding::Wrap); + ev.upcast::<UIEvent>().InitUIEvent(type_, true, true, Some(window), 0); + ev + } +} + +impl<'a> ForceTouchEventMethods for &'a ForceTouchEvent { + + fn ServoForce(&self) -> Finite<f32> { + Finite::wrap(self.force) + } + + fn SERVO_FORCE_AT_MOUSE_DOWN(&self) -> Finite<f32> { + Finite::wrap(1.0) + } + + fn SERVO_FORCE_AT_FORCE_MOUSE_DOWN(&self) -> Finite<f32> { + Finite::wrap(2.0) + } + + // https://dom.spec.whatwg.org/#dom-event-istrusted + fn IsTrusted(&self) -> bool { + self.uievent.IsTrusted() + } +} |