mirror of
https://github.com/servo/servo.git
synced 2025-07-24 15:50:21 +01:00
parent
902c16497c
commit
a1804effaf
11 changed files with 34 additions and 33 deletions
|
@ -7,7 +7,7 @@ use dom::bindings::codegen::InheritTypes::{EventCast, EventTargetCast};
|
|||
use dom::bindings::js::{JSRef, Temporary, OptionalRootable};
|
||||
use dom::element::{Element, ActivationElementHelpers};
|
||||
use dom::event::{Event, EventHelpers};
|
||||
use dom::eventtarget::{EventTarget, EventTargetHelpers};
|
||||
use dom::eventtarget::EventTarget;
|
||||
use dom::mouseevent::MouseEvent;
|
||||
use dom::node::window_from_node;
|
||||
|
||||
|
@ -53,8 +53,7 @@ pub trait Activatable : Copy {
|
|||
0, 0, 0, 0, ctrlKey, shiftKey, altKey, metaKey,
|
||||
0, None).root();
|
||||
let event: JSRef<Event> = EventCast::from_ref(mouse.r());
|
||||
event.set_trusted(true);
|
||||
target.dispatch_event(event);
|
||||
event.fire(target);
|
||||
|
||||
// Step 5
|
||||
if event.DefaultPrevented() {
|
||||
|
|
|
@ -7,7 +7,6 @@ use dom::bindings::cell::DOMRefCell;
|
|||
use dom::bindings::codegen::Bindings::DocumentBinding;
|
||||
use dom::bindings::codegen::Bindings::DocumentBinding::{DocumentMethods, DocumentReadyState};
|
||||
use dom::bindings::codegen::Bindings::EventHandlerBinding::EventHandlerNonNull;
|
||||
use dom::bindings::codegen::Bindings::EventTargetBinding::EventTargetMethods;
|
||||
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
|
||||
use dom::bindings::codegen::Bindings::NodeFilterBinding::NodeFilter;
|
||||
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
|
||||
|
@ -35,7 +34,7 @@ use dom::documenttype::DocumentType;
|
|||
use dom::domimplementation::DOMImplementation;
|
||||
use dom::element::{Element, ElementCreator, AttributeHandlers, get_attribute_parts};
|
||||
use dom::element::ElementTypeId;
|
||||
use dom::event::{Event, EventBubbles, EventCancelable};
|
||||
use dom::event::{Event, EventBubbles, EventCancelable, EventHelpers};
|
||||
use dom::eventtarget::{EventTarget, EventTargetTypeId, EventTargetHelpers};
|
||||
use dom::htmlanchorelement::HTMLAnchorElement;
|
||||
use dom::htmlcollection::{HTMLCollection, CollectionFilter};
|
||||
|
@ -344,7 +343,7 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> {
|
|||
EventBubbles::DoesNotBubble,
|
||||
EventCancelable::NotCancelable).root();
|
||||
let target: JSRef<EventTarget> = EventTargetCast::from_ref(self);
|
||||
let _ = target.DispatchEvent(event.r());
|
||||
let _ = event.r().fire(target);
|
||||
}
|
||||
|
||||
/// Return the element that currently has focus.
|
||||
|
|
|
@ -32,8 +32,8 @@ use dom::domrect::DOMRect;
|
|||
use dom::domrectlist::DOMRectList;
|
||||
use dom::document::{Document, DocumentHelpers, LayoutDocumentHelpers};
|
||||
use dom::domtokenlist::DOMTokenList;
|
||||
use dom::event::Event;
|
||||
use dom::eventtarget::{EventTarget, EventTargetTypeId, EventTargetHelpers};
|
||||
use dom::event::{Event, EventHelpers};
|
||||
use dom::eventtarget::{EventTarget, EventTargetTypeId};
|
||||
use dom::htmlbodyelement::{HTMLBodyElement, HTMLBodyElementHelpers};
|
||||
use dom::htmlcollection::HTMLCollection;
|
||||
use dom::htmlelement::HTMLElementTypeId;
|
||||
|
@ -1512,7 +1512,7 @@ impl<'a> ActivationElementHelpers<'a> for JSRef<'a, Element> {
|
|||
Some(elem) => {
|
||||
// Step 5-6
|
||||
elem.pre_click_activation();
|
||||
target.dispatch_event(event);
|
||||
event.fire(target);
|
||||
if !event.DefaultPrevented() {
|
||||
// post click activation
|
||||
elem.activation_behavior();
|
||||
|
@ -1521,10 +1521,10 @@ impl<'a> ActivationElementHelpers<'a> for JSRef<'a, Element> {
|
|||
}
|
||||
}
|
||||
// Step 6
|
||||
None => {target.dispatch_event(event);}
|
||||
None => {event.fire(target);}
|
||||
},
|
||||
// Step 6
|
||||
None => {target.dispatch_event(event);}
|
||||
None => {event.fire(target);}
|
||||
}
|
||||
// Step 7
|
||||
self.set_click_in_progress(false);
|
||||
|
|
|
@ -9,7 +9,7 @@ use dom::bindings::error::Fallible;
|
|||
use dom::bindings::global::GlobalRef;
|
||||
use dom::bindings::js::{MutNullableJS, JSRef, Temporary};
|
||||
use dom::bindings::utils::{Reflector, reflect_dom_object};
|
||||
use dom::eventtarget::EventTarget;
|
||||
use dom::eventtarget::{EventTarget, EventTargetHelpers};
|
||||
use util::str::DOMString;
|
||||
|
||||
use std::borrow::ToOwned;
|
||||
|
@ -245,10 +245,17 @@ impl<'a> EventMethods for JSRef<'a, Event> {
|
|||
|
||||
pub trait EventHelpers {
|
||||
fn set_trusted(self, trusted: bool);
|
||||
fn fire(self, target: JSRef<EventTarget>);
|
||||
}
|
||||
|
||||
impl<'a> EventHelpers for JSRef<'a, Event> {
|
||||
fn set_trusted(self, trusted: bool) {
|
||||
self.trusted.set(trusted);
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/webappapis.html#fire-a-simple-event
|
||||
fn fire(self, target: JSRef<EventTarget>) {
|
||||
self.set_trusted(true);
|
||||
target.dispatch_event(self);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ use dom::bindings::error::{Fallible, report_pending_exception};
|
|||
use dom::bindings::error::Error::InvalidState;
|
||||
use dom::bindings::js::JSRef;
|
||||
use dom::bindings::utils::{Reflectable, Reflector};
|
||||
use dom::event::Event;
|
||||
use dom::event::{Event, EventHelpers};
|
||||
use dom::eventdispatcher::dispatch_event;
|
||||
use dom::node::NodeTypeId;
|
||||
use dom::workerglobalscope::WorkerGlobalScopeTypeId;
|
||||
|
@ -303,6 +303,7 @@ impl<'a> EventTargetMethods for JSRef<'a, EventTarget> {
|
|||
if event.dispatching() || !event.initialized() {
|
||||
return Err(InvalidState);
|
||||
}
|
||||
event.set_trusted(false);
|
||||
Ok(self.dispatch_event(event))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
|
||||
use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods;
|
||||
use dom::bindings::codegen::Bindings::EventBinding::EventMethods;
|
||||
use dom::bindings::codegen::Bindings::EventTargetBinding::EventTargetMethods;
|
||||
use dom::bindings::codegen::Bindings::HTMLFormElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLFormElementBinding::HTMLFormElementMethods;
|
||||
use dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputElementMethods;
|
||||
|
@ -165,9 +164,8 @@ impl<'a> HTMLFormElementHelpers for JSRef<'a, HTMLFormElement> {
|
|||
"submit".to_owned(),
|
||||
EventBubbles::Bubbles,
|
||||
EventCancelable::Cancelable).root();
|
||||
event.r().set_trusted(true);
|
||||
let target: JSRef<EventTarget> = EventTargetCast::from_ref(self);
|
||||
target.DispatchEvent(event.r()).ok();
|
||||
event.r().fire(target);
|
||||
if event.r().DefaultPrevented() {
|
||||
return;
|
||||
}
|
||||
|
@ -353,7 +351,7 @@ impl<'a> HTMLFormElementHelpers for JSRef<'a, HTMLFormElement> {
|
|||
EventBubbles::Bubbles,
|
||||
EventCancelable::Cancelable).root();
|
||||
let target: JSRef<EventTarget> = EventTargetCast::from_ref(self);
|
||||
target.DispatchEvent(event.r()).ok();
|
||||
event.r().fire(target);
|
||||
if event.r().DefaultPrevented() {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -8,7 +8,6 @@ use dom::attr::AttrHelpers;
|
|||
use dom::bindings::cell::DOMRefCell;
|
||||
use dom::bindings::codegen::Bindings::AttrBinding::AttrMethods;
|
||||
use dom::bindings::codegen::Bindings::EventBinding::EventMethods;
|
||||
use dom::bindings::codegen::Bindings::EventTargetBinding::EventTargetMethods;
|
||||
use dom::bindings::codegen::Bindings::HTMLInputElementBinding;
|
||||
use dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputElementMethods;
|
||||
use dom::bindings::codegen::InheritTypes::{ElementCast, HTMLElementCast, HTMLInputElementCast, NodeCast};
|
||||
|
@ -763,17 +762,15 @@ impl<'a> Activatable for JSRef<'a, HTMLInputElement> {
|
|||
"input".to_owned(),
|
||||
EventBubbles::Bubbles,
|
||||
EventCancelable::NotCancelable).root();
|
||||
event.r().set_trusted(true);
|
||||
let target: JSRef<EventTarget> = EventTargetCast::from_ref(*self);
|
||||
target.DispatchEvent(event.r()).ok();
|
||||
event.r().fire(target);
|
||||
|
||||
let event = Event::new(GlobalRef::Window(win.r()),
|
||||
"change".to_owned(),
|
||||
EventBubbles::Bubbles,
|
||||
EventCancelable::NotCancelable).root();
|
||||
event.r().set_trusted(true);
|
||||
let target: JSRef<EventTarget> = EventTargetCast::from_ref(*self);
|
||||
target.DispatchEvent(event.r()).ok();
|
||||
event.r().fire(target);
|
||||
}
|
||||
},
|
||||
_ => ()
|
||||
|
|
|
@ -18,7 +18,7 @@ use dom::bindings::js::{JSRef, Temporary, OptionalRootable};
|
|||
use dom::bindings::refcounted::Trusted;
|
||||
use dom::document::Document;
|
||||
use dom::element::{Element, AttributeHandlers, ElementCreator};
|
||||
use dom::eventtarget::{EventTarget, EventTargetTypeId, EventTargetHelpers};
|
||||
use dom::eventtarget::{EventTarget, EventTargetTypeId};
|
||||
use dom::event::{Event, EventBubbles, EventCancelable, EventHelpers};
|
||||
use dom::element::ElementTypeId;
|
||||
use dom::htmlelement::{HTMLElement, HTMLElementTypeId};
|
||||
|
@ -243,9 +243,8 @@ impl<'a> HTMLScriptElementHelpers for JSRef<'a, HTMLScriptElement> {
|
|||
"load".to_owned(),
|
||||
EventBubbles::DoesNotBubble,
|
||||
EventCancelable::NotCancelable).root();
|
||||
event.r().set_trusted(true);
|
||||
let target: JSRef<EventTarget> = EventTargetCast::from_ref(self);
|
||||
target.dispatch_event(event.r());
|
||||
event.r().fire(target);
|
||||
}
|
||||
|
||||
fn is_javascript(self) -> bool {
|
||||
|
|
|
@ -10,8 +10,8 @@ use dom::bindings::error::Fallible;
|
|||
use dom::bindings::global::GlobalRef;
|
||||
use dom::bindings::js::{JSRef, Temporary};
|
||||
use dom::bindings::utils::reflect_dom_object;
|
||||
use dom::event::{Event, EventTypeId};
|
||||
use dom::eventtarget::{EventTarget, EventTargetHelpers};
|
||||
use dom::event::{Event, EventHelpers, EventTypeId};
|
||||
use dom::eventtarget::EventTarget;
|
||||
|
||||
use util::str::DOMString;
|
||||
|
||||
|
@ -83,7 +83,7 @@ impl MessageEvent {
|
|||
scope, "message".to_owned(), false, false, message,
|
||||
"".to_owned(), "".to_owned()).root();
|
||||
let event: JSRef<Event> = EventCast::from_ref(messageevent.r());
|
||||
target.dispatch_event(event);
|
||||
event.fire(target);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ use dom::bindings::refcounted::Trusted;
|
|||
use dom::bindings::str::ByteString;
|
||||
use dom::bindings::utils::{Reflectable, reflect_dom_object};
|
||||
use dom::document::Document;
|
||||
use dom::event::{Event, EventBubbles, EventCancelable};
|
||||
use dom::event::{Event, EventBubbles, EventCancelable, EventHelpers};
|
||||
use dom::eventtarget::{EventTarget, EventTargetHelpers, EventTargetTypeId};
|
||||
use dom::progressevent::ProgressEvent;
|
||||
use dom::urlsearchparams::URLSearchParamsHelpers;
|
||||
|
@ -792,7 +792,7 @@ impl<'a> PrivateXMLHttpRequestHelpers for JSRef<'a, XMLHttpRequest> {
|
|||
EventBubbles::DoesNotBubble,
|
||||
EventCancelable::Cancelable).root();
|
||||
let target: JSRef<EventTarget> = EventTargetCast::from_ref(self);
|
||||
target.dispatch_event(event.r());
|
||||
event.r().fire(target);
|
||||
}
|
||||
|
||||
fn process_partial_response(self, progress: XHRProgress) {
|
||||
|
@ -932,7 +932,7 @@ impl<'a> PrivateXMLHttpRequestHelpers for JSRef<'a, XMLHttpRequest> {
|
|||
EventTargetCast::from_ref(self)
|
||||
};
|
||||
let event: JSRef<Event> = EventCast::from_ref(progressevent.r());
|
||||
target.dispatch_event(event);
|
||||
event.fire(target);
|
||||
}
|
||||
|
||||
fn dispatch_upload_progress_event(self, type_: DOMString, partial_load: Option<u64>) {
|
||||
|
|
|
@ -1121,7 +1121,7 @@ impl ScriptTask {
|
|||
let event: JSRef<Event> = EventCast::from_ref(uievent.r());
|
||||
|
||||
let wintarget: JSRef<EventTarget> = EventTargetCast::from_ref(window.r());
|
||||
wintarget.dispatch_event(event);
|
||||
event.fire(wintarget);
|
||||
}
|
||||
None => ()
|
||||
}
|
||||
|
@ -1231,7 +1231,7 @@ impl ScriptTask {
|
|||
|
||||
let event: JSRef<Event> = EventCast::from_ref(mouse_event.r());
|
||||
let target: JSRef<EventTarget> = EventTargetCast::from_ref(top_most_node.r());
|
||||
target.dispatch_event(event);
|
||||
event.fire(target);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1391,6 +1391,7 @@ impl DocumentProgressHandler {
|
|||
EventCancelable::NotCancelable).root();
|
||||
let wintarget: JSRef<EventTarget> = EventTargetCast::from_ref(window.r());
|
||||
let doctarget: JSRef<EventTarget> = EventTargetCast::from_ref(document.r());
|
||||
event.set_trusted(true);
|
||||
let _ = wintarget.dispatch_event_with_target(doctarget, event.r());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue