Added support for <style> tags

This commit is contained in:
Emi Simpson 2019-12-05 20:05:52 -05:00
parent 1de0fc0961
commit d574e9a5da
No known key found for this signature in database
GPG Key ID: 68FAB2E2E6DFC98B
2 changed files with 30 additions and 3 deletions

View File

@ -7,6 +7,7 @@ use html5ever::tree_builder::{Attribute, TreeSink};
use html5ever::{local_name, namespace_url, ns};
use http::retrieve_asset;
use js::attr_is_event_handler;
use std::fmt::Write as OtherWrite;
use std::io::{stderr, Write};
use std::collections::HashMap;
use std::default::Default;
@ -144,6 +145,7 @@ pub fn walk_and_embed_assets(
Ok((css_data, _)) => resolve_css_imports(
cache,
&css_data,
true,
&href_full_url,
opt_user_agent,
opt_silent,
@ -297,6 +299,27 @@ pub fn walk_and_embed_assets(
if opt_no_css {
// Empty inner content of STYLE tags
node.children.borrow_mut().clear();
} else {
for node in node.children.borrow_mut().iter_mut() {
match node.data {
NodeData::Text {ref contents} => {
let mut tendril = contents.borrow_mut();
let replacement = resolve_css_imports(
cache,
dbg!(tendril.as_ref()),
false,
&url,
opt_user_agent,
opt_silent,
opt_insecure,
);
tendril.clear();
tendril.write_str(&replacement)
.expect("Failed to update DOM");
},
_ => (),
}
}
}
}
"form" => {

View File

@ -85,6 +85,7 @@ pub fn resolve_url<T: AsRef<str>, U: AsRef<str>>(from: T, to: U) -> Result<Strin
pub fn resolve_css_imports(
cache: &mut HashMap<String, String>,
css_string: &str,
as_dataurl: bool,
href: &str,
opt_user_agent: &str,
opt_silent: bool,
@ -118,6 +119,7 @@ pub fn resolve_css_imports(
.map(|(content, _)| resolve_css_imports(
cache,
&content,
true, //NOW, convert to data URL
&embedded_url,
opt_user_agent,
opt_silent,
@ -154,7 +156,9 @@ pub fn resolve_css_imports(
resolved_css = t.clone();
}
let encoded_css = data_to_dataurl("text/css", resolved_css.as_bytes());
encoded_css.to_string()
if as_dataurl {
data_to_dataurl("text/css", resolved_css.as_bytes())
} else {
resolved_css
}
}