19515: fix a XIF DTD problem where text nodes with names corresponding
to XIF node names didn't make it into the output. Fix from rick, r=me. Also, a temp fix to the html output sink to get around bug 20246, and a couple of test case tweaks. git-svn-id: svn://10.0.0.236/trunk@54617 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -586,10 +586,19 @@ nsHTMLContentSinkStream::SetTitle(const nsString& aValue){
|
||||
* @return PR_TRUE if successful.
|
||||
*/
|
||||
NS_IMETHODIMP
|
||||
nsHTMLContentSinkStream::OpenHTML(const nsIParserNode& aNode){
|
||||
eHTMLTags tag = (eHTMLTags)aNode.GetNodeType();
|
||||
if (tag == eHTMLTag_html)
|
||||
AddStartTag(aNode);
|
||||
nsHTMLContentSinkStream::OpenHTML(const nsIParserNode& aNode)
|
||||
{
|
||||
eHTMLTags tag = (eHTMLTags)aNode.GetNodeType();
|
||||
if (tag == eHTMLTag_html)
|
||||
#ifdef BUG_20246_IS_FIXED
|
||||
AddStartTag(aNode);
|
||||
#else /* BUG_20246_IS_FIXED */
|
||||
{
|
||||
Write(kLessThan);
|
||||
Write("html");
|
||||
Write(kGreaterThan);
|
||||
}
|
||||
#endif /* BUG_20246_IS_FIXED */
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -810,7 +819,8 @@ void nsHTMLContentSinkStream::AddStartTag(const nsIParserNode& aNode)
|
||||
|
||||
mHTMLTagStack[mHTMLStackPos++] = tag;
|
||||
tagName = name;
|
||||
|
||||
|
||||
|
||||
if (mLowerCaseTags == PR_TRUE)
|
||||
tagName.ToLowerCase();
|
||||
else
|
||||
@@ -986,7 +996,7 @@ nsHTMLContentSinkStream::AddLeaf(const nsIParserNode& aNode){
|
||||
const nsString& entity = aNode.GetText();
|
||||
EncodeToBuffer(entity);
|
||||
Write('&');
|
||||
Write(mBuffer);
|
||||
Write(mBuffer);
|
||||
Write(';');
|
||||
mColPos += entity.Length() + 2;
|
||||
}
|
||||
|
||||
@@ -234,19 +234,22 @@ NS_IMPL_RELEASE(nsXIFDTD)
|
||||
* @return
|
||||
*/
|
||||
static
|
||||
PRInt32 XIFDispatchTokenHandler(CToken* aToken,nsIDTD* aDTD) {
|
||||
|
||||
PRInt32 result=0;
|
||||
|
||||
eHTMLTokenTypes theType= (eHTMLTokenTypes)aToken->GetTokenType();
|
||||
PRInt32 XIFDispatchTokenHandler(CToken* aToken,nsIDTD* aDTD)
|
||||
{
|
||||
eHTMLTokenTypes theType = (eHTMLTokenTypes)aToken->GetTokenType();
|
||||
nsXIFDTD* theDTD=(nsXIFDTD*)aDTD;
|
||||
|
||||
nsString& name = aToken->GetStringValueXXX();
|
||||
eXIFTags type = DetermineXIFTagType(name);
|
||||
|
||||
if (type != eXIFTag_userdefined)
|
||||
aToken->SetTypeID(type);
|
||||
|
||||
eXIFTags type = eXIFTag_userdefined;
|
||||
|
||||
if((eToken_start==theType) || (eToken_end==theType)) {
|
||||
type=DetermineXIFTagType(name);
|
||||
if (type != eXIFTag_userdefined)
|
||||
aToken->SetTypeID(type);
|
||||
}
|
||||
|
||||
PRInt32 result=0;
|
||||
|
||||
if(aDTD) {
|
||||
switch(theType) {
|
||||
case eToken_start:
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
-- Contributor(s): Akkana Peck
|
||||
-->
|
||||
<title>Simple html page</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
</head><body>
|
||||
<h1>Simple html page</h1>
|
||||
|
||||
Here is a <a href="http://www.mozilla.org">link to the mozilla.org</a> page.
|
||||
|
||||
@@ -25,18 +25,18 @@
|
||||
|
||||
<title>XIF Test Page</title>
|
||||
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
|
||||
|
||||
<body>
|
||||
<h2>Here's the deal...</h2>
|
||||
|
||||
<p>This is a good place to add in <b>html</b> to aid in testing features
|
||||
under development. It's also a great place to not use latin.
|
||||
under development.
|
||||
<a href="http://www.mozilla.org">
|
||||
It's also a great place to not use latin.
|
||||
<!-- This is a comment;
|
||||
Here is more of the comment.
|
||||
-->
|
||||
|
||||
</p></body></html>
|
||||
</p></body>
|
||||
</html>
|
||||
|
||||
@@ -586,10 +586,19 @@ nsHTMLContentSinkStream::SetTitle(const nsString& aValue){
|
||||
* @return PR_TRUE if successful.
|
||||
*/
|
||||
NS_IMETHODIMP
|
||||
nsHTMLContentSinkStream::OpenHTML(const nsIParserNode& aNode){
|
||||
eHTMLTags tag = (eHTMLTags)aNode.GetNodeType();
|
||||
if (tag == eHTMLTag_html)
|
||||
AddStartTag(aNode);
|
||||
nsHTMLContentSinkStream::OpenHTML(const nsIParserNode& aNode)
|
||||
{
|
||||
eHTMLTags tag = (eHTMLTags)aNode.GetNodeType();
|
||||
if (tag == eHTMLTag_html)
|
||||
#ifdef BUG_20246_IS_FIXED
|
||||
AddStartTag(aNode);
|
||||
#else /* BUG_20246_IS_FIXED */
|
||||
{
|
||||
Write(kLessThan);
|
||||
Write("html");
|
||||
Write(kGreaterThan);
|
||||
}
|
||||
#endif /* BUG_20246_IS_FIXED */
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -810,7 +819,8 @@ void nsHTMLContentSinkStream::AddStartTag(const nsIParserNode& aNode)
|
||||
|
||||
mHTMLTagStack[mHTMLStackPos++] = tag;
|
||||
tagName = name;
|
||||
|
||||
|
||||
|
||||
if (mLowerCaseTags == PR_TRUE)
|
||||
tagName.ToLowerCase();
|
||||
else
|
||||
@@ -986,7 +996,7 @@ nsHTMLContentSinkStream::AddLeaf(const nsIParserNode& aNode){
|
||||
const nsString& entity = aNode.GetText();
|
||||
EncodeToBuffer(entity);
|
||||
Write('&');
|
||||
Write(mBuffer);
|
||||
Write(mBuffer);
|
||||
Write(';');
|
||||
mColPos += entity.Length() + 2;
|
||||
}
|
||||
|
||||
@@ -234,19 +234,22 @@ NS_IMPL_RELEASE(nsXIFDTD)
|
||||
* @return
|
||||
*/
|
||||
static
|
||||
PRInt32 XIFDispatchTokenHandler(CToken* aToken,nsIDTD* aDTD) {
|
||||
|
||||
PRInt32 result=0;
|
||||
|
||||
eHTMLTokenTypes theType= (eHTMLTokenTypes)aToken->GetTokenType();
|
||||
PRInt32 XIFDispatchTokenHandler(CToken* aToken,nsIDTD* aDTD)
|
||||
{
|
||||
eHTMLTokenTypes theType = (eHTMLTokenTypes)aToken->GetTokenType();
|
||||
nsXIFDTD* theDTD=(nsXIFDTD*)aDTD;
|
||||
|
||||
nsString& name = aToken->GetStringValueXXX();
|
||||
eXIFTags type = DetermineXIFTagType(name);
|
||||
|
||||
if (type != eXIFTag_userdefined)
|
||||
aToken->SetTypeID(type);
|
||||
|
||||
eXIFTags type = eXIFTag_userdefined;
|
||||
|
||||
if((eToken_start==theType) || (eToken_end==theType)) {
|
||||
type=DetermineXIFTagType(name);
|
||||
if (type != eXIFTag_userdefined)
|
||||
aToken->SetTypeID(type);
|
||||
}
|
||||
|
||||
PRInt32 result=0;
|
||||
|
||||
if(aDTD) {
|
||||
switch(theType) {
|
||||
case eToken_start:
|
||||
|
||||
@@ -22,9 +22,7 @@
|
||||
-- Contributor(s): Akkana Peck
|
||||
-->
|
||||
<title>Simple html page</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
</head><body>
|
||||
<h1>Simple html page</h1>
|
||||
|
||||
Here is a <a href="http://www.mozilla.org">link to the mozilla.org</a> page.
|
||||
|
||||
@@ -25,18 +25,18 @@
|
||||
|
||||
<title>XIF Test Page</title>
|
||||
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
</head>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
|
||||
|
||||
<body>
|
||||
<h2>Here's the deal...</h2>
|
||||
|
||||
<p>This is a good place to add in <b>html</b> to aid in testing features
|
||||
under development. It's also a great place to not use latin.
|
||||
under development.
|
||||
<a href="http://www.mozilla.org">
|
||||
It's also a great place to not use latin.
|
||||
<!-- This is a comment;
|
||||
Here is more of the comment.
|
||||
-->
|
||||
|
||||
</p></body></html>
|
||||
</p></body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user