Loading app/core/src/main/java/com/fsck/k9/message/html/EmailTextToHtml.kt +1 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ class EmailTextToHtml private constructor(private val text: String) { } private fun appendHtmlPrefix() { html.append("<pre dir=\"auto\" class=\"$K9MAIL_CSS_CLASS\">") html.append("<pre class=\"$K9MAIL_CSS_CLASS\">") } private fun appendHtmlSuffix() { Loading app/core/src/main/java/com/fsck/k9/message/html/TextToHtml.kt +12 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,8 @@ class TextToHtml private constructor( private val retainOriginalWhitespace: Boolean ) { fun appendAsHtmlFragment() { appendHtmlPrefix() val modifications = HTML_MODIFIERS .flatMap { it.findModifications(text) } .sortedBy { it.startIndex } Loading Loading @@ -52,6 +54,16 @@ class TextToHtml private constructor( } appendHtmlEncoded(currentIndex, text.length) appendHtmlSuffix() } private fun appendHtmlPrefix() { html.append("""<div dir="auto">""") } private fun appendHtmlSuffix() { html.append("</div>") } private fun appendHtmlEncoded(startIndex: Int, endIndex: Int) { Loading app/core/src/test/java/com/fsck/k9/mailstore/MessageViewInfoExtractorTest.java +35 −19 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ import static org.mockito.Mockito.when; @SuppressWarnings("WeakerAccess") public class MessageViewInfoExtractorTest extends K9RobolectricTest { public static final String BODY_TEXT = "K-9 Mail rocks :>"; public static final String BODY_TEXT_HTML = "K-9 Mail rocks :>"; public static final String BODY_TEXT_HTML = "<div dir=\"auto\">K-9 Mail rocks :></div>"; public static final String BODY_TEXT_FLOWED = "K-9 Mail rocks :> \r\nflowed line\r\nnot flowed line"; public static final String SUBJECT = "sabject"; public static final String PROTECTED_SUBJECT = "protected subject"; Loading Loading @@ -126,8 +126,8 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { ViewableExtractedText container = messageViewInfoExtractor.extractTextFromViewables(outputViewableParts); String expectedHtml = "<pre dir=\"auto\" class=\"k9mail\">" + "K-9 Mail rocks :>" + "<pre class=\"k9mail\">" + BODY_TEXT_HTML + "</pre>"; assertEquals(BODY_TEXT, container.text); Loading @@ -153,8 +153,10 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { String expectedText = "K-9 Mail rocks :> flowed line\r\n" + "not flowed line"; String expectedHtml = "<pre dir=\"auto\" class=\"k9mail\">" + "<pre class=\"k9mail\">" + "<div dir=\"auto\">" + "K-9 Mail rocks :> flowed line<br>not flowed line" + "</div>" + "</pre>"; assertEquals(expectedText, container.text); Loading Loading @@ -214,13 +216,17 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { "------------------------------------------------------------------------\r\n\r\n" + bodyText2; String expectedHtml = "<pre dir=\"auto\" class=\"k9mail\">" + "<pre class=\"k9mail\">" + "<div dir=\"auto\">" + bodyText1 + "</div>" + "</pre>" + "<p style=\"margin-top: 2.5em; margin-bottom: 1em; " + "border-bottom: 1px solid #000\"></p>" + "<pre dir=\"auto\" class=\"k9mail\">" + "<pre class=\"k9mail\">" + "<div dir=\"auto\">" + bodyText2 + "</div>" + "</pre>"; Loading Loading @@ -280,7 +286,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { "\r\n" + innerBodyText; String expectedHtml = "<pre dir=\"auto\" class=\"k9mail\">" + "<pre class=\"k9mail\">" + BODY_TEXT_HTML + "</pre>" + "<p style=\"margin-top: 2.5em; margin-bottom: 1em; border-bottom: " + Loading @@ -300,8 +306,10 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { "<td>Subject</td>" + "</tr>" + "</table>" + "<pre dir=\"auto\" class=\"k9mail\">" + "<pre class=\"k9mail\">" + "<div dir=\"auto\">" + innerBodyText + "</div>" + "</pre>"; assertEquals(expectedText, container.text); Loading Loading @@ -356,12 +364,20 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { String expectedHtmlText = "<table style=\"border: 0\">" + "<tr><th style=\"text-align: left; vertical-align: top;\">Subject:</th><td>(No subject)</td></tr>" + "</table>" + "<pre dir=\"auto\" class=\"k9mail\">text body of first message<br></pre>" + "<pre class=\"k9mail\">" + "<div dir=\"auto\">" + "text body of first message<br>" + "</div>" + "</pre>" + "<p style=\"margin-top: 2.5em; margin-bottom: 1em; border-bottom: 1px solid #000\"></p>" + "<table style=\"border: 0\">" + "<tr><th style=\"text-align: left; vertical-align: top;\">Subject:</th><td>subject of second message</td></tr>" + "</table>" + "<pre dir=\"auto\" class=\"k9mail\">text part of second message<br></pre>"; "<pre class=\"k9mail\">" + "<div dir=\"auto\">" + "text part of second message<br>" + "</div>" + "</pre>"; assertEquals(4, outputViewableParts.size()); Loading Loading @@ -389,7 +405,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { false); assertEquals("<pre dir=\"auto\" class=\"k9mail\">text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">text</div></pre>", messageViewInfo.text); assertSame(attachmentViewInfo, messageViewInfo.attachments.get(0)); assertNull(messageViewInfo.cryptoResultAnnotation); assertTrue(messageViewInfo.extraAttachments.isEmpty()); Loading @@ -411,7 +427,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { false); assertEquals("<pre dir=\"auto\" class=\"k9mail\">text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">text</div></pre>", messageViewInfo.text); assertSame(annotation, messageViewInfo.cryptoResultAnnotation); assertSame(message, messageViewInfo.message); assertSame(message, messageViewInfo.rootPart); Loading @@ -436,7 +452,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { false); assertEquals("<pre dir=\"auto\" class=\"k9mail\">replacement text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">replacement text</div></pre>", messageViewInfo.text); assertSame(annotation, messageViewInfo.cryptoResultAnnotation); assertSame(message, messageViewInfo.message); assertSame(replacementPart, messageViewInfo.rootPart); Loading Loading @@ -464,7 +480,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { false); assertEquals("<pre dir=\"auto\" class=\"k9mail\">text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">text</div></pre>", messageViewInfo.text); assertSame(annotation, messageViewInfo.cryptoResultAnnotation); assertEquals("extra text", messageViewInfo.extraText); assertTrue(messageViewInfo.attachments.isEmpty()); Loading Loading @@ -494,7 +510,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { false); assertEquals("<pre dir=\"auto\" class=\"k9mail\">text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">text</div></pre>", messageViewInfo.text); assertSame(annotation, messageViewInfo.cryptoResultAnnotation); assertSame(attachmentViewInfo, messageViewInfo.extraAttachments.get(0)); assertTrue(messageViewInfo.attachments.isEmpty()); Loading Loading @@ -535,7 +551,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { true); assertSame(openPgpResultAnnotation, messageViewInfo.cryptoResultAnnotation); assertEquals("<pre dir=\"auto\" class=\"k9mail\">encrypted text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">encrypted text</div></pre>", messageViewInfo.text); assertTrue(messageViewInfo.attachments.isEmpty()); assertTrue(messageViewInfo.extraAttachments.isEmpty()); } Loading @@ -562,7 +578,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { true); assertSame(openPgpResultAnnotation, messageViewInfo.cryptoResultAnnotation); assertEquals("<pre dir=\"auto\" class=\"k9mail\">encrypted text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">encrypted text</div></pre>", messageViewInfo.text); assertEquals(PROTECTED_SUBJECT, messageViewInfo.subject); assertTrue(messageViewInfo.attachments.isEmpty()); assertTrue(messageViewInfo.extraAttachments.isEmpty()); Loading @@ -580,7 +596,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { MessageViewInfo messageViewInfo = messageViewInfoExtractor.extractMessageForView(message, null, false); assertEquals("<pre dir=\"auto\" class=\"k9mail\">text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">text</div></pre>", messageViewInfo.text); assertNull(messageViewInfo.cryptoResultAnnotation); assertTrue(messageViewInfo.attachments.isEmpty()); assertTrue(messageViewInfo.extraAttachments.isEmpty()); Loading @@ -604,7 +620,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { MessageViewInfo messageViewInfo = messageViewInfoExtractor.extractMessageForView(message, null, false); assertEquals("<pre dir=\"auto\" class=\"k9mail\">text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">text</div></pre>", messageViewInfo.text); assertNull(messageViewInfo.cryptoResultAnnotation); assertSame(mock, messageViewInfo.attachments.get(0)); assertTrue(messageViewInfo.extraAttachments.isEmpty()); Loading app/core/src/test/java/com/fsck/k9/message/TextBodyBuilderTest.kt +3 −3 Original line number Diff line number Diff line Loading @@ -12,14 +12,14 @@ class TextBodyBuilderTest(val testData: TestData) { companion object { private const val MESSAGE_TEXT = "my message\r\nwith two lines" private const val MESSAGE_TEXT_HTML = "my message<br>with two lines" private const val MESSAGE_TEXT_HTML = "<div dir=\"auto\">my message<br>with two lines</div>" private const val QUOTED_TEXT = ">quoted text\r\n>-- \r\n>Other signature" private const val QUOTED_HTML_BODY = "<blockquote>quoted text</blockquote>" private const val QUOTED_HTML_TAGS_END = "</body>\n</html>" private const val QUOTED_HTML_TAGS_START = "<!DOCTYPE html><html><head></head><body>" private const val SIGNATURE_TEXT = "-- \r\n\r\nsignature\r\n indented second line" private const val SIGNATURE_TEXT_HTML = "<div class='k9mail-signature'>-- <br><br>signature<br>\u00A0 indented second line</div>" private const val SIGNATURE_TEXT_HTML = "<div dir=\"auto\"><div class='k9mail-signature'>-- <br>" + "<br>signature<br>\u00A0 indented second line</div></div>" @JvmStatic @Parameterized.Parameters(name = "{index}: {0}") Loading app/core/src/test/java/com/fsck/k9/message/html/HtmlConverterTest.kt +75 −23 Original line number Diff line number Diff line Loading @@ -27,24 +27,36 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ |<pre dir="auto" class="k9mail"> |<pre class="k9mail"> |<div dir="auto"> |Panama!<br> |<br> |Bob Barker <bob@aol.com> wrote:<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"> |<div dir="auto"> | a canal<br> |<br> | Dorothy Jo Gideon <dorothy@aol.com> espoused:<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;"> |<div dir="auto"> |A man, a plan...<br> |</div> |</blockquote> |<div dir="auto"> |Too easy!<br> |</div> |</blockquote> |<div dir="auto"> |<br> |Nice job :)<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;"> |<div dir="auto"> |Guess! |</div> |</blockquote> |</blockquote> |</pre> Loading @@ -70,16 +82,20 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ |<pre dir="auto" class="k9mail"> |<pre class="k9mail"> |<div dir="auto"> |*facepalm*<br> |<br> |Bob Barker <bob@aol.com> wrote:<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"> |<div dir="auto"> | A wise man once said...<br> |<br> | LOL F1RST!!!!!<br> |<br> | :) |</div> |</blockquote> |</pre> """.trimMargin().removeLineBreaks() Loading @@ -103,20 +119,34 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ |<pre dir="auto" class="k9mail"> |<pre class="k9mail"> |<div dir="auto"> |zero<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"> |<div dir="auto"> |one<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;"> |<div dir="auto"> |two<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #8ae234; padding-left: 1ex;"> |<div dir="auto"> |three<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #fcaf3e; padding-left: 1ex;"> |<div dir="auto"> |four<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #e9b96e; padding-left: 1ex;"> |<div dir="auto"> |five<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ccc; padding-left: 1ex;"> |<div dir="auto"> |six |</div> |</blockquote> |</blockquote> |</blockquote> Loading @@ -142,10 +172,12 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ |<pre dir="auto" class="k9mail"> |<pre class="k9mail"> |<div dir="auto"> |foo<br> | bar<br> | baz<br> |</div> |</pre> """.trimMargin().removeLineBreaks() ) Loading @@ -167,13 +199,17 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ |<pre dir="auto" class="k9mail"> |<pre class="k9mail"> |<div dir="auto"> | <br> | &<br> | <br> | <<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"> |<div dir="auto"> |<br> |</div> |</blockquote> |</pre> """.trimMargin().removeLineBreaks() Loading Loading @@ -201,7 +237,8 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ <pre dir="auto" class="k9mail"> <pre class="k9mail"> <div dir="auto"> text <hr> some other text Loading @@ -213,6 +250,7 @@ class HtmlConverterTest { other direction <hr> end </div> </pre> """.trimIndent().removeLineBreaks() ) Loading @@ -231,10 +269,12 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ <pre dir="auto" class="k9mail"> <pre class="k9mail"> <div dir="auto"> hello<br> --- --- --- --- ---<br> foo bar </div> </pre> """.trimIndent().removeLineBreaks() ) Loading @@ -254,10 +294,12 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ <pre dir="auto" class="k9mail"> <pre class="k9mail"> <div dir="auto"> hello <hr> foo bar </div> </pre> """.trimIndent().removeLineBreaks() ) Loading @@ -271,9 +313,11 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ <pre dir="auto" class="k9mail"> <pre class="k9mail"> <div dir="auto"> hello----<br> <br> </div> </pre> """.trimIndent().removeLineBreaks() ) Loading @@ -285,7 +329,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtml(text) assertThat(result).isEqualTo("""<pre dir="auto" class="k9mail">--<br></pre>""") assertThat(result).isEqualTo("""<pre class="k9mail"><div dir="auto">--<br></div></pre>""") } @Test Loading @@ -294,7 +338,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtml(text) assertThat(result).isEqualTo("""<pre dir="auto" class="k9mail">==<br></pre>""") assertThat(result).isEqualTo("""<pre class="k9mail"><div dir="auto">==<br></div></pre>""") } @Test Loading @@ -303,7 +347,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtml(text) assertThat(result).isEqualTo("""<pre dir="auto" class="k9mail">__<br></pre>""") assertThat(result).isEqualTo("""<pre class="k9mail"><div dir="auto">__<br></div></pre>""") } @Test Loading @@ -319,7 +363,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtml(text) assertThat(result).isEqualTo("""<pre dir="auto" class="k9mail"><hr></pre>""") assertThat(result).isEqualTo("""<pre class="k9mail"><div dir="auto"><hr></div></pre>""") } @Test Loading @@ -330,9 +374,11 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ <pre dir="auto" class="k9mail"> <pre class="k9mail"> <div dir="auto"> <hr> foo bar </div> </pre> """.trimIndent().removeLineBreaks() ) Loading @@ -346,9 +392,11 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ <pre dir="auto" class="k9mail"> <pre class="k9mail"> <div dir="auto"> hello <hr> </div> </pre> """.trimIndent().removeLineBreaks() ) Loading @@ -367,10 +415,12 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ <pre dir="auto" class="k9mail"> <pre class="k9mail"> <div dir="auto"> hello <hr> world </div> </pre> """.trimIndent().removeLineBreaks() ) Loading @@ -389,12 +439,14 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ <pre dir="auto" class="k9mail"> <pre class="k9mail"> <div dir="auto"> text<br> <div class='k9mail-signature'> -- <br> signature with url: <a href="https://domain.example/">https://domain.example/</a> </div> </div> </pre> """.trimIndent().removeLineBreaks() ) Loading @@ -406,7 +458,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtmlFragment(text) assertThat(result).isEqualTo("\u00A0foo") assertThat(result).isEqualTo("<div dir=\"auto\">\u00A0foo</div>") } @Test Loading @@ -415,7 +467,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtmlFragment(text) assertThat(result).isEqualTo("\u00A0 foo") assertThat(result).isEqualTo("<div dir=\"auto\">\u00A0 foo</div>") } @Test Loading @@ -424,7 +476,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtmlFragment(text) assertThat(result).isEqualTo("\u00A0\u00A0\u00A0 some words here") assertThat(result).isEqualTo("<div dir=\"auto\">\u00A0\u00A0\u00A0 some words here</div>") } @Test Loading @@ -433,7 +485,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtmlFragment(text) assertThat(result).isEqualTo("foo\u00A0 bar") assertThat(result).isEqualTo("<div dir=\"auto\">foo\u00A0 bar</div>") } @Test Loading @@ -442,7 +494,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtmlFragment(text) assertThat(result).isEqualTo("foo <br>") assertThat(result).isEqualTo("<div dir=\"auto\">foo <br></div>") } @Test Loading @@ -451,7 +503,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtmlFragment(text) assertThat(result).isEqualTo("some words here\u00A0\u00A0 <br>") assertThat(result).isEqualTo("<div dir=\"auto\">some words here\u00A0\u00A0 <br></div>") } @Test Loading Loading
app/core/src/main/java/com/fsck/k9/message/html/EmailTextToHtml.kt +1 −1 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ class EmailTextToHtml private constructor(private val text: String) { } private fun appendHtmlPrefix() { html.append("<pre dir=\"auto\" class=\"$K9MAIL_CSS_CLASS\">") html.append("<pre class=\"$K9MAIL_CSS_CLASS\">") } private fun appendHtmlSuffix() { Loading
app/core/src/main/java/com/fsck/k9/message/html/TextToHtml.kt +12 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,8 @@ class TextToHtml private constructor( private val retainOriginalWhitespace: Boolean ) { fun appendAsHtmlFragment() { appendHtmlPrefix() val modifications = HTML_MODIFIERS .flatMap { it.findModifications(text) } .sortedBy { it.startIndex } Loading Loading @@ -52,6 +54,16 @@ class TextToHtml private constructor( } appendHtmlEncoded(currentIndex, text.length) appendHtmlSuffix() } private fun appendHtmlPrefix() { html.append("""<div dir="auto">""") } private fun appendHtmlSuffix() { html.append("</div>") } private fun appendHtmlEncoded(startIndex: Int, endIndex: Int) { Loading
app/core/src/test/java/com/fsck/k9/mailstore/MessageViewInfoExtractorTest.java +35 −19 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ import static org.mockito.Mockito.when; @SuppressWarnings("WeakerAccess") public class MessageViewInfoExtractorTest extends K9RobolectricTest { public static final String BODY_TEXT = "K-9 Mail rocks :>"; public static final String BODY_TEXT_HTML = "K-9 Mail rocks :>"; public static final String BODY_TEXT_HTML = "<div dir=\"auto\">K-9 Mail rocks :></div>"; public static final String BODY_TEXT_FLOWED = "K-9 Mail rocks :> \r\nflowed line\r\nnot flowed line"; public static final String SUBJECT = "sabject"; public static final String PROTECTED_SUBJECT = "protected subject"; Loading Loading @@ -126,8 +126,8 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { ViewableExtractedText container = messageViewInfoExtractor.extractTextFromViewables(outputViewableParts); String expectedHtml = "<pre dir=\"auto\" class=\"k9mail\">" + "K-9 Mail rocks :>" + "<pre class=\"k9mail\">" + BODY_TEXT_HTML + "</pre>"; assertEquals(BODY_TEXT, container.text); Loading @@ -153,8 +153,10 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { String expectedText = "K-9 Mail rocks :> flowed line\r\n" + "not flowed line"; String expectedHtml = "<pre dir=\"auto\" class=\"k9mail\">" + "<pre class=\"k9mail\">" + "<div dir=\"auto\">" + "K-9 Mail rocks :> flowed line<br>not flowed line" + "</div>" + "</pre>"; assertEquals(expectedText, container.text); Loading Loading @@ -214,13 +216,17 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { "------------------------------------------------------------------------\r\n\r\n" + bodyText2; String expectedHtml = "<pre dir=\"auto\" class=\"k9mail\">" + "<pre class=\"k9mail\">" + "<div dir=\"auto\">" + bodyText1 + "</div>" + "</pre>" + "<p style=\"margin-top: 2.5em; margin-bottom: 1em; " + "border-bottom: 1px solid #000\"></p>" + "<pre dir=\"auto\" class=\"k9mail\">" + "<pre class=\"k9mail\">" + "<div dir=\"auto\">" + bodyText2 + "</div>" + "</pre>"; Loading Loading @@ -280,7 +286,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { "\r\n" + innerBodyText; String expectedHtml = "<pre dir=\"auto\" class=\"k9mail\">" + "<pre class=\"k9mail\">" + BODY_TEXT_HTML + "</pre>" + "<p style=\"margin-top: 2.5em; margin-bottom: 1em; border-bottom: " + Loading @@ -300,8 +306,10 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { "<td>Subject</td>" + "</tr>" + "</table>" + "<pre dir=\"auto\" class=\"k9mail\">" + "<pre class=\"k9mail\">" + "<div dir=\"auto\">" + innerBodyText + "</div>" + "</pre>"; assertEquals(expectedText, container.text); Loading Loading @@ -356,12 +364,20 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { String expectedHtmlText = "<table style=\"border: 0\">" + "<tr><th style=\"text-align: left; vertical-align: top;\">Subject:</th><td>(No subject)</td></tr>" + "</table>" + "<pre dir=\"auto\" class=\"k9mail\">text body of first message<br></pre>" + "<pre class=\"k9mail\">" + "<div dir=\"auto\">" + "text body of first message<br>" + "</div>" + "</pre>" + "<p style=\"margin-top: 2.5em; margin-bottom: 1em; border-bottom: 1px solid #000\"></p>" + "<table style=\"border: 0\">" + "<tr><th style=\"text-align: left; vertical-align: top;\">Subject:</th><td>subject of second message</td></tr>" + "</table>" + "<pre dir=\"auto\" class=\"k9mail\">text part of second message<br></pre>"; "<pre class=\"k9mail\">" + "<div dir=\"auto\">" + "text part of second message<br>" + "</div>" + "</pre>"; assertEquals(4, outputViewableParts.size()); Loading Loading @@ -389,7 +405,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { false); assertEquals("<pre dir=\"auto\" class=\"k9mail\">text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">text</div></pre>", messageViewInfo.text); assertSame(attachmentViewInfo, messageViewInfo.attachments.get(0)); assertNull(messageViewInfo.cryptoResultAnnotation); assertTrue(messageViewInfo.extraAttachments.isEmpty()); Loading @@ -411,7 +427,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { false); assertEquals("<pre dir=\"auto\" class=\"k9mail\">text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">text</div></pre>", messageViewInfo.text); assertSame(annotation, messageViewInfo.cryptoResultAnnotation); assertSame(message, messageViewInfo.message); assertSame(message, messageViewInfo.rootPart); Loading @@ -436,7 +452,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { false); assertEquals("<pre dir=\"auto\" class=\"k9mail\">replacement text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">replacement text</div></pre>", messageViewInfo.text); assertSame(annotation, messageViewInfo.cryptoResultAnnotation); assertSame(message, messageViewInfo.message); assertSame(replacementPart, messageViewInfo.rootPart); Loading Loading @@ -464,7 +480,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { false); assertEquals("<pre dir=\"auto\" class=\"k9mail\">text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">text</div></pre>", messageViewInfo.text); assertSame(annotation, messageViewInfo.cryptoResultAnnotation); assertEquals("extra text", messageViewInfo.extraText); assertTrue(messageViewInfo.attachments.isEmpty()); Loading Loading @@ -494,7 +510,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { false); assertEquals("<pre dir=\"auto\" class=\"k9mail\">text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">text</div></pre>", messageViewInfo.text); assertSame(annotation, messageViewInfo.cryptoResultAnnotation); assertSame(attachmentViewInfo, messageViewInfo.extraAttachments.get(0)); assertTrue(messageViewInfo.attachments.isEmpty()); Loading Loading @@ -535,7 +551,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { true); assertSame(openPgpResultAnnotation, messageViewInfo.cryptoResultAnnotation); assertEquals("<pre dir=\"auto\" class=\"k9mail\">encrypted text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">encrypted text</div></pre>", messageViewInfo.text); assertTrue(messageViewInfo.attachments.isEmpty()); assertTrue(messageViewInfo.extraAttachments.isEmpty()); } Loading @@ -562,7 +578,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { true); assertSame(openPgpResultAnnotation, messageViewInfo.cryptoResultAnnotation); assertEquals("<pre dir=\"auto\" class=\"k9mail\">encrypted text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">encrypted text</div></pre>", messageViewInfo.text); assertEquals(PROTECTED_SUBJECT, messageViewInfo.subject); assertTrue(messageViewInfo.attachments.isEmpty()); assertTrue(messageViewInfo.extraAttachments.isEmpty()); Loading @@ -580,7 +596,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { MessageViewInfo messageViewInfo = messageViewInfoExtractor.extractMessageForView(message, null, false); assertEquals("<pre dir=\"auto\" class=\"k9mail\">text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">text</div></pre>", messageViewInfo.text); assertNull(messageViewInfo.cryptoResultAnnotation); assertTrue(messageViewInfo.attachments.isEmpty()); assertTrue(messageViewInfo.extraAttachments.isEmpty()); Loading @@ -604,7 +620,7 @@ public class MessageViewInfoExtractorTest extends K9RobolectricTest { MessageViewInfo messageViewInfo = messageViewInfoExtractor.extractMessageForView(message, null, false); assertEquals("<pre dir=\"auto\" class=\"k9mail\">text</pre>", messageViewInfo.text); assertEquals("<pre class=\"k9mail\"><div dir=\"auto\">text</div></pre>", messageViewInfo.text); assertNull(messageViewInfo.cryptoResultAnnotation); assertSame(mock, messageViewInfo.attachments.get(0)); assertTrue(messageViewInfo.extraAttachments.isEmpty()); Loading
app/core/src/test/java/com/fsck/k9/message/TextBodyBuilderTest.kt +3 −3 Original line number Diff line number Diff line Loading @@ -12,14 +12,14 @@ class TextBodyBuilderTest(val testData: TestData) { companion object { private const val MESSAGE_TEXT = "my message\r\nwith two lines" private const val MESSAGE_TEXT_HTML = "my message<br>with two lines" private const val MESSAGE_TEXT_HTML = "<div dir=\"auto\">my message<br>with two lines</div>" private const val QUOTED_TEXT = ">quoted text\r\n>-- \r\n>Other signature" private const val QUOTED_HTML_BODY = "<blockquote>quoted text</blockquote>" private const val QUOTED_HTML_TAGS_END = "</body>\n</html>" private const val QUOTED_HTML_TAGS_START = "<!DOCTYPE html><html><head></head><body>" private const val SIGNATURE_TEXT = "-- \r\n\r\nsignature\r\n indented second line" private const val SIGNATURE_TEXT_HTML = "<div class='k9mail-signature'>-- <br><br>signature<br>\u00A0 indented second line</div>" private const val SIGNATURE_TEXT_HTML = "<div dir=\"auto\"><div class='k9mail-signature'>-- <br>" + "<br>signature<br>\u00A0 indented second line</div></div>" @JvmStatic @Parameterized.Parameters(name = "{index}: {0}") Loading
app/core/src/test/java/com/fsck/k9/message/html/HtmlConverterTest.kt +75 −23 Original line number Diff line number Diff line Loading @@ -27,24 +27,36 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ |<pre dir="auto" class="k9mail"> |<pre class="k9mail"> |<div dir="auto"> |Panama!<br> |<br> |Bob Barker <bob@aol.com> wrote:<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"> |<div dir="auto"> | a canal<br> |<br> | Dorothy Jo Gideon <dorothy@aol.com> espoused:<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;"> |<div dir="auto"> |A man, a plan...<br> |</div> |</blockquote> |<div dir="auto"> |Too easy!<br> |</div> |</blockquote> |<div dir="auto"> |<br> |Nice job :)<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;"> |<div dir="auto"> |Guess! |</div> |</blockquote> |</blockquote> |</pre> Loading @@ -70,16 +82,20 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ |<pre dir="auto" class="k9mail"> |<pre class="k9mail"> |<div dir="auto"> |*facepalm*<br> |<br> |Bob Barker <bob@aol.com> wrote:<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"> |<div dir="auto"> | A wise man once said...<br> |<br> | LOL F1RST!!!!!<br> |<br> | :) |</div> |</blockquote> |</pre> """.trimMargin().removeLineBreaks() Loading @@ -103,20 +119,34 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ |<pre dir="auto" class="k9mail"> |<pre class="k9mail"> |<div dir="auto"> |zero<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"> |<div dir="auto"> |one<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;"> |<div dir="auto"> |two<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #8ae234; padding-left: 1ex;"> |<div dir="auto"> |three<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #fcaf3e; padding-left: 1ex;"> |<div dir="auto"> |four<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #e9b96e; padding-left: 1ex;"> |<div dir="auto"> |five<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ccc; padding-left: 1ex;"> |<div dir="auto"> |six |</div> |</blockquote> |</blockquote> |</blockquote> Loading @@ -142,10 +172,12 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ |<pre dir="auto" class="k9mail"> |<pre class="k9mail"> |<div dir="auto"> |foo<br> | bar<br> | baz<br> |</div> |</pre> """.trimMargin().removeLineBreaks() ) Loading @@ -167,13 +199,17 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ |<pre dir="auto" class="k9mail"> |<pre class="k9mail"> |<div dir="auto"> | <br> | &<br> | <br> | <<br> |</div> |<blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"> |<div dir="auto"> |<br> |</div> |</blockquote> |</pre> """.trimMargin().removeLineBreaks() Loading Loading @@ -201,7 +237,8 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ <pre dir="auto" class="k9mail"> <pre class="k9mail"> <div dir="auto"> text <hr> some other text Loading @@ -213,6 +250,7 @@ class HtmlConverterTest { other direction <hr> end </div> </pre> """.trimIndent().removeLineBreaks() ) Loading @@ -231,10 +269,12 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ <pre dir="auto" class="k9mail"> <pre class="k9mail"> <div dir="auto"> hello<br> --- --- --- --- ---<br> foo bar </div> </pre> """.trimIndent().removeLineBreaks() ) Loading @@ -254,10 +294,12 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ <pre dir="auto" class="k9mail"> <pre class="k9mail"> <div dir="auto"> hello <hr> foo bar </div> </pre> """.trimIndent().removeLineBreaks() ) Loading @@ -271,9 +313,11 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ <pre dir="auto" class="k9mail"> <pre class="k9mail"> <div dir="auto"> hello----<br> <br> </div> </pre> """.trimIndent().removeLineBreaks() ) Loading @@ -285,7 +329,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtml(text) assertThat(result).isEqualTo("""<pre dir="auto" class="k9mail">--<br></pre>""") assertThat(result).isEqualTo("""<pre class="k9mail"><div dir="auto">--<br></div></pre>""") } @Test Loading @@ -294,7 +338,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtml(text) assertThat(result).isEqualTo("""<pre dir="auto" class="k9mail">==<br></pre>""") assertThat(result).isEqualTo("""<pre class="k9mail"><div dir="auto">==<br></div></pre>""") } @Test Loading @@ -303,7 +347,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtml(text) assertThat(result).isEqualTo("""<pre dir="auto" class="k9mail">__<br></pre>""") assertThat(result).isEqualTo("""<pre class="k9mail"><div dir="auto">__<br></div></pre>""") } @Test Loading @@ -319,7 +363,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtml(text) assertThat(result).isEqualTo("""<pre dir="auto" class="k9mail"><hr></pre>""") assertThat(result).isEqualTo("""<pre class="k9mail"><div dir="auto"><hr></div></pre>""") } @Test Loading @@ -330,9 +374,11 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ <pre dir="auto" class="k9mail"> <pre class="k9mail"> <div dir="auto"> <hr> foo bar </div> </pre> """.trimIndent().removeLineBreaks() ) Loading @@ -346,9 +392,11 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ <pre dir="auto" class="k9mail"> <pre class="k9mail"> <div dir="auto"> hello <hr> </div> </pre> """.trimIndent().removeLineBreaks() ) Loading @@ -367,10 +415,12 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ <pre dir="auto" class="k9mail"> <pre class="k9mail"> <div dir="auto"> hello <hr> world </div> </pre> """.trimIndent().removeLineBreaks() ) Loading @@ -389,12 +439,14 @@ class HtmlConverterTest { assertThat(result).isEqualTo( """ <pre dir="auto" class="k9mail"> <pre class="k9mail"> <div dir="auto"> text<br> <div class='k9mail-signature'> -- <br> signature with url: <a href="https://domain.example/">https://domain.example/</a> </div> </div> </pre> """.trimIndent().removeLineBreaks() ) Loading @@ -406,7 +458,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtmlFragment(text) assertThat(result).isEqualTo("\u00A0foo") assertThat(result).isEqualTo("<div dir=\"auto\">\u00A0foo</div>") } @Test Loading @@ -415,7 +467,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtmlFragment(text) assertThat(result).isEqualTo("\u00A0 foo") assertThat(result).isEqualTo("<div dir=\"auto\">\u00A0 foo</div>") } @Test Loading @@ -424,7 +476,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtmlFragment(text) assertThat(result).isEqualTo("\u00A0\u00A0\u00A0 some words here") assertThat(result).isEqualTo("<div dir=\"auto\">\u00A0\u00A0\u00A0 some words here</div>") } @Test Loading @@ -433,7 +485,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtmlFragment(text) assertThat(result).isEqualTo("foo\u00A0 bar") assertThat(result).isEqualTo("<div dir=\"auto\">foo\u00A0 bar</div>") } @Test Loading @@ -442,7 +494,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtmlFragment(text) assertThat(result).isEqualTo("foo <br>") assertThat(result).isEqualTo("<div dir=\"auto\">foo <br></div>") } @Test Loading @@ -451,7 +503,7 @@ class HtmlConverterTest { val result = HtmlConverter.textToHtmlFragment(text) assertThat(result).isEqualTo("some words here\u00A0\u00A0 <br>") assertThat(result).isEqualTo("<div dir=\"auto\">some words here\u00A0\u00A0 <br></div>") } @Test Loading