aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/window.rs
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-06-01 17:30:37 -0500
committerbors-servo <metajack+bors@gmail.com>2015-06-01 17:30:37 -0500
commitd08995e1a94fa093b7fc1e5d918d9dca79f260d6 (patch)
tree6459e79dab04095889035a8aad9b7d933f294077 /components/script/dom/window.rs
parentc724444ccb85551b5a0a581d673875ec9bce3d1f (diff)
parent49f1b13ad968467e442d9bc7bc1ee737365e1f5d (diff)
downloadservo-d08995e1a94fa093b7fc1e5d918d9dca79f260d6.tar.gz
servo-d08995e1a94fa093b7fc1e5d918d9dca79f260d6.zip
Auto merge of #6009 - jgraham:webdriver_frames, r=jdm
This moves webdriver_traits into msg to avoid a circular dependency. <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6009) <!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/window.rs')
-rw-r--r--components/script/dom/window.rs29
1 files changed, 17 insertions, 12 deletions
diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs
index 21e9bbc28f2..d8df4ad9c73 100644
--- a/components/script/dom/window.rs
+++ b/components/script/dom/window.rs
@@ -38,9 +38,9 @@ use timers::{IsInterval, TimerId, TimerManager, TimerCallback};
use webdriver_handlers::jsval_to_webdriver;
use devtools_traits::{DevtoolsControlChan, TimelineMarker, TimelineMarkerType, TracingMetadata};
-use webdriver_traits::{WebDriverJSError, WebDriverJSResult};
use msg::compositor_msg::ScriptListener;
use msg::constellation_msg::{LoadData, PipelineId, SubpageId, ConstellationChan, WindowSizeData, WorkerId};
+use msg::webdriver_msg::{WebDriverJSError, WebDriverJSResult};
use net_traits::ResourceTask;
use net_traits::image_cache_task::{ImageCacheChan, ImageCacheTask};
use net_traits::storage_task::{StorageTask, StorageType};
@@ -437,17 +437,7 @@ impl<'a> WindowMethods for JSRef<'a, Window> {
// https://html.spec.whatwg.org/multipage/#dom-parent
fn Parent(self) -> Temporary<Window> {
- let browser_context = self.browser_context();
- let browser_context = browser_context.as_ref().unwrap();
-
- browser_context.frame_element().map_or(self.Window(), |fe| {
- let frame_element = fe.root();
- let window = window_from_node(frame_element.r()).root();
- // FIXME(https://github.com/rust-lang/rust/issues/23338)
- let r = window.r();
- let context = r.browser_context();
- context.as_ref().unwrap().active_window()
- })
+ self.parent().unwrap_or(self.Window())
}
fn Performance(self) -> Temporary<Performance> {
@@ -558,6 +548,7 @@ pub trait WindowHelpers {
fn drop_devtools_timeline_markers(self);
fn set_webdriver_script_chan(self, chan: Option<Sender<WebDriverJSResult>>);
fn is_alive(self) -> bool;
+ fn parent(self) -> Option<Temporary<Window>>;
}
pub trait ScriptHelpers {
@@ -939,6 +930,20 @@ impl<'a> WindowHelpers for JSRef<'a, Window> {
fn is_alive(self) -> bool {
self.current_state.get() == WindowState::Alive
}
+
+ fn parent(self) -> Option<Temporary<Window>> {
+ let browser_context = self.browser_context();
+ let browser_context = browser_context.as_ref().unwrap();
+
+ browser_context.frame_element().map(|fe| {
+ let frame_element = fe.root();
+ let window = window_from_node(frame_element.r()).root();
+ // FIXME(https://github.com/rust-lang/rust/issues/23338)
+ let r = window.r();
+ let context = r.browser_context();
+ context.as_ref().unwrap().active_window()
+ })
+ }
}
impl Window {