mirror of
https://github.com/servo/servo.git
synced 2025-07-23 15:23:42 +01:00
Move everything unrelated to the frame tree out of Page and into Document or Window. Reduce the API surface of Page to a bare minimum to allow for easier future removal.
This commit is contained in:
parent
d9f04180a5
commit
e2c4f5ed67
23 changed files with 664 additions and 672 deletions
|
@ -20,8 +20,8 @@ use dom::htmlelement::{HTMLElement, HTMLElementTypeId};
|
|||
use dom::node::{Node, NodeHelpers, NodeTypeId, window_from_node};
|
||||
use dom::urlhelper::UrlHelper;
|
||||
use dom::virtualmethods::VirtualMethods;
|
||||
use dom::window::Window;
|
||||
use page::{IterablePage, Page};
|
||||
use dom::window::{Window, WindowHelpers};
|
||||
use page::IterablePage;
|
||||
|
||||
use msg::constellation_msg::{PipelineId, SubpageId, ConstellationChan};
|
||||
use msg::constellation_msg::IFrameSandboxState::{IFrameSandboxed, IFrameUnsandboxed};
|
||||
|
@ -62,7 +62,7 @@ pub trait HTMLIFrameElementHelpers {
|
|||
fn get_url(self) -> Option<Url>;
|
||||
/// http://www.whatwg.org/html/#process-the-iframe-attributes
|
||||
fn process_the_iframe_attributes(self);
|
||||
fn generate_new_subpage_id(self, page: &Page) -> (SubpageId, Option<SubpageId>);
|
||||
fn generate_new_subpage_id(self) -> (SubpageId, Option<SubpageId>);
|
||||
}
|
||||
|
||||
impl<'a> HTMLIFrameElementHelpers for JSRef<'a, HTMLIFrameElement> {
|
||||
|
@ -78,15 +78,16 @@ impl<'a> HTMLIFrameElementHelpers for JSRef<'a, HTMLIFrameElement> {
|
|||
None
|
||||
} else {
|
||||
let window = window_from_node(self).root();
|
||||
UrlParser::new().base_url(&window.r().page().get_url())
|
||||
UrlParser::new().base_url(&window.r().get_url())
|
||||
.parse(url.as_slice()).ok()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
fn generate_new_subpage_id(self, page: &Page) -> (SubpageId, Option<SubpageId>) {
|
||||
fn generate_new_subpage_id(self) -> (SubpageId, Option<SubpageId>) {
|
||||
let old_subpage_id = self.subpage_id.get();
|
||||
let subpage_id = page.get_next_subpage_id();
|
||||
let win = window_from_node(self).root();
|
||||
let subpage_id = win.r().get_next_subpage_id();
|
||||
self.subpage_id.set(Some(subpage_id));
|
||||
(subpage_id, old_subpage_id)
|
||||
}
|
||||
|
@ -105,14 +106,13 @@ impl<'a> HTMLIFrameElementHelpers for JSRef<'a, HTMLIFrameElement> {
|
|||
|
||||
let window = window_from_node(self).root();
|
||||
let window = window.r();
|
||||
let page = window.page();
|
||||
let (new_subpage_id, old_subpage_id) = self.generate_new_subpage_id(page);
|
||||
let (new_subpage_id, old_subpage_id) = self.generate_new_subpage_id();
|
||||
|
||||
self.containing_page_pipeline_id.set(Some(page.id));
|
||||
self.containing_page_pipeline_id.set(Some(window.pipeline()));
|
||||
|
||||
let ConstellationChan(ref chan) = page.constellation_chan;
|
||||
let ConstellationChan(ref chan) = window.constellation_chan();
|
||||
chan.send(ConstellationMsg::ScriptLoadedURLInIFrame(url,
|
||||
page.id,
|
||||
window.pipeline(),
|
||||
new_subpage_id,
|
||||
old_subpage_id,
|
||||
sandboxed)).unwrap();
|
||||
|
@ -172,14 +172,10 @@ impl<'a> HTMLIFrameElementMethods for JSRef<'a, HTMLIFrameElement> {
|
|||
let window = window_from_node(self).root();
|
||||
let window = window.r();
|
||||
let children = window.page().children.borrow();
|
||||
let child = children.iter().find(|child| {
|
||||
child.subpage_id.unwrap() == subpage_id
|
||||
});
|
||||
child.and_then(|page| {
|
||||
page.frame.borrow().as_ref().map(|frame| {
|
||||
Temporary::new(frame.window.clone())
|
||||
})
|
||||
})
|
||||
children.iter().find(|child| {
|
||||
let window = child.window().root();
|
||||
window.r().subpage() == Some(subpage_id)
|
||||
}).map(|page| page.window())
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -189,7 +185,7 @@ impl<'a> HTMLIFrameElementMethods for JSRef<'a, HTMLIFrameElement> {
|
|||
Some(self_url) => self_url,
|
||||
None => return None,
|
||||
};
|
||||
let win_url = window_from_node(self).root().r().page().get_url();
|
||||
let win_url = window_from_node(self).root().r().get_url();
|
||||
|
||||
if UrlHelper::SameOrigin(&self_url, &win_url) {
|
||||
Some(window.r().Document())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue