aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/htmliframeelement.rs
diff options
context:
space:
mode:
authorDavid Zbarsky <dzbarsky@gmail.com>2015-07-03 23:05:58 -0400
committerDavid Zbarsky <dzbarsky@gmail.com>2015-07-03 23:05:58 -0400
commitc55a06cb64188a5b132c7530a58f8d74cba2792c (patch)
tree9c25595a0462293f1f78dbbbc252593a49fbcb5c /components/script/dom/htmliframeelement.rs
parentd09881b051e01f145bf701d48d6d91167bccbe30 (diff)
downloadservo-c55a06cb64188a5b132c7530a58f8d74cba2792c.tar.gz
servo-c55a06cb64188a5b132c7530a58f8d74cba2792c.zip
Factor out common forward/back navigation code in HTMLIFrameElementMethods
Diffstat (limited to 'components/script/dom/htmliframeelement.rs')
-rw-r--r--components/script/dom/htmliframeelement.rs59
1 files changed, 23 insertions, 36 deletions
diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs
index f38a591bd45..81440e6b556 100644
--- a/components/script/dom/htmliframeelement.rs
+++ b/components/script/dom/htmliframeelement.rs
@@ -232,6 +232,27 @@ impl HTMLIFrameElement {
}
}
+pub fn Navigate(iframe: &HTMLIFrameElement, direction: NavigationDirection) -> Fallible<()> {
+ if iframe.Mozbrowser() {
+ let node = NodeCast::from_ref(iframe);
+ if node.is_in_doc() {
+ let window = window_from_node(iframe);
+ let window = window.r();
+
+ let pipeline_info = Some((iframe.containing_page_pipeline_id().unwrap(),
+ iframe.subpage_id().unwrap()));
+ let ConstellationChan(ref chan) = window.constellation_chan();
+ let msg = ConstellationMsg::Navigate(pipeline_info, direction);
+ chan.send(msg).unwrap();
+ }
+
+ Ok(())
+ } else {
+ debug!("this frame is not mozbrowser (or experimental_enabled is false)");
+ Err(NotSupported)
+ }
+}
+
impl<'a> HTMLIFrameElementMethods for &'a HTMLIFrameElement {
fn Src(self) -> DOMString {
let element = ElementCast::from_ref(self);
@@ -308,46 +329,12 @@ impl<'a> HTMLIFrameElementMethods for &'a HTMLIFrameElement {
// https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/goBack
fn GoBack(self) -> Fallible<()> {
- if self.Mozbrowser() {
- let node = NodeCast::from_ref(self);
- if node.is_in_doc() {
- let window = window_from_node(self);
- let window = window.r();
-
- let pipeline_info = Some((self.containing_page_pipeline_id().unwrap(),
- self.subpage_id().unwrap()));
- let ConstellationChan(ref chan) = window.constellation_chan();
- let msg = ConstellationMsg::Navigate(pipeline_info, NavigationDirection::Back);
- chan.send(msg).unwrap();
- }
-
- Ok(())
- } else {
- debug!("this frame is not mozbrowser (or experimental_enabled is false)");
- Err(NotSupported)
- }
+ Navigate(self, NavigationDirection::Back)
}
// https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/goForward
fn GoForward(self) -> Fallible<()> {
- if self.Mozbrowser() {
- let node = NodeCast::from_ref(self);
- if node.is_in_doc() {
- let window = window_from_node(self);
- let window = window.r();
-
- let pipeline_info = Some((self.containing_page_pipeline_id().unwrap(),
- self.subpage_id().unwrap()));
- let ConstellationChan(ref chan) = window.constellation_chan();
- let msg = ConstellationMsg::Navigate(pipeline_info, NavigationDirection::Forward);
- chan.send(msg).unwrap();
- }
-
- Ok(())
- } else {
- debug!("this frame is not mozbrowser (or experimental_enabled is false)");
- Err(NotSupported)
- }
+ Navigate(self, NavigationDirection::Forward)
}
// https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/reload