script: Move the stylesheet loading code from htmllinkelement to stylesheet_loader. Make it track subresource loads properly.

This commit is contained in:
Emilio Cobos Álvarez 2016-12-16 12:18:16 +01:00
parent 21bf91c386
commit 7582a2d59d
No known key found for this signature in database
GPG key ID: 056B727BB9C1027C
4 changed files with 274 additions and 154 deletions

View file

@ -102,10 +102,19 @@ impl HTMLStyleElement {
let data = node.GetTextContent().expect("Element.textContent must be a string");
let mq = parse_media_query_list(&mut CssParser::new(&mq_str));
let sheet = Stylesheet::from_str(&data, url, Origin::Author, mq, win.css_error_reporter(),
let loader = StylesheetLoader::for_element(self.upcast());
let sheet = Stylesheet::from_str(&data, url, Origin::Author, mq,
Some(&loader),
win.css_error_reporter(),
ParserContextExtraData::default());
let sheet = Arc::new(sheet);
// No subresource loads were triggered, just fire the load event now.
if self.pending_loads.get() == 0 {
self.upcast::<EventTarget>().fire_event(atom!("load"));
}
win.layout_chan().send(Msg::AddStylesheet(sheet.clone())).unwrap();
*self.stylesheet.borrow_mut() = Some(sheet);
let doc = document_from_node(self);