19428: fix copying from a document with a doctype.

Also add test cases to notice this if it ever regresses.
Fix from harishd, r=me, a=rickg.
This commit is contained in:
akkana%netscape.com 2000-02-23 01:23:29 +00:00
Родитель bd8ee12325
Коммит c5a660737e
20 изменённых файлов: 71 добавлений и 299 удалений

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

@ -426,7 +426,7 @@ nsHTMLToTXTSinkStream::OpenContainer(const nsIParserNode& aNode)
printf("OpenContainer: %d ", type);
#endif
const nsString& name = aNode.GetText();
if (name.Equals("XIF_DOC_INFO"))
if (name.Equals("document_info"))
{
nsString value;
if (NS_SUCCEEDED(GetValueOfAttribute(aNode, "charset", value)))

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

@ -603,11 +603,6 @@ nsresult nsXIFDTD::HandleStartToken(CToken* aToken) {
ProcessEncodeTag(node);
break;
case eXIFTag_document_info:
ProcessDocumentInfoTag(node);
break;
case eXIFTag_attr:
AddAttribute(node);
break;
@ -633,6 +628,11 @@ nsresult nsXIFDTD::HandleStartToken(CToken* aToken) {
AddCSSDeclaration(node);
break;
case eXIFTag_document_info:
// This is XIF only tag. For HTML it's userdefined.
node.mToken->SetTypeID(eHTMLTag_userdefined);
// fall through to call OpenContainer:
case eXIFTag_markupDecl:
mSink->OpenContainer(node);
break;
@ -1436,28 +1436,6 @@ void nsXIFDTD::ProcessEntityTag(const nsIParserNode& aNode)
}
}
void nsXIFDTD::ProcessDocumentInfoTag(const nsIParserNode& aNode)
{
nsString value;
nsString key("charset");
if (GetAttribute(aNode,key,value))
{
nsString tmpString("document_info");
PushNodeAndToken(tmpString);
nsIParserNode* top = PeekNode();
if (top != nsnull)
{
CAttributeToken* attribute = new CAttributeToken(key,value);
((nsCParserNode*)top)->AddAttribute(attribute);
}
}
}
/*** CSS Methods ****/
void nsXIFDTD::BeginCSSStyleSheet(const nsIParserNode& aNode)

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

@ -54,6 +54,9 @@ TEST_FILES = \
htmltable.out \
xifstuff.xif \
xifstuff.out \
doctype.xif \
xifdtplain.out \
xifdthtml.out \
$(NULL)
include $(topsrcdir)/config/rules.mk

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

@ -1,99 +0,0 @@
#! /bin/tcsh -f
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is Mozilla Communicator client code, released
# March 31, 1998.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998-1999 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Akkana Peck.
#
# This is a collection of test files to guard against regressions
# in the Gecko output system.
#
set errmsg = ""
echo "Testing simple html to html ..."
TestOutput -i text/html -o text/html -f 0 -c OutTestData/simple.html OutTestData/simple.html
if ($status != 0) then
echo "Simple html to html failed.\n"
set errmsg = ($errmsg "simple.html")
endif
echo "Testing simple copy case ..."
TestOutput -i text/html -o text/plain -f 0 -w 0 -c OutTestData/simplecopy.out OutTestData/simple.html
if ($status != 0) then
echo "Simple copy test failed.\n"
set errmsg = ($errmsg "simplecopy.out")
endif
echo "Testing simple html to plaintext formatting ..."
TestOutput -i text/html -o text/plain -f 34 -w 70 -c OutTestData/simplefmt.out OutTestData/simple.html
if ($status != 0) then
echo "Simple copy test failed.\n"
set errmsg = ($errmsg "simplefmt.out")
endif
echo "Testing non-wrapped plaintext in preformatted mode ..."
TestOutput -i text/html -o text/plain -f 16 -c OutTestData/plainnowrap.out OutTestData/plain.html
if ($status != 0) then
echo "Non-wrapped plaintext test failed."
set errmsg = ($errmsg "plainnowrap.out")
endif
# echo "Testing wrapped and formatted plaintext ..."
# TestOutput -i text/html -o text/plain -f 32 -c OutTestData/plainwrap.out OutTestData/plain.html
# if ($status != 0) then
# echo "Wrapped plaintext test failed."
# set errmsg = ($errmsg "plainwrap.out")
# endif
echo "Testing mail quoting ..."
TestOutput -i text/html -o text/plain -f 2 -w 50 -c OutTestData/mailquote.out OutTestData/mailquote.html
if ($status != 0) then
echo "Mail quoting test failed."
set errmsg = ($errmsg "mailquote.out")
endif
echo "Testing conversion of XIF entities ..."
TestOutput -i text/xif -o text/plain -c OutTestData/entityxif.out OutTestData/entityxif.xif
if ($status != 0) then
echo "XIF entity conversion test failed."
set errmsg = ($errmsg "entityxif.out")
endif
echo "Testing XIF to HTML ..."
TestOutput -i text/xif -o text/html -c OutTestData/xifstuff.out OutTestData/xifstuff.xif
if ($status != 0) then
echo "XIF to HTML conversion test failed."
set errmsg = ($errmsg "xifstuff.out")
endif
echo "Testing HTML Table to Text ..."
TestOutput -i text/html -o text/plain -f 2 -c OutTestData/htmltable.out OutTestData/htmltable.html
if ($status != 0) then
echo "HTML Table to Plain text failed."
set errmsg = ($errmsg "htmltable.out")
endif
if ("$errmsg" != "") then
echo " "
echo TESTS FAILED: $errmsg
exit 1
else
echo ALL TESTS SUCCEEDED
endif

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

@ -28,13 +28,17 @@ set errmsg=
set has_err=
echo Testing simple html to html ...
TestOutput -i text/html -o text\html -f 0 -c OutTestData/simple.html OutTestData/simple.html
TestOutput -i text/html -o text/html -f 0 -c OutTestData/simple.html OutTestData/simple.html
if errorlevel 1 echo Simple html to html failed (%errorlevel%). && set has_err=1 && set errmsg=%errmsg% simple.html
echo Testing simple copy case ...
TestOutput -i text/html -o text/plain -f 0 -w 0 -c OutTestData/simplecopy.out OutTestData/simple.html
if errorlevel 1 echo Simple copy test failed. && set has_err=1 && set errmsg=%errmsg% simplecopy.out
echo "Testing simple html to plaintext formatting ..."
TestOutput -i text/html -o text/plain -f 34 -w 70 -c OutTestData/simplefmt.out OutTestData/simple.html
if errorlevel 1 echo Simple formatting test failed. && set has_err=1 && set errmsg=%errmsg% plainnowrap.out
echo Testing non-wrapped plaintext ...
TestOutput -i text/html -o text/plain -f 0 -w 0 -c OutTestData/plainnowrap.out OutTestData/plain.html
if errorlevel 1 echo Non-wrapped plaintext test failed. && set has_err=1 && set errmsg=%errmsg% plainnowrap.out
@ -59,6 +63,14 @@ echo Testing HTML Table to Text ...
TestOutput -i text/html -o text/plain -c OutTestData/htmltable.out OutTestData/htmltable.html
if errorlevel 1 echo HTML Table to Plain text failed (%errorlevel%). && set has_err=1 && set errmsg=%errmsg% htmltable.out
echo "Testing XIF to plain with doctype (bug 28447) ..."
TestOutput -i text/xif -o text/plain -f 2 -c OutTestData/xifdtplain.out OutTestData/doctype.xif
if errorlevel 1 echo XIF to plain with doctype failed (%errorlevel%). && set has_err=1 && set errmsg=%errmsg% xifdtplain.out
REM echo "Testing XIF to html with doctype ..."
REM TestOutput -i text/xif -o text/html -f 0 -c OutTestData/xifdthtml.out OutTestData/doctype.xif
REM if errorlevel 1 echo XIF to html with doctype failed (%errorlevel%). && set has_err=1 && set errmsg=%errmsg% xifdthtml.out
if %has_err% == 0 goto success
echo.
echo TESTS FAILED: %errmsg%

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

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

@ -46,6 +46,9 @@ TEST_FILES = \
xifstuff.out \
htmltable.html \
htmltable.out \
doctype.xif \
xifdtplain.out \
xifdthtml.out \
$(NULL)
LINCS= \

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

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

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

@ -1,42 +0,0 @@
<html>
<head>
<!--
-- The contents of this file are subject to the Netscape Public
-- License Version 1.1 (the "License"); you may not use this file
-- except in compliance with the License. You may obtain a copy of
-- the License at http://www.mozilla.org/NPL/
--
-- Software distributed under the License is distributed on an "AS
-- IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
-- implied. See the License for the specific language governing
-- rights and limitations under the License.
--
-- The Original Code is Mozilla Communicator client code, released
-- March 31, 1998.
--
-- The Initial Developer of the Original Code is Netscape
-- Communications Corporation. Portions created by Netscape are
-- Copyright (C) 1998-1999 Netscape Communications Corporation. All
-- Rights Reserved.
--
-- Contributor(s):
-->
<title>XIF Test Page</title>
<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.
&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>

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

@ -426,7 +426,7 @@ nsHTMLToTXTSinkStream::OpenContainer(const nsIParserNode& aNode)
printf("OpenContainer: %d ", type);
#endif
const nsString& name = aNode.GetText();
if (name.Equals("XIF_DOC_INFO"))
if (name.Equals("document_info"))
{
nsString value;
if (NS_SUCCEEDED(GetValueOfAttribute(aNode, "charset", value)))

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

@ -603,11 +603,6 @@ nsresult nsXIFDTD::HandleStartToken(CToken* aToken) {
ProcessEncodeTag(node);
break;
case eXIFTag_document_info:
ProcessDocumentInfoTag(node);
break;
case eXIFTag_attr:
AddAttribute(node);
break;
@ -633,6 +628,11 @@ nsresult nsXIFDTD::HandleStartToken(CToken* aToken) {
AddCSSDeclaration(node);
break;
case eXIFTag_document_info:
// This is XIF only tag. For HTML it's userdefined.
node.mToken->SetTypeID(eHTMLTag_userdefined);
// fall through to call OpenContainer:
case eXIFTag_markupDecl:
mSink->OpenContainer(node);
break;
@ -1436,28 +1436,6 @@ void nsXIFDTD::ProcessEntityTag(const nsIParserNode& aNode)
}
}
void nsXIFDTD::ProcessDocumentInfoTag(const nsIParserNode& aNode)
{
nsString value;
nsString key("charset");
if (GetAttribute(aNode,key,value))
{
nsString tmpString("document_info");
PushNodeAndToken(tmpString);
nsIParserNode* top = PeekNode();
if (top != nsnull)
{
CAttributeToken* attribute = new CAttributeToken(key,value);
((nsCParserNode*)top)->AddAttribute(attribute);
}
}
}
/*** CSS Methods ****/
void nsXIFDTD::BeginCSSStyleSheet(const nsIParserNode& aNode)

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

@ -54,6 +54,9 @@ TEST_FILES = \
htmltable.out \
xifstuff.xif \
xifstuff.out \
doctype.xif \
xifdtplain.out \
xifdthtml.out \
$(NULL)
include $(topsrcdir)/config/rules.mk

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

@ -1,99 +0,0 @@
#! /bin/tcsh -f
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is Mozilla Communicator client code, released
# March 31, 1998.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998-1999 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Akkana Peck.
#
# This is a collection of test files to guard against regressions
# in the Gecko output system.
#
set errmsg = ""
echo "Testing simple html to html ..."
TestOutput -i text/html -o text/html -f 0 -c OutTestData/simple.html OutTestData/simple.html
if ($status != 0) then
echo "Simple html to html failed.\n"
set errmsg = ($errmsg "simple.html")
endif
echo "Testing simple copy case ..."
TestOutput -i text/html -o text/plain -f 0 -w 0 -c OutTestData/simplecopy.out OutTestData/simple.html
if ($status != 0) then
echo "Simple copy test failed.\n"
set errmsg = ($errmsg "simplecopy.out")
endif
echo "Testing simple html to plaintext formatting ..."
TestOutput -i text/html -o text/plain -f 34 -w 70 -c OutTestData/simplefmt.out OutTestData/simple.html
if ($status != 0) then
echo "Simple copy test failed.\n"
set errmsg = ($errmsg "simplefmt.out")
endif
echo "Testing non-wrapped plaintext in preformatted mode ..."
TestOutput -i text/html -o text/plain -f 16 -c OutTestData/plainnowrap.out OutTestData/plain.html
if ($status != 0) then
echo "Non-wrapped plaintext test failed."
set errmsg = ($errmsg "plainnowrap.out")
endif
# echo "Testing wrapped and formatted plaintext ..."
# TestOutput -i text/html -o text/plain -f 32 -c OutTestData/plainwrap.out OutTestData/plain.html
# if ($status != 0) then
# echo "Wrapped plaintext test failed."
# set errmsg = ($errmsg "plainwrap.out")
# endif
echo "Testing mail quoting ..."
TestOutput -i text/html -o text/plain -f 2 -w 50 -c OutTestData/mailquote.out OutTestData/mailquote.html
if ($status != 0) then
echo "Mail quoting test failed."
set errmsg = ($errmsg "mailquote.out")
endif
echo "Testing conversion of XIF entities ..."
TestOutput -i text/xif -o text/plain -c OutTestData/entityxif.out OutTestData/entityxif.xif
if ($status != 0) then
echo "XIF entity conversion test failed."
set errmsg = ($errmsg "entityxif.out")
endif
echo "Testing XIF to HTML ..."
TestOutput -i text/xif -o text/html -c OutTestData/xifstuff.out OutTestData/xifstuff.xif
if ($status != 0) then
echo "XIF to HTML conversion test failed."
set errmsg = ($errmsg "xifstuff.out")
endif
echo "Testing HTML Table to Text ..."
TestOutput -i text/html -o text/plain -f 2 -c OutTestData/htmltable.out OutTestData/htmltable.html
if ($status != 0) then
echo "HTML Table to Plain text failed."
set errmsg = ($errmsg "htmltable.out")
endif
if ("$errmsg" != "") then
echo " "
echo TESTS FAILED: $errmsg
exit 1
else
echo ALL TESTS SUCCEEDED
endif

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

@ -28,13 +28,17 @@ set errmsg=
set has_err=
echo Testing simple html to html ...
TestOutput -i text/html -o text\html -f 0 -c OutTestData/simple.html OutTestData/simple.html
TestOutput -i text/html -o text/html -f 0 -c OutTestData/simple.html OutTestData/simple.html
if errorlevel 1 echo Simple html to html failed (%errorlevel%). && set has_err=1 && set errmsg=%errmsg% simple.html
echo Testing simple copy case ...
TestOutput -i text/html -o text/plain -f 0 -w 0 -c OutTestData/simplecopy.out OutTestData/simple.html
if errorlevel 1 echo Simple copy test failed. && set has_err=1 && set errmsg=%errmsg% simplecopy.out
echo "Testing simple html to plaintext formatting ..."
TestOutput -i text/html -o text/plain -f 34 -w 70 -c OutTestData/simplefmt.out OutTestData/simple.html
if errorlevel 1 echo Simple formatting test failed. && set has_err=1 && set errmsg=%errmsg% plainnowrap.out
echo Testing non-wrapped plaintext ...
TestOutput -i text/html -o text/plain -f 0 -w 0 -c OutTestData/plainnowrap.out OutTestData/plain.html
if errorlevel 1 echo Non-wrapped plaintext test failed. && set has_err=1 && set errmsg=%errmsg% plainnowrap.out
@ -59,6 +63,14 @@ echo Testing HTML Table to Text ...
TestOutput -i text/html -o text/plain -c OutTestData/htmltable.out OutTestData/htmltable.html
if errorlevel 1 echo HTML Table to Plain text failed (%errorlevel%). && set has_err=1 && set errmsg=%errmsg% htmltable.out
echo "Testing XIF to plain with doctype (bug 28447) ..."
TestOutput -i text/xif -o text/plain -f 2 -c OutTestData/xifdtplain.out OutTestData/doctype.xif
if errorlevel 1 echo XIF to plain with doctype failed (%errorlevel%). && set has_err=1 && set errmsg=%errmsg% xifdtplain.out
REM echo "Testing XIF to html with doctype ..."
REM TestOutput -i text/xif -o text/html -f 0 -c OutTestData/xifdthtml.out OutTestData/doctype.xif
REM if errorlevel 1 echo XIF to html with doctype failed (%errorlevel%). && set has_err=1 && set errmsg=%errmsg% xifdthtml.out
if %has_err% == 0 goto success
echo.
echo TESTS FAILED: %errmsg%

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

@ -0,0 +1,17 @@
<?xml version="1.0"?>
<!DOCTYPE xif>
<encode selection="1"/>
<section>
<section_head>
<document_info charset="ISO-8859-1"/>
</section_head>
<section_body>
<markup_declaration>
<content>DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"</content>
</markup_declaration>
<container isa="body">
<content>Here is some content inside a doctype
</content>
</container><!--body-->
</section_body>
</section>

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

@ -46,6 +46,9 @@ TEST_FILES = \
xifstuff.out \
htmltable.html \
htmltable.out \
doctype.xif \
xifdtplain.out \
xifdthtml.out \
$(NULL)
LINCS= \

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

@ -0,0 +1,3 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<body>Here is some content inside a doctype
</body>

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

@ -0,0 +1 @@
Here is some content inside a doctype

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

@ -1,4 +1,3 @@
<html>
<head>
<!--