aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script
diff options
context:
space:
mode:
authorYoungmin Yoo <youngmin.yoo@samsung.com>2014-02-19 15:52:58 +0900
committerYoungmin Yoo <youngmin.yoo@samsung.com>2014-02-19 17:23:50 +0900
commit7b56e75adb0002a3bd001aa61b55249c938fc60e (patch)
treead070df96a1a874cf7df22d9c8ac34124366d9e7 /src/components/script
parenta12608d2e4d44da49d8f26fc9d111b7dfd01bfd7 (diff)
downloadservo-7b56e75adb0002a3bd001aa61b55249c938fc60e.tar.gz
servo-7b56e75adb0002a3bd001aa61b55249c938fc60e.zip
Support base_url in stylesheet
Diffstat (limited to 'src/components/script')
-rw-r--r--src/components/script/dom/element.rs4
-rw-r--r--src/components/script/html/hubbub_html_parser.rs7
2 files changed, 6 insertions, 5 deletions
diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs
index 9ffb17c3254..2eb0553f2f6 100644
--- a/src/components/script/dom/element.rs
+++ b/src/components/script/dom/element.rs
@@ -221,7 +221,9 @@ impl Element {
match local_name.as_slice() {
"style" => {
- self.style_attribute = Some(style::parse_style_attribute(value))
+ let doc = self.node.owner_doc();
+ let base_url = doc.document().url.clone();
+ self.style_attribute = Some(style::parse_style_attribute(value, &base_url))
}
"id" if abstract_self.is_in_doc() => {
// XXX: this dual declaration are workaround to avoid the compile error:
diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs
index 4ba46343817..9b66e4ecb1a 100644
--- a/src/components/script/html/hubbub_html_parser.rs
+++ b/src/components/script/html/hubbub_html_parser.rs
@@ -26,7 +26,6 @@ use servo_util::url::parse_url;
use std::cast;
use std::cell::RefCell;
use std::comm::{Port, SharedChan};
-use std::from_str::FromStr;
use std::str;
use style::Stylesheet;
@@ -277,7 +276,8 @@ pub fn parse_html(cx: *JSContext,
debug!("Fetched page; metadata is {:?}", load_response.metadata);
- let url2 = load_response.metadata.final_url.clone();
+ let base_url = load_response.metadata.final_url.clone();
+ let url2 = base_url.clone();
let url3 = url2.clone();
// Store the final URL before we start parsing, so that DOM routines
@@ -485,7 +485,6 @@ pub fn parse_html(cx: *JSContext,
// We've reached the end of a <style> so we can submit all the text to the parser.
unsafe {
let style: AbstractNode = NodeWrapping::from_hubbub_node(style);
- let url = FromStr::from_str("http://example.com/"); // FIXME
let mut data = ~[];
debug!("iterating over children {:?}", style.first_child());
for child in style.children() {
@@ -496,7 +495,7 @@ pub fn parse_html(cx: *JSContext,
}
debug!("style data = {:?}", data);
- let provenance = InlineProvenance(url.unwrap(), data.concat());
+ let provenance = InlineProvenance(base_url.clone(), data.concat());
css_chan3.send(CSSTaskNewFile(provenance));
}
},