aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/pagetransitionevent.rs
diff options
context:
space:
mode:
authorConnor Brewster <brewsterc@my.caspercollege.edu>2016-05-03 16:10:13 -0600
committerConnor Brewster <brewsterc@my.caspercollege.edu>2016-05-11 22:11:46 -0600
commit11dd0d7c46e9b61a0d7174202ca16200c98eda1a (patch)
treee186e0ceed9ab1d4ca28bebf8cd4c2b187e8a21c /components/script/dom/pagetransitionevent.rs
parent641b374f0b752671207d21941c3e5ff4e681d706 (diff)
downloadservo-11dd0d7c46e9b61a0d7174202ca16200c98eda1a.tar.gz
servo-11dd0d7c46e9b61a0d7174202ca16200c98eda1a.zip
add popstateevent, hashchangeevent, pagetransitionevent
Diffstat (limited to 'components/script/dom/pagetransitionevent.rs')
-rw-r--r--components/script/dom/pagetransitionevent.rs76
1 files changed, 76 insertions, 0 deletions
diff --git a/components/script/dom/pagetransitionevent.rs b/components/script/dom/pagetransitionevent.rs
new file mode 100644
index 00000000000..2baa8d0693c
--- /dev/null
+++ b/components/script/dom/pagetransitionevent.rs
@@ -0,0 +1,76 @@
+/* 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::EventBinding::EventMethods;
+use dom::bindings::codegen::Bindings::PageTransitionEventBinding;
+use dom::bindings::codegen::Bindings::PageTransitionEventBinding::PageTransitionEventMethods;
+use dom::bindings::error::Fallible;
+use dom::bindings::global::GlobalRef;
+use dom::bindings::inheritance::Castable;
+use dom::bindings::js::Root;
+use dom::bindings::reflector::reflect_dom_object;
+use dom::event::Event;
+use std::cell::Cell;
+use string_cache::Atom;
+use util::str::DOMString;
+
+// https://html.spec.whatwg.org/multipage/#pagetransitionevent
+#[dom_struct]
+pub struct PageTransitionEvent {
+ event: Event,
+ persisted: Cell<bool>,
+}
+
+impl PageTransitionEvent {
+ fn new_inherited() -> PageTransitionEvent {
+ PageTransitionEvent {
+ event: Event::new_inherited(),
+ persisted: Cell::new(false),
+ }
+ }
+
+ pub fn new_uninitialized(global: GlobalRef) -> Root<PageTransitionEvent> {
+ reflect_dom_object(box PageTransitionEvent::new_inherited(),
+ global,
+ PageTransitionEventBinding::Wrap)
+ }
+
+ pub fn new(global: GlobalRef,
+ type_: Atom,
+ bubbles: bool,
+ cancelable: bool,
+ persisted: bool)
+ -> Root<PageTransitionEvent> {
+ let ev = PageTransitionEvent::new_uninitialized(global);
+ ev.persisted.set(persisted);
+ {
+ let event = ev.upcast::<Event>();
+ event.init_event(type_, bubbles, cancelable);
+ }
+ ev
+ }
+
+ pub fn Constructor(global: GlobalRef,
+ type_: DOMString,
+ init: &PageTransitionEventBinding::PageTransitionEventInit)
+ -> Fallible<Root<PageTransitionEvent>> {
+ Ok(PageTransitionEvent::new(global,
+ Atom::from(type_),
+ init.parent.bubbles,
+ init.parent.cancelable,
+ init.persisted))
+ }
+}
+
+impl PageTransitionEventMethods for PageTransitionEvent {
+ // https://html.spec.whatwg.org/multipage/#dom-pagetransitionevent-persisted
+ fn Persisted(&self) -> bool {
+ self.persisted.get()
+ }
+
+ // https://dom.spec.whatwg.org/#dom-event-istrusted
+ fn IsTrusted(&self) -> bool {
+ self.event.IsTrusted()
+ }
+}