aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/html/hubbub_html_parser.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2014-02-25 17:42:43 -0500
committerJosh Matthews <josh@joshmatthews.net>2014-02-28 13:42:03 -0500
commitfa542e5de7c4f79cd4bd1347d847543b9327f520 (patch)
treee5a4c426f1cd3ca4e787020389df10374fc77095 /src/components/script/html/hubbub_html_parser.rs
parent021d32368d569298da619041c9ffe262c91063e4 (diff)
downloadservo-fa542e5de7c4f79cd4bd1347d847543b9327f520.tar.gz
servo-fa542e5de7c4f79cd4bd1347d847543b9327f520.zip
De-@mut the script crate.
Diffstat (limited to 'src/components/script/html/hubbub_html_parser.rs')
-rw-r--r--src/components/script/html/hubbub_html_parser.rs28
1 files changed, 10 insertions, 18 deletions
diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs
index 6d423b5eda5..3c36b70a0ca 100644
--- a/src/components/script/html/hubbub_html_parser.rs
+++ b/src/components/script/html/hubbub_html_parser.rs
@@ -15,11 +15,10 @@ use dom::htmlformelement::HTMLFormElement;
use dom::node::{ElementNodeTypeId, INode, NodeHelpers};
use dom::types::*;
use html::cssparse::{InlineProvenance, StylesheetProvenance, UrlProvenance, spawn_css_parser};
-use script_task::page_from_context;
+use script_task::Page;
use extra::url::Url;
use hubbub::hubbub;
-use js::jsapi::JSContext;
use servo_msg::constellation_msg::SubpageId;
use servo_net::resource_task::{Load, Payload, Done, ResourceTask, load_whole_resource};
use servo_util::namespace::Null;
@@ -246,7 +245,7 @@ pub fn build_element_from_tag(tag: DOMString, document: &JS<Document>) -> JS<Ele
return ElementCast::from(&HTMLUnknownElement::new(tag, document));
}
-pub fn parse_html(cx: *JSContext,
+pub fn parse_html(page: &Page,
document: &mut JS<Document>,
url: Url,
resource_task: ResourceTask,
@@ -282,17 +281,16 @@ pub fn parse_html(cx: *JSContext,
let url2 = base_url.clone();
let url3 = url2.clone();
- // Store the final URL before we start parsing, so that DOM routines
- // (e.g. HTMLImageElement::update_image) can resolve relative URLs
- // correctly.
- //
- // FIXME: is this safe? When we instead pass an &mut Page to parse_html,
- // we crash with a dynamic borrow failure.
- let page = page_from_context(cx);
- unsafe {
- (*page).url = Some((url2.clone(), true));
+ {
+ // Store the final URL before we start parsing, so that DOM routines
+ // (e.g. HTMLImageElement::update_image) can resolve relative URLs
+ // correctly.
+ let mut page_url = page.mut_url();
+ *page_url.get() = Some((url2.clone(), true));
}
+ let pipeline_id = page.id;
+
let mut parser = hubbub::Parser("UTF-8", false);
debug!("created parser");
@@ -365,12 +363,6 @@ pub fn parse_html(cx: *JSContext,
let subpage_id = next_subpage_id.get();
next_subpage_id.set(SubpageId(*subpage_id + 1));
- // Pipeline Id
- let pipeline_id = {
- let page = page_from_context(cx);
- unsafe { (*page).id }
- };
-
iframe_element.get_mut().size = Some(IFrameSize {
pipeline_id: pipeline_id,
subpage_id: subpage_id,