events: Move fragment stringification out of HtmlSanitizer::clean
This commit is contained in:
parent
69c807bdc1
commit
ae26730e29
@ -23,7 +23,7 @@ pub fn sanitize_html(
|
||||
remove_reply_fallback: RemoveReplyFallback,
|
||||
) -> String {
|
||||
let sanitizer = HtmlSanitizer::new(mode, remove_reply_fallback);
|
||||
sanitizer.clean(s)
|
||||
sanitizer.clean(s).to_string()
|
||||
}
|
||||
|
||||
/// What HTML [tags and attributes] should be kept by the sanitizer.
|
||||
@ -64,7 +64,7 @@ pub enum RemoveReplyFallback {
|
||||
#[cfg(feature = "unstable-sanitize")]
|
||||
pub fn remove_html_reply_fallback(s: &str) -> String {
|
||||
let sanitizer = HtmlSanitizer::reply_fallback_remover();
|
||||
sanitizer.clean(s)
|
||||
sanitizer.clean(s).to_string()
|
||||
}
|
||||
|
||||
/// Remove the [rich reply fallback] of the given plain text string.
|
||||
|
@ -58,7 +58,7 @@ impl HtmlSanitizer {
|
||||
}
|
||||
|
||||
/// Clean the given HTML string with this sanitizer.
|
||||
pub fn clean(&self, html: &str) -> String {
|
||||
pub fn clean(&self, html: &str) -> Fragment {
|
||||
let mut fragment = Fragment::parse_html(html);
|
||||
|
||||
let root = fragment.nodes[0].first_child.unwrap();
|
||||
@ -68,7 +68,7 @@ impl HtmlSanitizer {
|
||||
self.clean_node(&mut fragment, child, 0);
|
||||
}
|
||||
|
||||
fragment.to_string()
|
||||
fragment
|
||||
}
|
||||
|
||||
fn clean_node(&self, fragment: &mut Fragment, node_id: usize, depth: u32) {
|
||||
@ -313,7 +313,7 @@ mod tests {
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
sanitized,
|
||||
sanitized.to_string(),
|
||||
"\
|
||||
<ul><li>This</li><li>has</li><li>no</li><li>tag</li></ul>\
|
||||
<p>This is a paragraph <span data-mx-color=\"green\">with some color</span></p>\
|
||||
@ -342,7 +342,7 @@ mod tests {
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
sanitized,
|
||||
sanitized.to_string(),
|
||||
"\
|
||||
<mx-reply>\
|
||||
<blockquote>\
|
||||
@ -377,7 +377,7 @@ mod tests {
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
sanitized,
|
||||
sanitized.to_string(),
|
||||
"\
|
||||
This has no tag\
|
||||
<p>But this is inside a tag</p>\
|
||||
@ -404,7 +404,7 @@ mod tests {
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
sanitized,
|
||||
sanitized.to_string(),
|
||||
"\
|
||||
<keep-me>This keeps its tag</keep-me>\
|
||||
<p>But this is inside a tag</p>\
|
||||
@ -423,7 +423,7 @@ mod tests {
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
sanitized,
|
||||
sanitized.to_string(),
|
||||
"\
|
||||
<h1>Title for important stuff</h1>\
|
||||
<p>Look at <font color=\"blue\">me!</font></p>\
|
||||
@ -442,7 +442,7 @@ mod tests {
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
sanitized,
|
||||
sanitized.to_string(),
|
||||
"\
|
||||
<p>Look at that picture:</p>\
|
||||
"
|
||||
@ -459,7 +459,7 @@ mod tests {
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
sanitized,
|
||||
sanitized.to_string(),
|
||||
"\
|
||||
<p>Go see my local website</p>\
|
||||
"
|
||||
@ -476,7 +476,7 @@ mod tests {
|
||||
",
|
||||
);
|
||||
assert_eq!(
|
||||
sanitized,
|
||||
sanitized.to_string(),
|
||||
"\
|
||||
<p>Join my room</p>\
|
||||
<p>To talk about <a href=\"https://mycat.org\">my cat</a></p>\
|
||||
@ -491,7 +491,7 @@ mod tests {
|
||||
",
|
||||
);
|
||||
assert_eq!(
|
||||
sanitized,
|
||||
sanitized.to_string(),
|
||||
"\
|
||||
<p>Join <a href=\"matrix:r/myroom:notareal.hs\">my room</a></p>\
|
||||
<p>To talk about <a href=\"https://mycat.org\">my cat</a></p>\
|
||||
@ -512,7 +512,7 @@ mod tests {
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
sanitized,
|
||||
sanitized.to_string(),
|
||||
"\
|
||||
<pre><code class=\"language-rust\">
|
||||
type StringList = Vec<String>;
|
||||
@ -534,7 +534,7 @@ mod tests {
|
||||
.chain(std::iter::repeat("</div>").take(100))
|
||||
.collect();
|
||||
|
||||
let sanitized = sanitizer.clean(&deeply_nested_html);
|
||||
let sanitized = sanitizer.clean(&deeply_nested_html).to_string();
|
||||
|
||||
assert!(sanitized.contains("I should be fine."));
|
||||
assert!(!sanitized.contains("I am in too deep!"));
|
||||
|
Loading…
x
Reference in New Issue
Block a user