diff options
author | Connor Brewster <brewsterc@my.caspercollege.edu> | 2016-05-03 16:10:13 -0600 |
---|---|---|
committer | Connor Brewster <brewsterc@my.caspercollege.edu> | 2016-05-11 22:11:46 -0600 |
commit | 11dd0d7c46e9b61a0d7174202ca16200c98eda1a (patch) | |
tree | e186e0ceed9ab1d4ca28bebf8cd4c2b187e8a21c /components/script/dom/pagetransitionevent.rs | |
parent | 641b374f0b752671207d21941c3e5ff4e681d706 (diff) | |
download | servo-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.rs | 76 |
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() + } +} |