mirror of
https://github.com/servo/servo.git
synced 2025-06-20 15:18:58 +01:00
constellation: Stop using futures for frame sizes.
This will allow us to stop going to the DOM in order to handle iframe sizing. Instead we can just store the pipeline and frame IDs of iframes inside the flow tree itself.
This commit is contained in:
parent
499aa97fa4
commit
21e8c72a75
12 changed files with 243 additions and 197 deletions
|
@ -12,26 +12,24 @@ use dom::namespace;
|
|||
use dom::node::{AbstractNode, ElementNodeTypeId, ScriptView};
|
||||
use dom::types::*;
|
||||
use html::cssparse::{InlineProvenance, StylesheetProvenance, UrlProvenance, spawn_css_parser};
|
||||
use js::jsapi::JSContext;
|
||||
use style::Stylesheet;
|
||||
use script_task::page_from_context;
|
||||
|
||||
use std::cast;
|
||||
use std::cell::Cell;
|
||||
use std::comm;
|
||||
use std::comm::{Port, SharedChan};
|
||||
use std::str;
|
||||
use std::str::eq_slice;
|
||||
use std::from_str::FromStr;
|
||||
use extra::url::Url;
|
||||
use hubbub::hubbub;
|
||||
use js::jsapi::JSContext;
|
||||
use servo_msg::constellation_msg::{ConstellationChan, SubpageId};
|
||||
use servo_net::image_cache_task::ImageCacheTask;
|
||||
use servo_net::resource_task::{Load, Payload, Done, ResourceTask, load_whole_resource};
|
||||
use servo_util::tree::{TreeNodeRef, ElementLike};
|
||||
use servo_util::url::make_url;
|
||||
use extra::future::Future;
|
||||
use extra::url::Url;
|
||||
use geom::size::Size2D;
|
||||
use std::cast;
|
||||
use std::cell::Cell;
|
||||
use std::comm::{Port, SharedChan};
|
||||
use std::comm;
|
||||
use std::from_str::FromStr;
|
||||
use std::str::eq_slice;
|
||||
use std::str;
|
||||
use style::Stylesheet;
|
||||
|
||||
macro_rules! handle_element(
|
||||
($document: expr,
|
||||
|
@ -67,7 +65,7 @@ enum JSMessage {
|
|||
/// Messages generated by the HTML parser upon discovery of additional resources
|
||||
pub enum HtmlDiscoveryMessage {
|
||||
HtmlDiscoveredStyle(Stylesheet),
|
||||
HtmlDiscoveredIFrame((Url, SubpageId, Future<Size2D<uint>>, bool)),
|
||||
HtmlDiscoveredIFrame((Url, SubpageId, bool)),
|
||||
HtmlDiscoveredScript(JSResult)
|
||||
}
|
||||
|
||||
|
@ -374,10 +372,6 @@ pub fn parse_html(cx: *JSContext,
|
|||
let iframe_url = make_url(src.clone(), Some(url2.clone()));
|
||||
iframe_element.frame = Some(iframe_url.clone());
|
||||
|
||||
// Size future
|
||||
let (port, chan) = comm::oneshot();
|
||||
let size_future = Future::from_port(port);
|
||||
|
||||
// Subpage Id
|
||||
let subpage_id = next_subpage_id.take();
|
||||
next_subpage_id.put_back(SubpageId(*subpage_id + 1));
|
||||
|
@ -391,11 +385,11 @@ pub fn parse_html(cx: *JSContext,
|
|||
iframe_element.size = Some(IFrameSize {
|
||||
pipeline_id: pipeline_id,
|
||||
subpage_id: subpage_id,
|
||||
future_chan: Some(chan),
|
||||
constellation_chan: constellation_chan.clone(),
|
||||
});
|
||||
iframe_chan.send(HtmlDiscoveredIFrame((iframe_url, subpage_id,
|
||||
size_future, sandboxed)));
|
||||
iframe_chan.send(HtmlDiscoveredIFrame((iframe_url,
|
||||
subpage_id,
|
||||
sandboxed)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue