aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/closeevent.rs11
-rw-r--r--components/script/dom/customevent.rs30
-rw-r--r--components/script/dom/document.rs6
-rw-r--r--components/script/dom/errorevent.rs9
-rw-r--r--components/script/dom/event.rs36
-rw-r--r--components/script/dom/filereader.rs23
-rw-r--r--components/script/dom/htmlformelement.rs4
-rw-r--r--components/script/dom/htmliframeelement.rs4
-rw-r--r--components/script/dom/htmlimageelement.rs2
-rw-r--r--components/script/dom/htmlinputelement.rs4
-rw-r--r--components/script/dom/htmlscriptelement.rs15
-rw-r--r--components/script/dom/htmltextareaelement.rs2
-rw-r--r--components/script/dom/messageevent.rs9
-rw-r--r--components/script/dom/progressevent.rs7
-rw-r--r--components/script/dom/storage.rs2
-rw-r--r--components/script/dom/storageevent.rs7
-rw-r--r--components/script/dom/uievent.rs3
-rw-r--r--components/script/dom/webglcontextevent.rs7
-rw-r--r--components/script/dom/webglrenderingcontext.rs2
-rw-r--r--components/script/dom/websocket.rs6
-rw-r--r--components/script/dom/worker.rs4
-rw-r--r--components/script/dom/xmlhttprequest.rs42
22 files changed, 128 insertions, 107 deletions
diff --git a/components/script/dom/closeevent.rs b/components/script/dom/closeevent.rs
index 4f484debbae..7443d1cc696 100644
--- a/components/script/dom/closeevent.rs
+++ b/components/script/dom/closeevent.rs
@@ -12,6 +12,7 @@ use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::event::{Event, EventBubbles, EventCancelable};
use script_task::ScriptChan;
+use string_cache::Atom;
use util::str::DOMString;
#[dom_struct]
@@ -33,7 +34,7 @@ impl CloseEvent {
}
pub fn new(global: GlobalRef,
- type_: DOMString,
+ type_: Atom,
bubbles: EventBubbles,
cancelable: EventCancelable,
wasClean: bool,
@@ -44,9 +45,9 @@ impl CloseEvent {
let ev = reflect_dom_object(event, global, CloseEventBinding::Wrap);
{
let event = ev.upcast::<Event>();
- event.InitEvent(type_,
- bubbles == EventBubbles::Bubbles,
- cancelable == EventCancelable::Cancelable);
+ event.init_event(type_,
+ bubbles == EventBubbles::Bubbles,
+ cancelable == EventCancelable::Cancelable);
}
ev
}
@@ -66,7 +67,7 @@ impl CloseEvent {
EventCancelable::NotCancelable
};
Ok(CloseEvent::new(global,
- type_,
+ Atom::from(&*type_),
bubbles,
cancelable,
init.wasClean,
diff --git a/components/script/dom/customevent.rs b/components/script/dom/customevent.rs
index 6c1e71b3b08..ac7017e1817 100644
--- a/components/script/dom/customevent.rs
+++ b/components/script/dom/customevent.rs
@@ -13,6 +13,7 @@ use dom::bindings::reflector::reflect_dom_object;
use dom::event::Event;
use js::jsapi::{HandleValue, JSContext};
use js::jsval::JSVal;
+use string_cache::Atom;
use util::str::DOMString;
// https://dom.spec.whatwg.org/#interface-customevent
@@ -37,13 +38,13 @@ impl CustomEvent {
CustomEventBinding::Wrap)
}
pub fn new(global: GlobalRef,
- type_: DOMString,
+ type_: Atom,
bubbles: bool,
cancelable: bool,
detail: HandleValue)
-> Root<CustomEvent> {
let ev = CustomEvent::new_uninitialized(global);
- ev.InitCustomEvent(global.get_cx(), type_, bubbles, cancelable, detail);
+ ev.init_custom_event(global.get_cx(), type_, bubbles, cancelable, detail);
ev
}
#[allow(unsafe_code)]
@@ -52,11 +53,26 @@ impl CustomEvent {
init: &CustomEventBinding::CustomEventInit)
-> Fallible<Root<CustomEvent>> {
Ok(CustomEvent::new(global,
- type_,
+ Atom::from(&*type_),
init.parent.bubbles,
init.parent.cancelable,
unsafe { HandleValue::from_marked_location(&init.detail) }))
}
+
+ fn init_custom_event(&self,
+ _cx: *mut JSContext,
+ type_: Atom,
+ can_bubble: bool,
+ cancelable: bool,
+ detail: HandleValue) {
+ let event = self.upcast::<Event>();
+ if event.dispatching() {
+ return;
+ }
+
+ self.detail.set(detail.get());
+ event.init_event(type_, can_bubble, cancelable);
+ }
}
impl CustomEventMethods for CustomEvent {
@@ -72,12 +88,6 @@ impl CustomEventMethods for CustomEvent {
can_bubble: bool,
cancelable: bool,
detail: HandleValue) {
- let event = self.upcast::<Event>();
- if event.dispatching() {
- return;
- }
-
- self.detail.set(detail.get());
- event.InitEvent(type_, can_bubble, cancelable);
+ self.init_custom_event(_cx, Atom::from(&*type_), can_bubble, cancelable, detail)
}
}
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index b816624b10c..299df8d592d 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -524,7 +524,7 @@ impl Document {
self.ready_state.set(state);
let event = Event::new(GlobalRef::Window(&self.window),
- DOMString::from("readystatechange"),
+ atom!("readystatechange"),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable);
let target = self.upcast::<EventTarget>();
@@ -1326,7 +1326,7 @@ impl Document {
update_with_current_time(&self.dom_content_loaded_event_start);
let event = Event::new(GlobalRef::Window(self.window()),
- DOMString::from("DOMContentLoaded"),
+ atom!("DOMContentLoaded"),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable);
let doctarget = self.upcast::<EventTarget>();
@@ -2464,7 +2464,7 @@ impl DocumentProgressHandler {
let document = self.addr.root();
let window = document.window();
let event = Event::new(GlobalRef::Window(window),
- DOMString::from("load"),
+ atom!("load"),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable);
let wintarget = window.upcast::<EventTarget>();
diff --git a/components/script/dom/errorevent.rs b/components/script/dom/errorevent.rs
index 75c782becf9..8451527821d 100644
--- a/components/script/dom/errorevent.rs
+++ b/components/script/dom/errorevent.rs
@@ -16,6 +16,7 @@ use dom::event::{Event, EventBubbles, EventCancelable};
use js::jsapi::{RootedValue, HandleValue, JSContext};
use js::jsval::JSVal;
use std::cell::Cell;
+use string_cache::Atom;
use util::str::DOMString;
#[dom_struct]
@@ -48,7 +49,7 @@ impl ErrorEvent {
}
pub fn new(global: GlobalRef,
- type_: DOMString,
+ type_: Atom,
bubbles: EventBubbles,
cancelable: EventCancelable,
message: DOMString,
@@ -59,8 +60,8 @@ impl ErrorEvent {
let ev = ErrorEvent::new_uninitialized(global);
{
let event = ev.upcast::<Event>();
- event.InitEvent(type_, bubbles == EventBubbles::Bubbles,
- cancelable == EventCancelable::Cancelable);
+ event.init_event(type_, bubbles == EventBubbles::Bubbles,
+ cancelable == EventCancelable::Cancelable);
*ev.message.borrow_mut() = message;
*ev.filename.borrow_mut() = filename;
ev.lineno.set(lineno);
@@ -98,7 +99,7 @@ impl ErrorEvent {
// Dictionaries need to be rooted
// https://github.com/servo/servo/issues/6381
let error = RootedValue::new(global.get_cx(), init.error);
- let event = ErrorEvent::new(global, type_,
+ let event = ErrorEvent::new(global, Atom::from(&*type_),
bubbles, cancelable,
msg, file_name,
line_num, col_num,
diff --git a/components/script/dom/event.rs b/components/script/dom/event.rs
index 6f6284703c5..bae9dea1433 100644
--- a/components/script/dom/event.rs
+++ b/components/script/dom/event.rs
@@ -83,11 +83,11 @@ impl Event {
}
pub fn new(global: GlobalRef,
- type_: DOMString,
+ type_: Atom,
bubbles: EventBubbles,
cancelable: EventCancelable) -> Root<Event> {
let event = Event::new_uninitialized(global);
- event.InitEvent(type_, bubbles == EventBubbles::Bubbles, cancelable == EventCancelable::Cancelable);
+ event.init_event(type_, bubbles == EventBubbles::Bubbles, cancelable == EventCancelable::Cancelable);
event
}
@@ -96,7 +96,23 @@ impl Event {
init: &EventBinding::EventInit) -> Fallible<Root<Event>> {
let bubbles = if init.bubbles { EventBubbles::Bubbles } else { EventBubbles::DoesNotBubble };
let cancelable = if init.cancelable { EventCancelable::Cancelable } else { EventCancelable::NotCancelable };
- Ok(Event::new(global, type_, bubbles, cancelable))
+ Ok(Event::new(global, Atom::from(&*type_), bubbles, cancelable))
+ }
+
+ pub fn init_event(&self, type_: Atom, bubbles: bool, cancelable: bool) {
+ if self.dispatching.get() {
+ return;
+ }
+
+ self.initialized.set(true);
+ self.stop_propagation.set(false);
+ self.stop_immediate.set(false);
+ self.canceled.set(false);
+ self.trusted.set(false);
+ self.target.set(None);
+ *self.type_.borrow_mut() = type_;
+ self.bubbles.set(bubbles);
+ self.cancelable.set(cancelable);
}
#[inline]
@@ -224,19 +240,7 @@ impl EventMethods for Event {
type_: DOMString,
bubbles: bool,
cancelable: bool) {
- if self.dispatching.get() {
- return;
- }
-
- self.initialized.set(true);
- self.stop_propagation.set(false);
- self.stop_immediate.set(false);
- self.canceled.set(false);
- self.trusted.set(false);
- self.target.set(None);
- *self.type_.borrow_mut() = Atom::from(&*type_);
- self.bubbles.set(bubbles);
- self.cancelable.set(cancelable);
+ self.init_event(Atom::from(&*type_), bubbles, cancelable)
}
// https://dom.spec.whatwg.org/#dom-event-istrusted
diff --git a/components/script/dom/filereader.rs b/components/script/dom/filereader.rs
index 02aef5e3f01..783e17eb608 100644
--- a/components/script/dom/filereader.rs
+++ b/components/script/dom/filereader.rs
@@ -27,6 +27,7 @@ use script_task::{CommonScriptMsg, Runnable, ScriptChan, ScriptPort};
use std::cell::Cell;
use std::sync::mpsc;
use std::sync::mpsc::Receiver;
+use string_cache::Atom;
use util::str::DOMString;
use util::task::spawn_named;
@@ -119,10 +120,10 @@ impl FileReader {
let exception = DOMException::new(global.r(), error);
fr.error.set(Some(&exception));
- fr.dispatch_progress_event("error".to_owned(), 0, None);
+ fr.dispatch_progress_event(atom!("error"), 0, None);
return_on_abort!();
// Step 3
- fr.dispatch_progress_event("loadend".to_owned(), 0, None);
+ fr.dispatch_progress_event(atom!("loadend"), 0, None);
return_on_abort!();
// Step 4
fr.terminate_ongoing_reading();
@@ -141,7 +142,7 @@ impl FileReader {
);
return_on_abort!();
//FIXME Step 7 send current progress
- fr.dispatch_progress_event("progress".to_owned(), 0, None);
+ fr.dispatch_progress_event(atom!("progress"), 0, None);
}
// https://w3c.github.io/FileAPI/#dfn-readAsText
@@ -157,7 +158,7 @@ impl FileReader {
);
return_on_abort!();
// Step 6
- fr.dispatch_progress_event("loadstart".to_owned(), 0, None);
+ fr.dispatch_progress_event(atom!("loadstart"), 0, None);
}
// https://w3c.github.io/FileAPI/#dfn-readAsText
@@ -187,11 +188,11 @@ impl FileReader {
*fr.result.borrow_mut() = Some(output);
// Step 8.3
- fr.dispatch_progress_event("load".to_owned(), 0, None);
+ fr.dispatch_progress_event(atom!("load"), 0, None);
return_on_abort!();
// Step 8.4
if fr.ready_state.get() != FileReaderReadyState::Loading {
- fr.dispatch_progress_event("loadend".to_owned(), 0, None);
+ fr.dispatch_progress_event(atom!("loadend"), 0, None);
}
return_on_abort!();
// Step 9
@@ -297,8 +298,8 @@ impl FileReaderMethods for FileReader {
self.terminate_ongoing_reading();
// Steps 5 & 6
- self.dispatch_progress_event("abort".to_owned(), 0, None);
- self.dispatch_progress_event("loadend".to_owned(), 0, None);
+ self.dispatch_progress_event(atom!("abort"), 0, None);
+ self.dispatch_progress_event(atom!("loadend"), 0, None);
}
// https://w3c.github.io/FileAPI/#dfn-error
@@ -319,11 +320,11 @@ impl FileReaderMethods for FileReader {
impl FileReader {
- fn dispatch_progress_event(&self, type_: String, loaded: u64, total: Option<u64>) {
+ fn dispatch_progress_event(&self, type_: Atom, loaded: u64, total: Option<u64>) {
let global = self.global.root();
let progressevent = ProgressEvent::new(global.r(),
- DOMString::from(type_), EventBubbles::DoesNotBubble, EventCancelable::NotCancelable,
+ type_, EventBubbles::DoesNotBubble, EventCancelable::NotCancelable,
total.is_some(), loaded, total.unwrap_or(0));
progressevent.upcast::<Event>().fire(self.upcast());
}
@@ -346,7 +347,7 @@ impl FileReader {
let exception = DOMException::new(global.r(), DOMErrorName::InvalidStateError);
self.error.set(Some(&exception));
- self.dispatch_progress_event("error".to_owned(), 0, None);
+ self.dispatch_progress_event(atom!("error"), 0, None);
return Ok(());
}
diff --git a/components/script/dom/htmlformelement.rs b/components/script/dom/htmlformelement.rs
index dda93487caf..f7c3b7272a7 100644
--- a/components/script/dom/htmlformelement.rs
+++ b/components/script/dom/htmlformelement.rs
@@ -162,7 +162,7 @@ impl HTMLFormElement {
// TODO: Handle browsing contexts
// TODO: Handle validation
let event = Event::new(GlobalRef::Window(win.r()),
- DOMString::from("submit"),
+ atom!("submit"),
EventBubbles::Bubbles,
EventCancelable::Cancelable);
event.fire(self.upcast());
@@ -315,7 +315,7 @@ impl HTMLFormElement {
let win = window_from_node(self);
let event = Event::new(GlobalRef::Window(win.r()),
- DOMString::from("reset"),
+ atom!("reset"),
EventBubbles::Bubbles,
EventCancelable::Cancelable);
event.fire(self.upcast());
diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs
index 7039340ead2..72a38ce8c89 100644
--- a/components/script/dom/htmliframeelement.rs
+++ b/components/script/dom/htmliframeelement.rs
@@ -144,7 +144,7 @@ impl HTMLIFrameElement {
let _ar = JSAutoRequest::new(cx);
let _ac = JSAutoCompartment::new(cx, window.reflector().get_jsobject().get());
let mut detail = RootedValue::new(cx, UndefinedValue());
- let event_name = DOMString::from(event.name().to_owned());
+ let event_name = Atom::from(event.name());
self.build_mozbrowser_event_detail(event, cx, detail.handle_mut());
CustomEvent::new(GlobalRef::Window(window.r()),
event_name,
@@ -210,7 +210,7 @@ impl HTMLIFrameElement {
// Step 4
let window = window_from_node(self);
let event = Event::new(GlobalRef::Window(window.r()),
- DOMString::from("load".to_owned()),
+ atom!("load"),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable);
event.fire(self.upcast());
diff --git a/components/script/dom/htmlimageelement.rs b/components/script/dom/htmlimageelement.rs
index 50f80b83a5d..4cf4ce3a236 100644
--- a/components/script/dom/htmlimageelement.rs
+++ b/components/script/dom/htmlimageelement.rs
@@ -78,7 +78,7 @@ impl Runnable for ImageResponseHandlerRunnable {
// Fire image.onload
let window = window_from_node(document.r());
let event = Event::new(GlobalRef::Window(window.r()),
- DOMString::from("load"),
+ atom!("load"),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable);
event.fire(element.upcast());
diff --git a/components/script/dom/htmlinputelement.rs b/components/script/dom/htmlinputelement.rs
index 6c3e9cdfb56..13af224bef1 100644
--- a/components/script/dom/htmlinputelement.rs
+++ b/components/script/dom/htmlinputelement.rs
@@ -850,13 +850,13 @@ impl Activatable for HTMLInputElement {
let target = self.upcast();
let event = Event::new(GlobalRef::Window(win.r()),
- DOMString::from("input"),
+ atom!("input"),
EventBubbles::Bubbles,
EventCancelable::NotCancelable);
event.fire(target);
let event = Event::new(GlobalRef::Window(win.r()),
- DOMString::from("change"),
+ atom!("change"),
EventBubbles::Bubbles,
EventCancelable::NotCancelable);
event.fire(target);
diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs
index 655254debae..caf39981748 100644
--- a/components/script/dom/htmlscriptelement.rs
+++ b/components/script/dom/htmlscriptelement.rs
@@ -478,25 +478,25 @@ impl HTMLScriptElement {
}
pub fn dispatch_before_script_execute_event(&self) -> bool {
- self.dispatch_event("beforescriptexecute".to_owned(),
+ self.dispatch_event(atom!("beforescriptexecute"),
EventBubbles::Bubbles,
EventCancelable::Cancelable)
}
pub fn dispatch_after_script_execute_event(&self) {
- self.dispatch_event("afterscriptexecute".to_owned(),
+ self.dispatch_event(atom!("afterscriptexecute"),
EventBubbles::Bubbles,
EventCancelable::NotCancelable);
}
pub fn dispatch_load_event(&self) {
- self.dispatch_event("load".to_owned(),
+ self.dispatch_event(atom!("load"),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable);
}
pub fn dispatch_error_event(&self) {
- self.dispatch_event("error".to_owned(),
+ self.dispatch_event(atom!("error"),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable);
}
@@ -546,15 +546,12 @@ impl HTMLScriptElement {
}
fn dispatch_event(&self,
- type_: String,
+ type_: Atom,
bubbles: EventBubbles,
cancelable: EventCancelable) -> bool {
let window = window_from_node(self);
let window = window.r();
- let event = Event::new(GlobalRef::Window(window),
- DOMString::from(type_),
- bubbles,
- cancelable);
+ let event = Event::new(GlobalRef::Window(window), type_, bubbles, cancelable);
event.fire(self.upcast())
}
}
diff --git a/components/script/dom/htmltextareaelement.rs b/components/script/dom/htmltextareaelement.rs
index 1c77d98f69d..80b2b8a78f4 100644
--- a/components/script/dom/htmltextareaelement.rs
+++ b/components/script/dom/htmltextareaelement.rs
@@ -238,7 +238,7 @@ impl HTMLTextAreaElement {
let window = window_from_node(self);
let window = window.r();
let event = Event::new(GlobalRef::Window(window),
- DOMString::from("input"),
+ atom!("input"),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable);
diff --git a/components/script/dom/messageevent.rs b/components/script/dom/messageevent.rs
index e0dc835282b..6f7805c120d 100644
--- a/components/script/dom/messageevent.rs
+++ b/components/script/dom/messageevent.rs
@@ -15,6 +15,7 @@ use dom::eventtarget::EventTarget;
use js::jsapi::{RootedValue, HandleValue, Heap, JSContext};
use js::jsval::JSVal;
use std::default::Default;
+use string_cache::Atom;
use util::str::DOMString;
#[dom_struct]
@@ -47,14 +48,14 @@ impl MessageEvent {
reflect_dom_object(ev, global, MessageEventBinding::Wrap)
}
- pub fn new(global: GlobalRef, type_: DOMString,
+ pub fn new(global: GlobalRef, type_: Atom,
bubbles: bool, cancelable: bool,
data: HandleValue, origin: DOMString, lastEventId: DOMString)
-> Root<MessageEvent> {
let ev = MessageEvent::new_initialized(global, data, origin, lastEventId);
{
let event = ev.upcast::<Event>();
- event.InitEvent(type_, bubbles, cancelable);
+ event.init_event(type_, bubbles, cancelable);
}
ev
}
@@ -66,7 +67,7 @@ impl MessageEvent {
// Dictionaries need to be rooted
// https://github.com/servo/servo/issues/6381
let data = RootedValue::new(global.get_cx(), init.data);
- let ev = MessageEvent::new(global, type_, init.parent.bubbles, init.parent.cancelable,
+ let ev = MessageEvent::new(global, Atom::from(&*type_), init.parent.bubbles, init.parent.cancelable,
data.handle(),
init.origin.clone(), init.lastEventId.clone());
Ok(ev)
@@ -78,7 +79,7 @@ impl MessageEvent {
scope: GlobalRef,
message: HandleValue) {
let messageevent = MessageEvent::new(
- scope, DOMString::from("message"), false, false, message,
+ scope, atom!("message"), false, false, message,
DOMString::new(), DOMString::new());
messageevent.upcast::<Event>().fire(target);
}
diff --git a/components/script/dom/progressevent.rs b/components/script/dom/progressevent.rs
index 9c31291a6b2..c80fbc7bd11 100644
--- a/components/script/dom/progressevent.rs
+++ b/components/script/dom/progressevent.rs
@@ -11,6 +11,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::event::{Event, EventBubbles, EventCancelable};
+use string_cache::Atom;
use util::str::DOMString;
#[dom_struct]
@@ -30,7 +31,7 @@ impl ProgressEvent {
total: total
}
}
- pub fn new(global: GlobalRef, type_: DOMString,
+ pub fn new(global: GlobalRef, type_: Atom,
can_bubble: EventBubbles, cancelable: EventCancelable,
length_computable: bool, loaded: u64, total: u64) -> Root<ProgressEvent> {
let ev = reflect_dom_object(box ProgressEvent::new_inherited(length_computable, loaded, total),
@@ -38,7 +39,7 @@ impl ProgressEvent {
ProgressEventBinding::Wrap);
{
let event = ev.upcast::<Event>();
- event.InitEvent(type_, can_bubble == EventBubbles::Bubbles, cancelable == EventCancelable::Cancelable);
+ event.init_event(type_, can_bubble == EventBubbles::Bubbles, cancelable == EventCancelable::Cancelable);
}
ev
}
@@ -49,7 +50,7 @@ impl ProgressEvent {
let bubbles = if init.parent.bubbles { EventBubbles::Bubbles } else { EventBubbles::DoesNotBubble };
let cancelable = if init.parent.cancelable { EventCancelable::Cancelable }
else { EventCancelable::NotCancelable };
- let ev = ProgressEvent::new(global, type_, bubbles, cancelable,
+ let ev = ProgressEvent::new(global, Atom::from(&*type_), bubbles, cancelable,
init.lengthComputable, init.loaded, init.total);
Ok(ev)
}
diff --git a/components/script/dom/storage.rs b/components/script/dom/storage.rs
index ffae459e6f7..8ebf7f4d169 100644
--- a/components/script/dom/storage.rs
+++ b/components/script/dom/storage.rs
@@ -189,7 +189,7 @@ impl MainThreadRunnable for StorageEventRunnable {
let storage_event = StorageEvent::new(
global_ref,
- DOMString::from("storage"),
+ atom!("storage"),
EventBubbles::DoesNotBubble, EventCancelable::NotCancelable,
this.key.map(DOMString::from), this.old_value.map(DOMString::from), this.new_value.map(DOMString::from),
DOMString::from(ev_url.to_string()),
diff --git a/components/script/dom/storageevent.rs b/components/script/dom/storageevent.rs
index 13a9c20d060..0b756cb4405 100644
--- a/components/script/dom/storageevent.rs
+++ b/components/script/dom/storageevent.rs
@@ -12,6 +12,7 @@ use dom::bindings::js::{JS, MutNullableHeap, Root, RootedReference};
use dom::bindings::reflector::reflect_dom_object;
use dom::event::{Event, EventBubbles, EventCancelable};
use dom::storage::Storage;
+use string_cache::Atom;
use util::str::DOMString;
#[dom_struct]
@@ -42,7 +43,7 @@ impl StorageEvent {
}
pub fn new(global: GlobalRef,
- type_: DOMString,
+ type_: Atom,
bubbles: EventBubbles,
cancelable: EventCancelable,
key: Option<DOMString>,
@@ -56,7 +57,7 @@ impl StorageEvent {
StorageEventBinding::Wrap);
{
let event = ev.upcast::<Event>();
- event.InitEvent(type_, bubbles == EventBubbles::Bubbles, cancelable == EventCancelable::Cancelable);
+ event.init_event(type_, bubbles == EventBubbles::Bubbles, cancelable == EventCancelable::Cancelable);
}
ev
}
@@ -75,7 +76,7 @@ impl StorageEvent {
} else {
EventCancelable::NotCancelable
};
- let event = StorageEvent::new(global, type_,
+ let event = StorageEvent::new(global, Atom::from(&*type_),
bubbles, cancelable,
key, oldValue, newValue,
url, storageArea);
diff --git a/components/script/dom/uievent.rs b/components/script/dom/uievent.rs
index c75d263bfe7..6687864eb4c 100644
--- a/components/script/dom/uievent.rs
+++ b/components/script/dom/uievent.rs
@@ -15,6 +15,7 @@ use dom::event::{Event, EventBubbles, EventCancelable};
use dom::window::Window;
use std::cell::Cell;
use std::default::Default;
+use string_cache::Atom;
use util::str::DOMString;
// https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3-Events.html#interface-UIEvent
@@ -91,7 +92,7 @@ impl UIEventMethods for UIEvent {
return;
}
- event.InitEvent(type_, can_bubble, cancelable);
+ event.init_event(Atom::from(&*type_), can_bubble, cancelable);
self.view.set(view);
self.detail.set(detail);
}
diff --git a/components/script/dom/webglcontextevent.rs b/components/script/dom/webglcontextevent.rs
index 0e236ad634f..34bba6edf84 100644
--- a/components/script/dom/webglcontextevent.rs
+++ b/components/script/dom/webglcontextevent.rs
@@ -12,6 +12,7 @@ use dom::bindings::inheritance::Castable;
use dom::bindings::js::Root;
use dom::bindings::reflector::reflect_dom_object;
use dom::event::{Event, EventBubbles, EventCancelable};
+use string_cache::Atom;
use util::str::DOMString;
#[dom_struct]
@@ -36,7 +37,7 @@ impl WebGLContextEvent {
}
pub fn new(global: GlobalRef,
- type_: DOMString,
+ type_: Atom,
bubbles: EventBubbles,
cancelable: EventCancelable,
status_message: DOMString) -> Root<WebGLContextEvent> {
@@ -47,7 +48,7 @@ impl WebGLContextEvent {
{
let parent = event.upcast::<Event>();
- parent.InitEvent(type_, bubbles == EventBubbles::Bubbles, cancelable == EventCancelable::Cancelable);
+ parent.init_event(type_, bubbles == EventBubbles::Bubbles, cancelable == EventCancelable::Cancelable);
}
event
@@ -73,7 +74,7 @@ impl WebGLContextEvent {
EventCancelable::NotCancelable
};
- Ok(WebGLContextEvent::new(global, type_,
+ Ok(WebGLContextEvent::new(global, Atom::from(&*type_),
bubbles,
cancelable,
status_message))
diff --git a/components/script/dom/webglrenderingcontext.rs b/components/script/dom/webglrenderingcontext.rs
index e9a8b922a48..0efce2afce5 100644
--- a/components/script/dom/webglrenderingcontext.rs
+++ b/components/script/dom/webglrenderingcontext.rs
@@ -119,7 +119,7 @@ impl WebGLRenderingContext {
Err(msg) => {
error!("Couldn't create WebGLRenderingContext: {}", msg);
let event = WebGLContextEvent::new(global,
- DOMString::from("webglcontextcreationerror"),
+ atom!("webglcontextcreationerror"),
EventBubbles::DoesNotBubble,
EventCancelable::Cancelable,
DOMString::from(msg));
diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs
index 125ab9065ee..8d7e5ebd6c6 100644
--- a/components/script/dom/websocket.rs
+++ b/components/script/dom/websocket.rs
@@ -464,7 +464,7 @@ impl Runnable for ConnectionEstablishedTask {
// Step 6.
let global = ws.global.root();
- let event = Event::new(global.r(), DOMString::from("open"),
+ let event = Event::new(global.r(), atom!("open"),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable);
event.fire(ws.upcast());
@@ -506,7 +506,7 @@ impl Runnable for CloseTask {
//A Bad close
ws.clean_close.set(false);
let event = Event::new(global.r(),
- DOMString::from("error"),
+ atom!("error"),
EventBubbles::DoesNotBubble,
EventCancelable::Cancelable);
event.fire(ws.upcast());
@@ -516,7 +516,7 @@ impl Runnable for CloseTask {
https://html.spec.whatwg.org/multipage/#closeWebSocket
*/
let close_event = CloseEvent::new(global.r(),
- DOMString::from("close"),
+ atom!("close"),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable,
ws.clean_close.get(),
diff --git a/components/script/dom/worker.rs b/components/script/dom/worker.rs
index 05c242a07ba..0d3814fe0a4 100644
--- a/components/script/dom/worker.rs
+++ b/components/script/dom/worker.rs
@@ -128,7 +128,7 @@ impl Worker {
let worker = address.root();
let global = worker.r().global.root();
let event = Event::new(global.r(),
- DOMString::from("error"),
+ atom!("error"),
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable);
event.fire(worker.upcast());
@@ -139,7 +139,7 @@ impl Worker {
let worker = address.root();
let global = worker.r().global.root();
let error = RootedValue::new(global.r().get_cx(), UndefinedValue());
- let errorevent = ErrorEvent::new(global.r(), DOMString::from("error"),
+ let errorevent = ErrorEvent::new(global.r(), atom!("error"),
EventBubbles::Bubbles, EventCancelable::Cancelable,
message, filename, lineno, colno, error.handle());
errorevent.upcast::<Event>().fire(worker.upcast());
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index 5fb6ec6c34e..2bb86434a94 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -57,6 +57,7 @@ use std::cell::{Cell, RefCell};
use std::default::Default;
use std::sync::mpsc::channel;
use std::sync::{Arc, Mutex};
+use string_cache::Atom;
use time;
use timers::{ScheduledCallback, TimerHandle};
use url::{Url, UrlParser};
@@ -505,12 +506,12 @@ impl XMLHttpRequestMethods for XMLHttpRequest {
// If one of the event handlers below aborts the fetch by calling
// abort or open we will need the current generation id to detect it.
let gen_id = self.generation_id.get();
- self.dispatch_response_progress_event("loadstart".to_owned());
+ self.dispatch_response_progress_event(atom!("loadstart"));
if self.generation_id.get() != gen_id {
return Ok(());
}
if !self.upload_complete.get() {
- self.dispatch_upload_progress_event("loadstart".to_owned(), Some(0));
+ self.dispatch_upload_progress_event(atom!("loadstart"), Some(0));
if self.generation_id.get() != gen_id {
return Ok(());
}
@@ -775,11 +776,12 @@ pub type TrustedXHRAddress = Trusted<XMLHttpRequest>;
impl XMLHttpRequest {
fn change_ready_state(&self, rs: XMLHttpRequestState) {
+ use string_cache::Atom;
assert!(self.ready_state.get() != rs);
self.ready_state.set(rs);
let global = self.global.root();
let event = Event::new(global.r(),
- DOMString::from("readystatechange"),
+ atom!("readystatechange"),
EventBubbles::DoesNotBubble,
EventCancelable::Cancelable);
event.fire(self.upcast());
@@ -855,11 +857,11 @@ impl XMLHttpRequest {
self.upload_complete.set(true);
// Substeps 2-4
if !self.sync.get() {
- self.dispatch_upload_progress_event("progress".to_owned(), None);
+ self.dispatch_upload_progress_event(atom!("progress"), None);
return_if_fetch_was_terminated!();
- self.dispatch_upload_progress_event("load".to_owned(), None);
+ self.dispatch_upload_progress_event(atom!("load"), None);
return_if_fetch_was_terminated!();
- self.dispatch_upload_progress_event("loadend".to_owned(), None);
+ self.dispatch_upload_progress_event(atom!("loadend"), None);
return_if_fetch_was_terminated!();
}
// Part of step 13, send() (processing response)
@@ -887,7 +889,7 @@ impl XMLHttpRequest {
self.change_ready_state(XMLHttpRequestState::Loading);
return_if_fetch_was_terminated!();
}
- self.dispatch_response_progress_event("progress".to_owned());
+ self.dispatch_response_progress_event(atom!("progress"));
}
},
XHRProgress::Done(_) => {
@@ -905,11 +907,11 @@ impl XMLHttpRequest {
self.change_ready_state(XMLHttpRequestState::Done);
return_if_fetch_was_terminated!();
// Subsubsteps 10-12
- self.dispatch_response_progress_event("progress".to_owned());
+ self.dispatch_response_progress_event(atom!("progress"));
return_if_fetch_was_terminated!();
- self.dispatch_response_progress_event("load".to_owned());
+ self.dispatch_response_progress_event(atom!("load"));
return_if_fetch_was_terminated!();
- self.dispatch_response_progress_event("loadend".to_owned());
+ self.dispatch_response_progress_event(atom!("loadend"));
},
XHRProgress::Errored(_, e) => {
self.cancel_timeout();
@@ -929,18 +931,18 @@ impl XMLHttpRequest {
let upload_complete = &self.upload_complete;
if !upload_complete.get() {
upload_complete.set(true);
- self.dispatch_upload_progress_event("progress".to_owned(), None);
+ self.dispatch_upload_progress_event(atom!("progress"), None);
return_if_fetch_was_terminated!();
- self.dispatch_upload_progress_event(errormsg.to_owned(), None);
+ self.dispatch_upload_progress_event(Atom::from(errormsg), None);
return_if_fetch_was_terminated!();
- self.dispatch_upload_progress_event("loadend".to_owned(), None);
+ self.dispatch_upload_progress_event(atom!("loadend"), None);
return_if_fetch_was_terminated!();
}
- self.dispatch_response_progress_event("progress".to_owned());
+ self.dispatch_response_progress_event(atom!("progress"));
return_if_fetch_was_terminated!();
- self.dispatch_response_progress_event(errormsg.to_owned());
+ self.dispatch_response_progress_event(Atom::from(errormsg));
return_if_fetch_was_terminated!();
- self.dispatch_response_progress_event("loadend".to_owned());
+ self.dispatch_response_progress_event(atom!("loadend"));
}
}
}
@@ -957,10 +959,10 @@ impl XMLHttpRequest {
self.request_headers.borrow_mut().set_raw(name, vec![value.into_bytes()]);
}
- fn dispatch_progress_event(&self, upload: bool, type_: String, loaded: u64, total: Option<u64>) {
+ fn dispatch_progress_event(&self, upload: bool, type_: Atom, loaded: u64, total: Option<u64>) {
let global = self.global.root();
let progressevent = ProgressEvent::new(global.r(),
- DOMString::from(type_),
+ type_,
EventBubbles::DoesNotBubble,
EventCancelable::NotCancelable,
total.is_some(), loaded,
@@ -973,14 +975,14 @@ impl XMLHttpRequest {
progressevent.upcast::<Event>().fire(target);
}
- fn dispatch_upload_progress_event(&self, type_: String, partial_load: Option<u64>) {
+ fn dispatch_upload_progress_event(&self, type_: Atom, partial_load: Option<u64>) {
// If partial_load is None, loading has completed and we can just use the value from the request body
let total = self.request_body_len.get() as u64;
self.dispatch_progress_event(true, type_, partial_load.unwrap_or(total), Some(total));
}
- fn dispatch_response_progress_event(&self, type_: String) {
+ fn dispatch_response_progress_event(&self, type_: Atom) {
let len = self.response.borrow().len() as u64;
let total = self.response_headers.borrow().get::<ContentLength>().map(|x| { **x as u64 });
self.dispatch_progress_event(false, type_, len, total);