diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-06-01 17:30:37 -0500 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-06-01 17:30:37 -0500 |
commit | d08995e1a94fa093b7fc1e5d918d9dca79f260d6 (patch) | |
tree | 6459e79dab04095889035a8aad9b7d933f294077 /components/script/dom/window.rs | |
parent | c724444ccb85551b5a0a581d673875ec9bce3d1f (diff) | |
parent | 49f1b13ad968467e442d9bc7bc1ee737365e1f5d (diff) | |
download | servo-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.rs | 29 |
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 { |