Loading k9mail/build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ dependencies { compile "com.squareup.okio:okio:${okioVersion}" compile 'commons-io:commons-io:2.4' compile "com.android.support:support-v4:${androidSupportLibraryVersion}" compile 'net.sourceforge.htmlcleaner:htmlcleaner:2.16' compile 'net.sourceforge.htmlcleaner:htmlcleaner:2.18' compile 'de.cketti.library.changelog:ckchangelog:1.2.1' compile 'com.github.bumptech.glide:glide:3.6.1' compile 'com.splitwise:tokenautocomplete:2.0.7' Loading k9mail/src/main/java/com/fsck/k9/helper/HtmlSanitizer.java +1 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ public class HtmlSanitizer { properties.setOmitDoctypeDeclaration(false); properties.setTranslateSpecialEntities(false); properties.setRecognizeUnicodeChars(false); properties.setIgnoreQuestAndExclam(false); return properties; } Loading k9mail/src/test/java/com/fsck/k9/helper/HtmlSanitizerTest.java +71 −9 Original line number Diff line number Diff line Loading @@ -21,7 +21,10 @@ public class HtmlSanitizerTest { "<head><meta http-equiv=\"refresh\" content=\"1; URL=http://example.com/\"></head>" + "<body>Message</body>" + "</html>"; assertEquals("<html><head></head><body>Message</body></html>", htmlSanitizer.sanitize(html)); String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body>Message</body></html>", result); } @Test Loading @@ -30,7 +33,10 @@ public class HtmlSanitizerTest { "<head></head><meta http-equiv=\"refresh\" content=\"1; URL=http://example.com/\">" + "<body>Message</body>" + "</html>"; assertEquals("<html><head></head><body>Message</body></html>", htmlSanitizer.sanitize(html)); String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body>Message</body></html>", result); } @Test Loading @@ -39,7 +45,10 @@ public class HtmlSanitizerTest { "<head></head>" + "<body><meta http-equiv=\"refresh\" content=\"1; URL=http://example.com/\">Message</body>" + "</html>"; assertEquals("<html><head></head><body>Message</body></html>", htmlSanitizer.sanitize(html)); String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body>Message</body></html>", result); } @Test Loading @@ -48,7 +57,10 @@ public class HtmlSanitizerTest { "<head><meta http-equiv=\"REFRESH\" content=\"1; URL=http://example.com/\"></head>" + "<body>Message</body>" + "</html>"; assertEquals("<html><head></head><body>Message</body></html>", htmlSanitizer.sanitize(html)); String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body>Message</body></html>", result); } @Test Loading @@ -57,7 +69,10 @@ public class HtmlSanitizerTest { "<head><meta http-equiv=\"Refresh\" content=\"1; URL=http://example.com/\"></head>" + "<body>Message</body>" + "</html>"; assertEquals("<html><head></head><body>Message</body></html>", htmlSanitizer.sanitize(html)); String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body>Message</body></html>", result); } @Test Loading @@ -66,7 +81,10 @@ public class HtmlSanitizerTest { "<head><meta http-equiv=refresh content=\"1; URL=http://example.com/\"></head>" + "<body>Message</body>" + "</html>"; assertEquals("<html><head></head><body>Message</body></html>", htmlSanitizer.sanitize(html)); String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body>Message</body></html>", result); } @Test Loading @@ -75,7 +93,10 @@ public class HtmlSanitizerTest { "<head><meta http-equiv=\"refresh \" content=\"1; URL=http://example.com/\"></head>" + "<body>Message</body>" + "</html>"; assertEquals("<html><head></head><body>Message</body></html>", htmlSanitizer.sanitize(html)); String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body>Message</body></html>", result); } @Test Loading @@ -84,7 +105,10 @@ public class HtmlSanitizerTest { "<head><meta http-equiv=\"refresh\" content=\"1; URL=http://example.com/\"></head>" + "<body><meta http-equiv=\"refresh\" content=\"1; URL=http://example.com/\">Message</body>" + "</html>"; assertEquals("<html><head></head><body>Message</body></html>", htmlSanitizer.sanitize(html)); String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body>Message</body></html>", result); } @Test Loading @@ -96,7 +120,45 @@ public class HtmlSanitizerTest { "</head>" + "<body>Message</body>" + "</html>"; String result = htmlSanitizer.sanitize(html); assertEquals("<html><head><meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" /></head>" + "<body>Message</body></html>", htmlSanitizer.sanitize(html)); "<body>Message</body></html>", result); } @Test public void shouldProduceValidHtmlFromHtmlWithXmlDeclaration() { String html = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<html><head></head><body></body></html>"; String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body></body></html>", result); } @Test public void shouldNormalizeTables() { String html = "<html><head></head><body><table><tr><td></td><td></td></tr></table></body></html>"; String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body><table><tbody>" + "<tr><td></td><td></td></tr>" + "</tbody></table></body></html>", result); } @Test public void shouldHtmlEncodeXmlDirectives() { String html = "<html><head></head><body><table>" + "<tr><td><!==><!==>Hmailserver service shutdown:</td><td><!==><!==>Ok</td></tr>" + "</table></body></html>"; String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body><table><tbody>" + "<tr><td><!==><!==>Hmailserver service shutdown:</td><td><!==><!==>Ok</td></tr>" + "</tbody></table></body></html>", result); } } Loading
k9mail/build.gradle +1 −1 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ dependencies { compile "com.squareup.okio:okio:${okioVersion}" compile 'commons-io:commons-io:2.4' compile "com.android.support:support-v4:${androidSupportLibraryVersion}" compile 'net.sourceforge.htmlcleaner:htmlcleaner:2.16' compile 'net.sourceforge.htmlcleaner:htmlcleaner:2.18' compile 'de.cketti.library.changelog:ckchangelog:1.2.1' compile 'com.github.bumptech.glide:glide:3.6.1' compile 'com.splitwise:tokenautocomplete:2.0.7' Loading
k9mail/src/main/java/com/fsck/k9/helper/HtmlSanitizer.java +1 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ public class HtmlSanitizer { properties.setOmitDoctypeDeclaration(false); properties.setTranslateSpecialEntities(false); properties.setRecognizeUnicodeChars(false); properties.setIgnoreQuestAndExclam(false); return properties; } Loading
k9mail/src/test/java/com/fsck/k9/helper/HtmlSanitizerTest.java +71 −9 Original line number Diff line number Diff line Loading @@ -21,7 +21,10 @@ public class HtmlSanitizerTest { "<head><meta http-equiv=\"refresh\" content=\"1; URL=http://example.com/\"></head>" + "<body>Message</body>" + "</html>"; assertEquals("<html><head></head><body>Message</body></html>", htmlSanitizer.sanitize(html)); String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body>Message</body></html>", result); } @Test Loading @@ -30,7 +33,10 @@ public class HtmlSanitizerTest { "<head></head><meta http-equiv=\"refresh\" content=\"1; URL=http://example.com/\">" + "<body>Message</body>" + "</html>"; assertEquals("<html><head></head><body>Message</body></html>", htmlSanitizer.sanitize(html)); String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body>Message</body></html>", result); } @Test Loading @@ -39,7 +45,10 @@ public class HtmlSanitizerTest { "<head></head>" + "<body><meta http-equiv=\"refresh\" content=\"1; URL=http://example.com/\">Message</body>" + "</html>"; assertEquals("<html><head></head><body>Message</body></html>", htmlSanitizer.sanitize(html)); String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body>Message</body></html>", result); } @Test Loading @@ -48,7 +57,10 @@ public class HtmlSanitizerTest { "<head><meta http-equiv=\"REFRESH\" content=\"1; URL=http://example.com/\"></head>" + "<body>Message</body>" + "</html>"; assertEquals("<html><head></head><body>Message</body></html>", htmlSanitizer.sanitize(html)); String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body>Message</body></html>", result); } @Test Loading @@ -57,7 +69,10 @@ public class HtmlSanitizerTest { "<head><meta http-equiv=\"Refresh\" content=\"1; URL=http://example.com/\"></head>" + "<body>Message</body>" + "</html>"; assertEquals("<html><head></head><body>Message</body></html>", htmlSanitizer.sanitize(html)); String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body>Message</body></html>", result); } @Test Loading @@ -66,7 +81,10 @@ public class HtmlSanitizerTest { "<head><meta http-equiv=refresh content=\"1; URL=http://example.com/\"></head>" + "<body>Message</body>" + "</html>"; assertEquals("<html><head></head><body>Message</body></html>", htmlSanitizer.sanitize(html)); String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body>Message</body></html>", result); } @Test Loading @@ -75,7 +93,10 @@ public class HtmlSanitizerTest { "<head><meta http-equiv=\"refresh \" content=\"1; URL=http://example.com/\"></head>" + "<body>Message</body>" + "</html>"; assertEquals("<html><head></head><body>Message</body></html>", htmlSanitizer.sanitize(html)); String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body>Message</body></html>", result); } @Test Loading @@ -84,7 +105,10 @@ public class HtmlSanitizerTest { "<head><meta http-equiv=\"refresh\" content=\"1; URL=http://example.com/\"></head>" + "<body><meta http-equiv=\"refresh\" content=\"1; URL=http://example.com/\">Message</body>" + "</html>"; assertEquals("<html><head></head><body>Message</body></html>", htmlSanitizer.sanitize(html)); String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body>Message</body></html>", result); } @Test Loading @@ -96,7 +120,45 @@ public class HtmlSanitizerTest { "</head>" + "<body>Message</body>" + "</html>"; String result = htmlSanitizer.sanitize(html); assertEquals("<html><head><meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" /></head>" + "<body>Message</body></html>", htmlSanitizer.sanitize(html)); "<body>Message</body></html>", result); } @Test public void shouldProduceValidHtmlFromHtmlWithXmlDeclaration() { String html = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<html><head></head><body></body></html>"; String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body></body></html>", result); } @Test public void shouldNormalizeTables() { String html = "<html><head></head><body><table><tr><td></td><td></td></tr></table></body></html>"; String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body><table><tbody>" + "<tr><td></td><td></td></tr>" + "</tbody></table></body></html>", result); } @Test public void shouldHtmlEncodeXmlDirectives() { String html = "<html><head></head><body><table>" + "<tr><td><!==><!==>Hmailserver service shutdown:</td><td><!==><!==>Ok</td></tr>" + "</table></body></html>"; String result = htmlSanitizer.sanitize(html); assertEquals("<html><head></head><body><table><tbody>" + "<tr><td><!==><!==>Hmailserver service shutdown:</td><td><!==><!==>Ok</td></tr>" + "</tbody></table></body></html>", result); } }