diff options
author | Patrick Walton <pcwalton@mimiga.net> | 2013-12-12 19:36:51 -0800 |
---|---|---|
committer | Patrick Walton <pcwalton@mimiga.net> | 2013-12-13 10:43:27 -0800 |
commit | 21e8c72a7526a32733453221d4ed10ac070521dd (patch) | |
tree | 03204e5058c7b16f07a3718d240d3bacfd9a0021 /src/components/script/html/hubbub_html_parser.rs | |
parent | 499aa97fa4424cad9585e57987665542003e2597 (diff) | |
download | servo-21e8c72a7526a32733453221d4ed10ac070521dd.tar.gz servo-21e8c72a7526a32733453221d4ed10ac070521dd.zip |
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.
Diffstat (limited to 'src/components/script/html/hubbub_html_parser.rs')
-rw-r--r-- | src/components/script/html/hubbub_html_parser.rs | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index b36e1d60cf2..e73d1205950 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -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))); } } } |