diff options
author | Corey Farwell <coreyf@rwell.org> | 2016-11-02 23:49:52 -0400 |
---|---|---|
committer | Corey Farwell <coreyf@rwell.org> | 2016-11-03 17:04:30 -0400 |
commit | f447040ea98d5a92f95d6dd3116939544441b5d8 (patch) | |
tree | 5aad6d951310a4ef5d8271c01dab15fe5c80d518 | |
parent | 80575c3d2e033e27bd4c222662e405f5714d1a4d (diff) | |
download | servo-f447040ea98d5a92f95d6dd3116939544441b5d8.tar.gz servo-f447040ea98d5a92f95d6dd3116939544441b5d8.zip |
Migrate `EventTarget` event firing functions to use `Atom`s.
This allows us to utilize more `atom` macros.
-rw-r--r-- | components/atoms/static_atoms.txt | 4 | ||||
-rw-r--r-- | components/script/dom/document.rs | 2 | ||||
-rw-r--r-- | components/script/dom/event.rs | 6 | ||||
-rw-r--r-- | components/script/dom/eventtarget.rs | 12 | ||||
-rw-r--r-- | components/script/dom/htmldetailselement.rs | 2 | ||||
-rw-r--r-- | components/script/dom/htmlformelement.rs | 8 | ||||
-rw-r--r-- | components/script/dom/htmliframeelement.rs | 2 | ||||
-rw-r--r-- | components/script/dom/htmlimageelement.rs | 8 | ||||
-rw-r--r-- | components/script/dom/htmlinputelement.rs | 8 | ||||
-rw-r--r-- | components/script/dom/htmllinkelement.rs | 4 | ||||
-rw-r--r-- | components/script/dom/mediaquerylist.rs | 2 | ||||
-rw-r--r-- | components/script/dom/serviceworker.rs | 5 | ||||
-rw-r--r-- | components/script/dom/serviceworkercontainer.rs | 3 | ||||
-rw-r--r-- | components/script/dom/serviceworkerglobalscope.rs | 3 | ||||
-rw-r--r-- | components/script/dom/websocket.rs | 4 | ||||
-rw-r--r-- | components/script/dom/worker.rs | 2 |
16 files changed, 42 insertions, 33 deletions
diff --git a/components/atoms/static_atoms.txt b/components/atoms/static_atoms.txt index d050346177f..83cddbbf7e6 100644 --- a/components/atoms/static_atoms.txt +++ b/components/atoms/static_atoms.txt @@ -70,4 +70,8 @@ keydown abort beforescriptexecute afterscriptexecute +invalid +change +open +toggle diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 3878a8f23ee..11367b739c5 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -606,7 +606,7 @@ impl Document { self.ready_state.set(state); - self.upcast::<EventTarget>().fire_event("readystatechange"); + self.upcast::<EventTarget>().fire_event(atom!("readystatechange")); } /// Return whether scripting is enabled or not diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs index ca8d5c8c7ac..96e1d3658cc 100644 --- a/components/script/dom/event.rs +++ b/components/script/dom/event.rs @@ -330,7 +330,9 @@ impl Runnable for EventRunnable { fn handler(self: Box<EventRunnable>) { let target = self.target.root(); - target.fire_event_with_params(&*self.name, self.bubbles, self.cancelable); + let bubbles = self.bubbles.clone(); + let cancelable = self.cancelable.clone(); + target.fire_event_with_params(self.name, bubbles, cancelable); } } @@ -345,6 +347,6 @@ impl Runnable for SimpleEventRunnable { fn handler(self: Box<SimpleEventRunnable>) { let target = self.target.root(); - target.fire_event(&*self.name); + target.fire_event(self.name); } } diff --git a/components/script/dom/eventtarget.rs b/components/script/dom/eventtarget.rs index 5c65ec195a8..48ba920ad60 100644 --- a/components/script/dom/eventtarget.rs +++ b/components/script/dom/eventtarget.rs @@ -491,28 +491,28 @@ impl EventTarget { } // https://dom.spec.whatwg.org/#concept-event-fire - pub fn fire_event(&self, name: &str) -> Root<Event> { + pub fn fire_event(&self, name: Atom) -> Root<Event> { self.fire_event_with_params(name, EventBubbles::DoesNotBubble, EventCancelable::NotCancelable) } // https://dom.spec.whatwg.org/#concept-event-fire - pub fn fire_bubbling_event(&self, name: &str) -> Root<Event> { + pub fn fire_bubbling_event(&self, name: Atom) -> Root<Event> { self.fire_event_with_params(name, EventBubbles::Bubbles, EventCancelable::NotCancelable) } // https://dom.spec.whatwg.org/#concept-event-fire - pub fn fire_cancelable_event(&self, name: &str) -> Root<Event> { + pub fn fire_cancelable_event(&self, name: Atom) -> Root<Event> { self.fire_event_with_params(name, EventBubbles::DoesNotBubble, EventCancelable::Cancelable) } // https://dom.spec.whatwg.org/#concept-event-fire - pub fn fire_bubbling_cancelable_event(&self, name: &str) -> Root<Event> { + pub fn fire_bubbling_cancelable_event(&self, name: Atom) -> Root<Event> { self.fire_event_with_params(name, EventBubbles::Bubbles, EventCancelable::Cancelable) @@ -520,11 +520,11 @@ impl EventTarget { // https://dom.spec.whatwg.org/#concept-event-fire pub fn fire_event_with_params(&self, - name: &str, + name: Atom, bubbles: EventBubbles, cancelable: EventCancelable) -> Root<Event> { - let event = Event::new(&self.global(), Atom::from(name), bubbles, cancelable); + let event = Event::new(&self.global(), name, bubbles, cancelable); event.fire(self); event } diff --git a/components/script/dom/htmldetailselement.rs b/components/script/dom/htmldetailselement.rs index b829dc79ee9..8df0f1a62fb 100644 --- a/components/script/dom/htmldetailselement.rs +++ b/components/script/dom/htmldetailselement.rs @@ -94,7 +94,7 @@ impl Runnable for DetailsNotificationRunnable { fn handler(self: Box<DetailsNotificationRunnable>) { let target = self.element.root(); if target.check_toggle_count(self.toggle_number) { - target.upcast::<EventTarget>().fire_event("toggle"); + target.upcast::<EventTarget>().fire_event(atom!("toggle")); } } } diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs index 8db261996b1..4ecc6a44fa0 100644 --- a/components/script/dom/htmlformelement.rs +++ b/components/script/dom/htmlformelement.rs @@ -304,14 +304,14 @@ impl HTMLFormElement { { if self.interactive_validation().is_err() { // TODO: Implement event handlers on all form control elements - self.upcast::<EventTarget>().fire_event("invalid"); + self.upcast::<EventTarget>().fire_event(atom!("invalid")); return; } } // Step 5 if submit_method_flag == SubmittedFrom::NotFromForm { let event = self.upcast::<EventTarget>() - .fire_bubbling_cancelable_event("submit"); + .fire_bubbling_cancelable_event(atom!("submit")); if event.DefaultPrevented() { return; } @@ -481,7 +481,7 @@ impl HTMLFormElement { // Step 5-6 let unhandled_invalid_controls = invalid_controls.into_iter().filter_map(|field| { let event = field.as_event_target() - .fire_cancelable_event("invalid"); + .fire_cancelable_event(atom!("invalid")); if !event.DefaultPrevented() { return Some(field); } None }).collect::<Vec<FormSubmittableElement>>(); @@ -610,7 +610,7 @@ impl HTMLFormElement { } let event = self.upcast::<EventTarget>() - .fire_bubbling_cancelable_event("reset"); + .fire_bubbling_cancelable_event(atom!("reset")); if event.DefaultPrevented() { return; } diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index 069765bb810..2c1ff2adb0d 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -239,7 +239,7 @@ impl HTMLIFrameElement { // TODO Step 3 - set child document `mut iframe load` flag // Step 4 - self.upcast::<EventTarget>().fire_event("load"); + self.upcast::<EventTarget>().fire_event(atom!("load")); let mut blocker = self.load_blocker.borrow_mut(); LoadBlocker::terminate(&mut blocker); diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs index e5177b28730..e8a269c782c 100644 --- a/components/script/dom/htmlimageelement.rs +++ b/components/script/dom/htmlimageelement.rs @@ -105,12 +105,12 @@ impl Runnable for ImageResponseHandlerRunnable { // Fire image.onload if trigger_image_load { - element.upcast::<EventTarget>().fire_event("load"); + element.upcast::<EventTarget>().fire_event(atom!("load")); } // Fire image.onerror if trigger_image_error { - element.upcast::<EventTarget>().fire_event("error"); + element.upcast::<EventTarget>().fire_event(atom!("error")); } // Trigger reflow @@ -180,8 +180,8 @@ impl HTMLImageElement { // Step 11, substep 5 let img = self.img.root(); img.current_request.borrow_mut().source_url = Some(self.src.into()); - img.upcast::<EventTarget>().fire_event("error"); - img.upcast::<EventTarget>().fire_event("loadend"); + img.upcast::<EventTarget>().fire_event(atom!("error")); + img.upcast::<EventTarget>().fire_event(atom!("loadend")); } } diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs index ebbff4bc1ec..b599d4369dc 100644 --- a/components/script/dom/htmlinputelement.rs +++ b/components/script/dom/htmlinputelement.rs @@ -849,8 +849,8 @@ impl HTMLInputElement { let filelist = FileList::new(&window, files); self.filelist.set(Some(&filelist)); - target.fire_bubbling_event("input"); - target.fire_bubbling_event("change"); + target.fire_bubbling_event(atom!("input")); + target.fire_bubbling_event(atom!("change")); } } } @@ -1286,8 +1286,8 @@ impl Activatable for HTMLInputElement { // https://html.spec.whatwg.org/multipage/#radio-button-state-(type=radio):activation-behavior // Check if document owner is fully active let target = self.upcast::<EventTarget>(); - target.fire_bubbling_event("input"); - target.fire_bubbling_event("change"); + target.fire_bubbling_event(atom!("input")); + target.fire_bubbling_event(atom!("change")); }, InputType::InputFile => self.select_files(None), _ => () diff --git a/components/script/dom/htmllinkelement.rs b/components/script/dom/htmllinkelement.rs index 2312918c751..a7b274095c0 100644 --- a/components/script/dom/htmllinkelement.rs +++ b/components/script/dom/htmllinkelement.rs @@ -325,7 +325,7 @@ impl FetchResponseListener for StylesheetContext { if let Some(ref meta) = self.metadata { if let Some(Serde(ContentType(Mime(TopLevel::Text, SubLevel::Css, _)))) = meta.content_type { } else { - self.elem.root().upcast::<EventTarget>().fire_event("error"); + self.elem.root().upcast::<EventTarget>().fire_event(atom!("error")); } } } @@ -380,7 +380,7 @@ impl FetchResponseListener for StylesheetContext { document.finish_load(LoadType::Stylesheet(self.url.clone())); - let event = if successful { "load" } else { "error" }; + let event = if successful { atom!("load") } else { atom!("error") }; elem.upcast::<EventTarget>().fire_event(event); } diff --git a/components/script/dom/mediaquerylist.rs b/components/script/dom/mediaquerylist.rs index aef1c908e8a..c140f5f2c48 100644 --- a/components/script/dom/mediaquerylist.rs +++ b/components/script/dom/mediaquerylist.rs @@ -142,7 +142,7 @@ impl WeakMediaQueryListVec { pub fn evaluate_and_report_changes(&self) { for mql in self.cell.borrow().iter() { if let MediaQueryListMatchState::Changed(_) = mql.root().unwrap().evaluate_changes() { - mql.root().unwrap().upcast::<EventTarget>().fire_event("change"); + mql.root().unwrap().upcast::<EventTarget>().fire_event(atom!("change")); } } } diff --git a/components/script/dom/serviceworker.rs b/components/script/dom/serviceworker.rs index 2ff3d218cb3..373ed38c761 100644 --- a/components/script/dom/serviceworker.rs +++ b/components/script/dom/serviceworker.rs @@ -18,6 +18,7 @@ use dom::globalscope::GlobalScope; use js::jsapi::{HandleValue, JSContext}; use script_thread::Runnable; use script_traits::{ScriptMsg, DOMMessage}; +use servo_atoms::Atom; use std::cell::Cell; use url::Url; @@ -56,12 +57,12 @@ impl ServiceWorker { pub fn dispatch_simple_error(address: TrustedServiceWorkerAddress) { let service_worker = address.root(); - service_worker.upcast().fire_event("error"); + service_worker.upcast().fire_event(atom!("error")); } pub fn set_transition_state(&self, state: ServiceWorkerState) { self.state.set(state); - self.upcast::<EventTarget>().fire_event("statechange"); + self.upcast::<EventTarget>().fire_event(Atom::from("statechange")); } pub fn get_script_url(&self) -> Url { diff --git a/components/script/dom/serviceworkercontainer.rs b/components/script/dom/serviceworkercontainer.rs index 6ad13fc317b..c83d859b4ce 100644 --- a/components/script/dom/serviceworkercontainer.rs +++ b/components/script/dom/serviceworkercontainer.rs @@ -15,6 +15,7 @@ use dom::promise::Promise; use dom::serviceworker::ServiceWorker; use dom::serviceworkerregistration::ServiceWorkerRegistration; use script_thread::ScriptThread; +use servo_atoms::Atom; use std::ascii::AsciiExt; use std::default::Default; use std::rc::Rc; @@ -45,7 +46,7 @@ pub trait Controllable { impl Controllable for ServiceWorkerContainer { fn set_controller(&self, active_worker: &ServiceWorker) { self.controller.set(Some(active_worker)); - self.upcast::<EventTarget>().fire_event("controllerchange"); + self.upcast::<EventTarget>().fire_event(Atom::from("controllerchange")); } } diff --git a/components/script/dom/serviceworkerglobalscope.rs b/components/script/dom/serviceworkerglobalscope.rs index b9c3fb483ad..adf416d4fc3 100644 --- a/components/script/dom/serviceworkerglobalscope.rs +++ b/components/script/dom/serviceworkerglobalscope.rs @@ -28,6 +28,7 @@ use net_traits::request::{CredentialsMode, Destination, RequestInit, Type as Req use rand::random; use script_runtime::{CommonScriptMsg, StackRootTLS, get_reports, new_rt_and_cx, ScriptChan}; use script_traits::{TimerEvent, WorkerGlobalScopeInit, ScopeThings, ServiceWorkerMsg, WorkerScriptLoadOrigin}; +use servo_atoms::Atom; use std::sync::mpsc::{Receiver, RecvError, Select, Sender, channel}; use std::thread; use std::time::Duration; @@ -268,7 +269,7 @@ impl ServiceWorkerGlobalScope { // TODO XXXcreativcoder This will eventually use a FetchEvent interface to fire event // when we have the Request and Response dom api's implemented // https://slightlyoff.github.io/ServiceWorker/spec/service_worker_1/index.html#fetch-event-section - self.upcast::<EventTarget>().fire_event("fetch"); + self.upcast::<EventTarget>().fire_event(Atom::from("fetch")); let _ = mediator.response_chan.send(None); } } diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs index c8999b52102..dd49f62d247 100644 --- a/components/script/dom/websocket.rs +++ b/components/script/dom/websocket.rs @@ -498,7 +498,7 @@ impl Runnable for ConnectionEstablishedTask { } // Step 6. - ws.upcast().fire_event("open"); + ws.upcast().fire_event(atom!("open")); } } @@ -548,7 +548,7 @@ impl Runnable for CloseTask { // Step 2. if self.failed { - ws.upcast().fire_event("error"); + ws.upcast().fire_event(atom!("error")); } // Step 3. diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs index 72f058c16f2..42c0d1e553d 100644 --- a/components/script/dom/worker.rs +++ b/components/script/dom/worker.rs @@ -138,7 +138,7 @@ impl Worker { pub fn dispatch_simple_error(address: TrustedWorkerAddress) { let worker = address.root(); - worker.upcast().fire_event("error"); + worker.upcast().fire_event(atom!("error")); } #[allow(unsafe_code)] |