mirror of
https://github.com/servo/servo.git
synced 2025-06-10 09:33:13 +00:00
Add WebIDL, from UI Events working draft. Implement script type for event. Note that actually firing InputEvents is not part of this commit.
73 lines
2.6 KiB
Rust
73 lines
2.6 KiB
Rust
/* 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::InputEventBinding::{self, InputEventMethods};
|
|
use dom::bindings::codegen::Bindings::UIEventBinding::UIEventBinding::UIEventMethods;
|
|
use dom::bindings::error::Fallible;
|
|
use dom::bindings::js::{Root, RootedReference};
|
|
use dom::bindings::reflector::reflect_dom_object;
|
|
use dom::bindings::str::DOMString;
|
|
use dom::uievent::UIEvent;
|
|
use dom::window::Window;
|
|
use dom_struct::dom_struct;
|
|
|
|
#[dom_struct]
|
|
pub struct InputEvent {
|
|
uievent: UIEvent,
|
|
data: Option<DOMString>,
|
|
is_composing: bool,
|
|
}
|
|
|
|
impl InputEvent {
|
|
pub fn new(window: &Window,
|
|
type_: DOMString,
|
|
can_bubble: bool,
|
|
cancelable: bool,
|
|
view: Option<&Window>,
|
|
detail: i32,
|
|
data: Option<DOMString>,
|
|
is_composing: bool) -> Root<InputEvent> {
|
|
let ev = reflect_dom_object(box InputEvent {
|
|
uievent: UIEvent::new_inherited(),
|
|
data: data,
|
|
is_composing: is_composing,
|
|
},
|
|
window,
|
|
InputEventBinding::Wrap);
|
|
ev.uievent.InitUIEvent(type_, can_bubble, cancelable, view, detail);
|
|
ev
|
|
}
|
|
|
|
pub fn Constructor(window: &Window,
|
|
type_: DOMString,
|
|
init: &InputEventBinding::InputEventInit)
|
|
-> Fallible<Root<InputEvent>> {
|
|
let event = InputEvent::new(window,
|
|
type_,
|
|
init.parent.parent.bubbles,
|
|
init.parent.parent.cancelable,
|
|
init.parent.view.r(),
|
|
init.parent.detail,
|
|
init.data.clone(),
|
|
init.isComposing);
|
|
Ok(event)
|
|
}
|
|
}
|
|
|
|
impl InputEventMethods for InputEvent {
|
|
// https://w3c.github.io/uievents/#dom-inputevent-data
|
|
fn GetData(&self) -> Option<DOMString> {
|
|
self.data.clone()
|
|
}
|
|
|
|
// https://w3c.github.io/uievents/#dom-inputevent-iscomposing
|
|
fn IsComposing(&self) -> bool {
|
|
self.is_composing
|
|
}
|
|
|
|
// https://dom.spec.whatwg.org/#dom-event-istrusted
|
|
fn IsTrusted(&self) -> bool {
|
|
self.uievent.IsTrusted()
|
|
}
|
|
}
|