aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/popstateevent.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/popstateevent.rs')
-rw-r--r--components/script/dom/popstateevent.rs80
1 files changed, 45 insertions, 35 deletions
diff --git a/components/script/dom/popstateevent.rs b/components/script/dom/popstateevent.rs
index c5e63d4ea50..851064df389 100644
--- a/components/script/dom/popstateevent.rs
+++ b/components/script/dom/popstateevent.rs
@@ -1,28 +1,31 @@
/* 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/. */
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
-use dom::bindings::codegen::Bindings::EventBinding::EventMethods;
-use dom::bindings::codegen::Bindings::PopStateEventBinding;
-use dom::bindings::codegen::Bindings::PopStateEventBinding::PopStateEventMethods;
-use dom::bindings::error::Fallible;
-use dom::bindings::inheritance::Castable;
-use dom::bindings::js::Root;
-use dom::bindings::reflector::reflect_dom_object;
-use dom::bindings::str::DOMString;
-use dom::bindings::trace::RootedTraceableBox;
-use dom::event::Event;
-use dom::window::Window;
+use crate::dom::bindings::codegen::Bindings::EventBinding::EventMethods;
+use crate::dom::bindings::codegen::Bindings::PopStateEventBinding;
+use crate::dom::bindings::codegen::Bindings::PopStateEventBinding::PopStateEventMethods;
+use crate::dom::bindings::error::Fallible;
+use crate::dom::bindings::inheritance::Castable;
+use crate::dom::bindings::reflector::reflect_dom_object;
+use crate::dom::bindings::root::DomRoot;
+use crate::dom::bindings::str::DOMString;
+use crate::dom::bindings::trace::RootedTraceableBox;
+use crate::dom::event::Event;
+use crate::dom::eventtarget::EventTarget;
+use crate::dom::window::Window;
+use crate::script_runtime::JSContext;
use dom_struct::dom_struct;
-use js::jsapi::{Heap, HandleValue, JSContext};
+use js::jsapi::Heap;
use js::jsval::JSVal;
+use js::rust::HandleValue;
use servo_atoms::Atom;
// https://html.spec.whatwg.org/multipage/#the-popstateevent-interface
#[dom_struct]
pub struct PopStateEvent {
event: Event,
- #[ignore_heap_size_of = "Defined in rust-mozjs"]
+ #[ignore_malloc_size_of = "Defined in rust-mozjs"]
state: Heap<JSVal>,
}
@@ -34,18 +37,17 @@ impl PopStateEvent {
}
}
- pub fn new_uninitialized(window: &Window) -> Root<PopStateEvent> {
- reflect_dom_object(box PopStateEvent::new_inherited(),
- window,
- PopStateEventBinding::Wrap)
+ pub fn new_uninitialized(window: &Window) -> DomRoot<PopStateEvent> {
+ reflect_dom_object(Box::new(PopStateEvent::new_inherited()), window)
}
- pub fn new(window: &Window,
- type_: Atom,
- bubbles: bool,
- cancelable: bool,
- state: HandleValue)
- -> Root<PopStateEvent> {
+ pub fn new(
+ window: &Window,
+ type_: Atom,
+ bubbles: bool,
+ cancelable: bool,
+ state: HandleValue,
+ ) -> DomRoot<PopStateEvent> {
let ev = PopStateEvent::new_uninitialized(window);
ev.state.set(state.get());
{
@@ -55,22 +57,30 @@ impl PopStateEvent {
ev
}
- pub fn Constructor(window: &Window,
- type_: DOMString,
- init: RootedTraceableBox<PopStateEventBinding::PopStateEventInit>)
- -> Fallible<Root<PopStateEvent>> {
- Ok(PopStateEvent::new(window,
- Atom::from(type_),
- init.parent.bubbles,
- init.parent.cancelable,
- init.state.handle()))
+ #[allow(non_snake_case)]
+ pub fn Constructor(
+ window: &Window,
+ type_: DOMString,
+ init: RootedTraceableBox<PopStateEventBinding::PopStateEventInit>,
+ ) -> Fallible<DomRoot<PopStateEvent>> {
+ Ok(PopStateEvent::new(
+ window,
+ Atom::from(type_),
+ init.parent.bubbles,
+ init.parent.cancelable,
+ init.state.handle(),
+ ))
+ }
+
+ pub fn dispatch_jsval(target: &EventTarget, window: &Window, state: HandleValue) {
+ let event = PopStateEvent::new(window, atom!("popstate"), false, false, state);
+ event.upcast::<Event>().fire(target);
}
}
impl PopStateEventMethods for PopStateEvent {
- #[allow(unsafe_code)]
// https://html.spec.whatwg.org/multipage/#dom-popstateevent-state
- unsafe fn State(&self, _cx: *mut JSContext) -> JSVal {
+ fn State(&self, _cx: JSContext) -> JSVal {
self.state.get()
}