diff --git a/dom/base/nsPlainTextSerializer.cpp b/dom/base/nsPlainTextSerializer.cpp index 5ae4b3b78b81..be3a3b26e96c 100644 --- a/dom/base/nsPlainTextSerializer.cpp +++ b/dom/base/nsPlainTextSerializer.cpp @@ -1774,7 +1774,8 @@ nsPlainTextSerializer::IsElementPreformatted(Element* aElement) const nsStyleText* textStyle = styleContext->StyleText(); return textStyle->WhiteSpaceOrNewlineIsSignificant(); } - return false; + // Fall back to looking at the tag, in case there is no style information. + return GetIdForContent(aElement) == nsGkAtoms::pre; } /** diff --git a/dom/base/test/TestPlainTextSerializer.cpp b/dom/base/test/TestPlainTextSerializer.cpp index be77795361e3..7be9bce0fda0 100644 --- a/dom/base/test/TestPlainTextSerializer.cpp +++ b/dom/base/test/TestPlainTextSerializer.cpp @@ -114,6 +114,29 @@ TestPrettyPrintedHtml() return NS_OK; } +nsresult +TestPreElement() +{ + nsString test; + test.AppendLiteral( + "" NS_LINEBREAK + "" NS_LINEBREAK + "
" NS_LINEBREAK
+    "  first" NS_LINEBREAK
+    "  second" NS_LINEBREAK
+    "
" NS_LINEBREAK + "" NS_LINEBREAK ""); + + ConvertBufToPlainText(test, 0); + if (!test.EqualsLiteral(" first" NS_LINEBREAK " second" NS_LINEBREAK NS_LINEBREAK)) { + fail("Wrong prettyprinted html to text serialization"); + return NS_ERROR_FAILURE; + } + + passed("prettyprinted HTML to text serialization test"); + return NS_OK; +} + nsresult TestPlainTextSerializer() { @@ -137,6 +160,9 @@ TestPlainTextSerializer() rv = TestPrettyPrintedHtml(); NS_ENSURE_SUCCESS(rv, rv); + rv = TestPreElement(); + NS_ENSURE_SUCCESS(rv, rv); + // Add new tests here... return NS_OK; }