Make the plaintext serializer properly handle CDATA nodes. Bug 234427, patch

by Sebastian Redl <wasti.redl@gmx.net>, r=akkana, sr=bzbarsky
This commit is contained in:
bzbarsky%mit.edu 2004-02-20 00:10:36 +00:00
Родитель 69833527e4
Коммит 905b64bdaa
3 изменённых файлов: 15 добавлений и 4 удалений

Просмотреть файл

@ -588,7 +588,8 @@ static PRBool IsTextNode(nsIDOMNode *aNode)
if (!aNode) return PR_FALSE;
PRUint16 nodeType;
aNode->GetNodeType(&nodeType);
if (nodeType == nsIDOMNode::TEXT_NODE)
if (nodeType == nsIDOMNode::TEXT_NODE ||
nodeType == nsIDOMNode::CDATA_SECTION_NODE)
return PR_TRUE;
return PR_FALSE;
}

Просмотреть файл

@ -46,6 +46,7 @@
#include "nsIServiceManager.h"
#include "nsHTMLAtoms.h"
#include "nsIDOMText.h"
#include "nsIDOMCDATASection.h"
#include "nsIDOMElement.h"
#include "nsINameSpaceManager.h"
#include "nsITextContent.h"
@ -363,7 +364,7 @@ nsPlainTextSerializer::AppendText(nsIDOMText* aText,
}
// Consume the last bit of the string if there's any left
if (NS_SUCCEEDED(rv) & (start < length)) {
if (NS_SUCCEEDED(rv) && start < length) {
if (start) {
rv = DoAddLeaf(nsnull,
eHTMLTag_text,
@ -379,6 +380,15 @@ nsPlainTextSerializer::AppendText(nsIDOMText* aText,
return rv;
}
NS_IMETHODIMP
nsPlainTextSerializer::AppendCDATASection(nsIDOMCDATASection* aCDATASection,
PRInt32 aStartOffset,
PRInt32 aEndOffset,
nsAString& aStr)
{
return AppendText(aCDATASection, aStartOffset, aEndOffset, aStr);
}
NS_IMETHODIMP
nsPlainTextSerializer::AppendElementStart(nsIDOMElement *aElement,
PRBool aHasChildren,

Просмотреть файл

@ -70,7 +70,7 @@ public:
PRInt32 aEndOffset, nsAString& aStr);
NS_IMETHOD AppendCDATASection(nsIDOMCDATASection* aCDATASection,
PRInt32 aStartOffset, PRInt32 aEndOffset,
nsAString& aStr) { return NS_OK; }
nsAString& aStr);
NS_IMETHOD AppendProcessingInstruction(nsIDOMProcessingInstruction* aPI,
PRInt32 aStartOffset,
PRInt32 aEndOffset,