Bug 417384, r+sr=peterv, a=mtschrep

This commit is contained in:
Olli.Pettay@helsinki.fi 2008-02-19 05:17:29 -08:00
parent 922f5f425a
commit 5da47ef80d
4 changed files with 67 additions and 11 deletions

View File

@ -100,7 +100,7 @@ nsPlainTextSerializer::nsPlainTextSerializer()
{
mOutputString = nsnull;
mInHead = PR_FALSE;
mHeadLevel = 0;
mAtFirstColumn = PR_TRUE;
mIndent = 0;
mCiteQuoteLevel = 0;
@ -406,8 +406,9 @@ nsPlainTextSerializer::AppendElementStart(nsIDOMElement *aElement,
mContent = 0;
mOutputString = nsnull;
if (!mInHead && id == eHTMLTag_head)
mInHead = PR_TRUE;
if (id == eHTMLTag_head) {
++mHeadLevel;
}
return rv;
}
@ -436,8 +437,9 @@ nsPlainTextSerializer::AppendElementEnd(nsIDOMElement *aElement,
mContent = 0;
mOutputString = nsnull;
if (mInHead && id == eHTMLTag_head)
mInHead = PR_FALSE;
if (id == eHTMLTag_head) {
--mHeadLevel;
}
return rv;
}
@ -464,7 +466,7 @@ nsPlainTextSerializer::OpenContainer(const nsIParserNode& aNode)
PRInt32 type = aNode.GetNodeType();
if (type == eHTMLTag_head) {
mInHead = PR_TRUE;
++mHeadLevel;
return NS_OK;
}
@ -475,7 +477,7 @@ NS_IMETHODIMP
nsPlainTextSerializer::CloseContainer(const nsHTMLTag aTag)
{
if (aTag == eHTMLTag_head) {
mInHead = PR_FALSE;
--mHeadLevel;
return NS_OK;
}
@ -512,7 +514,6 @@ nsPlainTextSerializer::AddLeaf(const nsIParserNode& aNode)
NS_IMETHODIMP
nsPlainTextSerializer::OpenHead()
{
mInHead = PR_TRUE;
return NS_OK;
}

View File

@ -160,7 +160,7 @@ protected:
inline PRBool DoOutput()
{
return !mInHead;
return mHeadLevel == 0;
}
// Stack handling functions
@ -171,8 +171,7 @@ protected:
protected:
nsString mCurrentLine;
PRPackedBool mInHead;
PRUint32 mHeadLevel;
PRPackedBool mAtFirstColumn;
// Handling of quoted text (for mail):

View File

@ -143,6 +143,7 @@ _TEST_FILES = test_bug5141.html \
test_bug414190.html \
test_bug414796.html \
test_bug416383.html \
test_bug417384.html \
$(NULL)
libs:: $(_TEST_FILES)

View File

@ -0,0 +1,55 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=417384
-->
<head>
<title>Test for Bug 417384</title>
<script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=417384">Mozilla Bug 417384</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script class="testbody" type="text/javascript">
/** Test for Bug 417384 **/
var expectedSerialization = "about:blank document";
function testSerializer() {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var doc = document.getElementById('test_iframe').contentDocument;
doc.body.textContent = expectedSerialization;
var head1 = doc.createElement("head");
doc.body.appendChild(head1);
var span = doc.createElement("span");
head1.appendChild(span);
span.appendChild(doc.createTextNode("before inner head\n"));
span.appendChild(doc.createElement("head"));
span.appendChild(doc.createTextNode("\nafter inner head"));
var encoder =
Components.classes["@mozilla.org/layout/documentEncoder;1?type=text/html"]
.createInstance(Components.interfaces.nsIDocumentEncoder);
encoder.init(doc, "text/plain", 0);
encoder.setCharset("UTF-8");
var out = encoder.encodeToString();
ok(out == expectedSerialization, "Wrong serialization!");
}
SimpleTest.waitForExplicitFinish();
addLoadEvent(testSerializer);
addLoadEvent(SimpleTest.finish);
</script>
</pre>
<iframe id="test_iframe" src="about:blank"></iframe>
</body>
</html>