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:
akkana%netscape.com
1999-11-29 22:33:32 +00:00
parent ba7d99eef0
commit 6bd223eae3
8 changed files with 72 additions and 50 deletions

View File

@@ -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;
}

View File

@@ -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:

View File

@@ -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.

View File

@@ -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.
&lt;a href="http://www.mozilla.org"&gt;
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>

View File

@@ -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;
}

View File

@@ -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:

View File

@@ -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.

View File

@@ -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.
&lt;a href="http://www.mozilla.org"&gt;
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>