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