mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Use internal mutability for HTMLIFrameElement.
This commit is contained in:
parent
9acba1477c
commit
bb0cbb0a74
2 changed files with 6 additions and 7 deletions
|
@ -112,7 +112,7 @@ pub trait TLayoutNode {
|
|||
fail!("not an iframe element!")
|
||||
}
|
||||
let iframe_element: JS<HTMLIFrameElement> = self.get_jsmanaged().transmute_copy();
|
||||
let size = (*iframe_element.unsafe_get()).size.unwrap();
|
||||
let size = (*iframe_element.unsafe_get()).size.deref().get().unwrap();
|
||||
(size.pipeline_id, size.subpage_id)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ enum SandboxAllowance {
|
|||
#[deriving(Encodable)]
|
||||
pub struct HTMLIFrameElement {
|
||||
pub htmlelement: HTMLElement,
|
||||
pub size: Option<IFrameSize>,
|
||||
pub size: Traceable<Cell<Option<IFrameSize>>>,
|
||||
pub sandbox: Traceable<Cell<Option<u8>>>,
|
||||
}
|
||||
|
||||
|
@ -79,7 +79,7 @@ impl HTMLIFrameElement {
|
|||
pub fn new_inherited(localName: DOMString, document: &JSRef<Document>) -> HTMLIFrameElement {
|
||||
HTMLIFrameElement {
|
||||
htmlelement: HTMLElement::new_inherited(HTMLIFrameElementTypeId, localName, document),
|
||||
size: None,
|
||||
size: Traceable::new(Cell::new(None)),
|
||||
sandbox: Traceable::new(Cell::new(None)),
|
||||
}
|
||||
}
|
||||
|
@ -120,7 +120,7 @@ impl<'a> HTMLIFrameElementMethods for JSRef<'a, HTMLIFrameElement> {
|
|||
}
|
||||
|
||||
fn GetContentWindow(&self) -> Option<Temporary<Window>> {
|
||||
self.size.and_then(|size| {
|
||||
self.size.deref().get().and_then(|size| {
|
||||
let window = window_from_node(self).root();
|
||||
let children = &*window.deref().page.children.deref().borrow();
|
||||
let child = children.iter().find(|child| {
|
||||
|
@ -194,11 +194,10 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLIFrameElement> {
|
|||
let page = window.deref().page();
|
||||
let subpage_id = page.get_next_subpage_id();
|
||||
|
||||
let mut self_alias = self.clone();
|
||||
self_alias.deref_mut().size = Some(IFrameSize {
|
||||
self.deref().size.deref().set(Some(IFrameSize {
|
||||
pipeline_id: page.id,
|
||||
subpage_id: subpage_id,
|
||||
});
|
||||
}));
|
||||
|
||||
let ConstellationChan(ref chan) = *page.constellation_chan.deref();
|
||||
chan.send(LoadIframeUrlMsg(url, page.id, subpage_id, sandboxed));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue