diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 38306619fc41..487b93a01f34 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -550,8 +550,7 @@ impl Document { self.ready_state.set(state); - self.upcast::().fire_simple_event("readystatechange", - GlobalRef::Window(&self.window)); + self.upcast::().fire_simple_event("readystatechange"); } /// Return whether scripting is enabled or not @@ -1357,8 +1356,7 @@ impl Document { let doctarget = self.upcast::(); let _ = doctarget.fire_event("DOMContentLoaded", EventBubbles::Bubbles, - EventCancelable::NotCancelable, - GlobalRef::Window(self.window())); + EventCancelable::NotCancelable); self.window().reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery, @@ -1693,14 +1691,17 @@ impl DocumentMethods for Document { // https://html.spec.whatwg.org/multipage/#dom-document-hasfocus fn HasFocus(&self) -> bool { - let target = self; // Step 1. + // Step 1. + let target = self; let browsing_context = self.window.browsing_context(); let browsing_context = browsing_context.as_ref(); match browsing_context { Some(browsing_context) => { - let condidate = browsing_context.active_document(); // Step 2. - if condidate.node.get_unique_id() == target.node.get_unique_id() { // Step 3. + // Step 2. + let candidate = browsing_context.active_document(); + // Step 3. + if candidate == target { true } else { false //TODO Step 4. diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs index 38f737788ec1..314a123f0d70 100644 --- a/components/script/dom/eventtarget.rs +++ b/components/script/dom/eventtarget.rs @@ -11,7 +11,6 @@ use dom::bindings::codegen::Bindings::EventListenerBinding::EventListener; use dom::bindings::codegen::Bindings::EventTargetBinding::EventTargetMethods; use dom::bindings::codegen::UnionTypes::EventOrString; use dom::bindings::error::{Error, Fallible, report_pending_exception}; -use dom::bindings::global::GlobalRef; use dom::bindings::inheritance::{Castable, EventTargetTypeId}; use dom::bindings::js::Root; use dom::bindings::reflector::{Reflectable, Reflector}; @@ -331,17 +330,18 @@ impl EventTarget { } // https://html.spec.whatwg.org/multipage/#fire-a-simple-event - pub fn fire_simple_event(&self, name: &str, win: GlobalRef) -> Root { + pub fn fire_simple_event(&self, name: &str) -> Root { self.fire_event(name, EventBubbles::DoesNotBubble, - EventCancelable::NotCancelable, win) + EventCancelable::NotCancelable) } // https://dom.spec.whatwg.org/#concept-event-fire pub fn fire_event(&self, name: &str, bubbles: EventBubbles, - cancelable: EventCancelable, - win: GlobalRef) -> Root { - let event = Event::new(win, Atom::from(name), bubbles, cancelable); + cancelable: EventCancelable) + -> Root { + let global = self.global(); + let event = Event::new(global.r(), Atom::from(name), bubbles, cancelable); event.fire(self); diff --git a/components/script/dom/htmldetailselement.rs b/components/script/dom/htmldetailselement.rs index 947c0ee42d75..60a09c9e7607 100644 --- a/components/script/dom/htmldetailselement.rs +++ b/components/script/dom/htmldetailselement.rs @@ -5,7 +5,6 @@ use dom::attr::Attr; use dom::bindings::codegen::Bindings::HTMLDetailsElementBinding; use dom::bindings::codegen::Bindings::HTMLDetailsElementBinding::HTMLDetailsElementMethods; -use dom::bindings::global::GlobalRef; use dom::bindings::inheritance::Castable; use dom::bindings::js::Root; use dom::bindings::refcounted::Trusted; @@ -97,11 +96,8 @@ impl ToggleEventRunnable { impl Runnable for ToggleEventRunnable { fn handler(self: Box) { let target = self.element.root(); - let window = window_from_node(target.upcast::()); - if target.check_toggle_count(self.toggle_number) { - target.upcast::() - .fire_simple_event("toggle", GlobalRef::Window(window.r())); + target.upcast::().fire_simple_event("toggle"); } } } diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index 32838399a937..00e5b30889df 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -11,7 +11,6 @@ use dom::bindings::codegen::Bindings::HTMLFormElementBinding::HTMLFormElementMet use dom::bindings::codegen::Bindings::HTMLInputElementBinding::HTMLInputElementMethods; use dom::bindings::codegen::Bindings::HTMLTextAreaElementBinding::HTMLTextAreaElementMethods; use dom::bindings::conversions::DerivedFrom; -use dom::bindings::global::GlobalRef; use dom::bindings::inheritance::{Castable, ElementTypeId, HTMLElementTypeId, NodeTypeId}; use dom::bindings::js::{JS, MutNullableHeap, Root}; use dom::bindings::reflector::Reflectable; @@ -228,7 +227,6 @@ impl HTMLFormElement { pub fn submit(&self, submit_method_flag: SubmittedFrom, submitter: FormSubmitter) { // Step 1 let doc = document_from_node(self); - let win = window_from_node(self); let base = doc.url(); // TODO: Handle browsing contexts // Step 4 @@ -237,8 +235,7 @@ impl HTMLFormElement { { if self.interactive_validation().is_err() { // TODO: Implement event handlers on all form control elements - self.upcast::() - .fire_simple_event("invalid", GlobalRef::Window(win.r())); + self.upcast::().fire_simple_event("invalid"); return; } } @@ -247,8 +244,7 @@ impl HTMLFormElement { let event = self.upcast::() .fire_event("submit", EventBubbles::Bubbles, - EventCancelable::Cancelable, - GlobalRef::Window(win.r())); + EventCancelable::Cancelable); if event.DefaultPrevented() { return; } @@ -302,6 +298,7 @@ impl HTMLFormElement { } // This is wrong. https://html.spec.whatwg.org/multipage/#planned-navigation + let win = window_from_node(self); win.main_thread_script_chan().send(MainThreadScriptMsg::Navigate( win.pipeline(), load_data)).unwrap(); } @@ -341,13 +338,11 @@ impl HTMLFormElement { // Step 4 if invalid_controls.is_empty() { return Ok(()); } // Step 5-6 - let win = window_from_node(self); let unhandled_invalid_controls = invalid_controls.into_iter().filter_map(|field| { let event = field.as_event_target() .fire_event("invalid", EventBubbles::DoesNotBubble, - EventCancelable::Cancelable, - GlobalRef::Window(win.r())); + EventCancelable::Cancelable); if !event.DefaultPrevented() { return Some(field); } None }).collect::>(); @@ -469,12 +464,10 @@ impl HTMLFormElement { self.marked_for_reset.set(true); } - let win = window_from_node(self); let event = self.upcast::() .fire_event("reset", EventBubbles::Bubbles, - EventCancelable::Cancelable, - GlobalRef::Window(win.r())); + EventCancelable::Cancelable); if event.DefaultPrevented() { return; } diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index fd8788480a6a..80787b18c5eb 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -210,10 +210,10 @@ impl HTMLIFrameElement { // TODO Step 3 - set child document `mut iframe load` flag // Step 4 - let window = window_from_node(self); - self.upcast::().fire_simple_event("load", GlobalRef::Window(window.r())); + self.upcast::().fire_simple_event("load"); // TODO Step 5 - unset child document `mut iframe load` flag + let window = window_from_node(self); window.reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery, ReflowReason::IFrameLoadEvent); diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index a6b124939f04..cf03f43ca999 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -82,11 +82,12 @@ impl Runnable for ImageResponseHandlerRunnable { document.content_changed(element.upcast(), NodeDamage::OtherNodeDamage); // Fire image.onload - let window = window_from_node(document.r()); if trigger_image_load { - element.upcast::().fire_simple_event("load", GlobalRef::Window(window.r())); + element.upcast::().fire_simple_event("load"); } + // Trigger reflow + let window = window_from_node(document.r()); window.add_pending_reflow(); } } diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index e7116b5d8cec..6e7557465a24 100644 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -866,17 +866,13 @@ impl Activatable for HTMLInputElement { // https://html.spec.whatwg.org/multipage/#checkbox-state-(type=checkbox):activation-behavior // https://html.spec.whatwg.org/multipage/#radio-button-state-(type=radio):activation-behavior if self.mutable() { - let win = window_from_node(self); let target = self.upcast::(); - target.fire_event("input", EventBubbles::Bubbles, - EventCancelable::NotCancelable, - GlobalRef::Window(win.r())); + EventCancelable::NotCancelable); target.fire_event("change", EventBubbles::Bubbles, - EventCancelable::NotCancelable, - GlobalRef::Window(win.r())); + EventCancelable::NotCancelable); } }, _ => () diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs index e3f6de6b49ad..192c793906f3 100644 --- a/components/script/dom/websocket.rs +++ b/components/script/dom/websocket.rs @@ -487,7 +487,7 @@ impl Runnable for ConnectionEstablishedTask { // Step 5: Cookies. // Step 6. - ws.upcast().fire_simple_event("open", global.r()); + ws.upcast().fire_simple_event("open"); } } @@ -537,8 +537,7 @@ impl Runnable for CloseTask { if self.failed { ws.upcast().fire_event("error", EventBubbles::DoesNotBubble, - EventCancelable::Cancelable, - global.r()); + EventCancelable::Cancelable); } // Step 3. diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs index b3a9b97857a0..685dcd6ab43b 100644 --- a/components/script/dom/worker.rs +++ b/components/script/dom/worker.rs @@ -122,8 +122,7 @@ impl Worker { pub fn dispatch_simple_error(address: TrustedWorkerAddress) { let worker = address.root(); - let global = worker.r().global(); - worker.upcast().fire_simple_event("error", global.r()); + worker.upcast().fire_simple_event("error"); } pub fn handle_error_message(address: TrustedWorkerAddress, message: DOMString,