fixes to bugs: 9283, 13210, 13845, 13688, 14265, 14308, 14314

This commit is contained in:
rickg%netscape.com 1999-09-20 05:20:46 +00:00
Родитель e88d99f2af
Коммит 7c150863c7
6 изменённых файлов: 74 добавлений и 22 удалений

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

@ -2733,11 +2733,21 @@ nsresult CNavDTD::AddHeadLeaf(nsIParserNode& aNode){
return result; return result;
} }
if(eHTMLTag_newline==theTag) //omit newlines from head...
return result;
if(mSink) { if(mSink) {
result=OpenHead(aNode); result=OpenHead(aNode);
if(NS_OK==result) { if(NS_OK==result) {
if(eHTMLTag_title==theTag) { if(eHTMLTag_title==theTag) {
mSink->SetTitle(aNode.GetSkippedContent());
///XXX this evil hack is necessary only for beta.
//Post beta, lets make the GetSkippedContent() call non-const.
const nsString& theString=aNode.GetSkippedContent();
nsString* theStr=(nsString*)&theString;
theStr->CompressWhitespace();
mSink->SetTitle(theString);
} }
else result=AddLeaf(aNode); else result=AddLeaf(aNode);
// XXX If the return value tells us to block, go // XXX If the return value tells us to block, go

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

@ -158,7 +158,7 @@ static eHTMLTags gHTMLKidList[]={eHTMLTag_body,eHTMLTag_frameset,eHTMLTag_head,e
CTagList gHtmlKids(sizeof(gHTMLKidList)/sizeof(eHTMLTag_unknown),gHTMLKidList); CTagList gHtmlKids(sizeof(gHTMLKidList)/sizeof(eHTMLTag_unknown),gHTMLKidList);
static eHTMLTags gHeadKidList[]= static eHTMLTags gHeadKidList[]=
{eHTMLTag_base,eHTMLTag_bgsound,eHTMLTag_link,eHTMLTag_meta,eHTMLTag_script,eHTMLTag_style,eHTMLTag_title,eHTMLTag_noembed,eHTMLTag_noscript}; {eHTMLTag_base,eHTMLTag_bgsound,eHTMLTag_link,eHTMLTag_meta,eHTMLTag_script,eHTMLTag_style,eHTMLTag_title,eHTMLTag_noembed,eHTMLTag_noscript,eHTMLTag_newline};
CTagList gHeadKids(sizeof(gHeadKidList)/sizeof(eHTMLTag_unknown),gHeadKidList); CTagList gHeadKids(sizeof(gHeadKidList)/sizeof(eHTMLTag_unknown),gHeadKidList);
CTagList gLIKids(2,0,eHTMLTag_ol,eHTMLTag_ul); CTagList gLIKids(2,0,eHTMLTag_ol,eHTMLTag_ul);
@ -285,7 +285,7 @@ nsHTMLElement gHTMLElements[] = {
/*req-parent excl-parent*/ eHTMLTag_unknown,eHTMLTag_unknown, /*req-parent excl-parent*/ eHTMLTag_unknown,eHTMLTag_unknown,
/*rootnodes,endrootnodes*/ &gRootTags,&gRootTags, /*rootnodes,endrootnodes*/ &gRootTags,&gRootTags,
/*autoclose starttags and endtags*/ 0,0,0, /*autoclose starttags and endtags*/ 0,0,0,
/*parent,incl,exclgroups*/ kSpecial, (kSelf|SPECIALTYPE), kNone, /*parent,incl,exclgroups*/ kSpecial, (kSelf|SPECIALTYPE|kFlowEntity), kNone,
/*special props, prop-range*/ 0,kDefaultPropRange, /*special props, prop-range*/ 0,kDefaultPropRange,
/*special parents,kids,skip*/ 0,&gContainsParam,eHTMLTag_unknown}, /*special parents,kids,skip*/ 0,&gContainsParam,eHTMLTag_unknown},
@ -830,7 +830,7 @@ nsHTMLElement gHTMLElements[] = {
/*req-parent excl-parent*/ eHTMLTag_unknown,eHTMLTag_unknown, /*req-parent excl-parent*/ eHTMLTag_unknown,eHTMLTag_unknown,
/*rootnodes,endrootnodes*/ &gRootTags,&gRootTags, /*rootnodes,endrootnodes*/ &gRootTags,&gRootTags,
/*autoclose starttags and endtags*/ 0,0,0, /*autoclose starttags and endtags*/ 0,0,0,
/*parent,incl,exclgroups*/ (kHeadMisc|kSpecial), (SPECIALTYPE|kSelf), kNone, /*parent,incl,exclgroups*/ (kHeadMisc|kSpecial), (kFlowEntity|SPECIALTYPE|kSelf), kNone,
/*special props, prop-range*/ 0,kDefaultPropRange, /*special props, prop-range*/ 0,kDefaultPropRange,
/*special parents,kids,skip*/ 0,&gContainsParam,eHTMLTag_unknown}, /*special parents,kids,skip*/ 0,&gContainsParam,eHTMLTag_unknown},
@ -982,7 +982,7 @@ nsHTMLElement gHTMLElements[] = {
/*req-parent excl-parent*/ eHTMLTag_unknown,eHTMLTag_unknown, /*req-parent excl-parent*/ eHTMLTag_unknown,eHTMLTag_unknown,
/*rootnodes,endrootnodes*/ &gRootTags,&gRootTags, /*rootnodes,endrootnodes*/ &gRootTags,&gRootTags,
/*autoclose starttags and endtags*/ 0,0,0, /*autoclose starttags and endtags*/ 0,0,0,
/*parent,incl,exclgroups*/ kBlock, (kInlineEntity|kSelf|kFlowEntity), kNone, /*parent,incl,exclgroups*/ kBlockEntity, (kInlineEntity|kSelf|kFlowEntity), kNone,
/*special props, prop-range*/ 0,kDefaultPropRange, /*special props, prop-range*/ 0,kDefaultPropRange,
/*special parents,kids,skip*/ 0,0,eHTMLTag_unknown}, /*special parents,kids,skip*/ 0,0,eHTMLTag_unknown},

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

@ -992,13 +992,29 @@ NS_IMETHODIMP CViewSourceHTML::HandleToken(CToken* aToken,nsIParser* aParser) {
if(eHTMLTag_title == theTag){ if(eHTMLTag_title == theTag){
nsCParserNode attrNode(theToken,mLineNumber,GetTokenRecycler()); nsCParserNode attrNode(theToken,mLineNumber,GetTokenRecycler());
CToken* theNextToken = mTokenizer->PopToken();
if(theNextToken) {
theType=eHTMLTokenTypes(theNextToken->GetTokenType()); nsAutoString theTempStr;
if(eToken_text==theType) { nsAutoString theStr;
attrNode.SetSkippedContent(theNextToken->GetStringValueXXX()); PRBool done=PR_FALSE;
} while(!done) {
CHTMLToken* theNextToken=(CHTMLToken*)mTokenizer->PeekToken();
if(theNextToken) {
eHTMLTokenTypes theSubType=eHTMLTokenTypes(theNextToken->GetTokenType());
if(eToken_end!=theSubType) {
theNextToken=(CHTMLToken*)mTokenizer->PopToken();
theNextToken->GetSource(theTempStr);
theStr+=theTempStr;
gTokenRecycler->RecycleToken(theNextToken);
}
else done=PR_TRUE;
}
else done=PR_TRUE;
} }
theStr.CompressWhitespace();
attrNode.SetSkippedContent(theStr);
result= OpenHead(attrNode); result= OpenHead(attrNode);
if(NS_OK==result) { if(NS_OK==result) {
if(mSink) { if(mSink) {

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

@ -2733,11 +2733,21 @@ nsresult CNavDTD::AddHeadLeaf(nsIParserNode& aNode){
return result; return result;
} }
if(eHTMLTag_newline==theTag) //omit newlines from head...
return result;
if(mSink) { if(mSink) {
result=OpenHead(aNode); result=OpenHead(aNode);
if(NS_OK==result) { if(NS_OK==result) {
if(eHTMLTag_title==theTag) { if(eHTMLTag_title==theTag) {
mSink->SetTitle(aNode.GetSkippedContent());
///XXX this evil hack is necessary only for beta.
//Post beta, lets make the GetSkippedContent() call non-const.
const nsString& theString=aNode.GetSkippedContent();
nsString* theStr=(nsString*)&theString;
theStr->CompressWhitespace();
mSink->SetTitle(theString);
} }
else result=AddLeaf(aNode); else result=AddLeaf(aNode);
// XXX If the return value tells us to block, go // XXX If the return value tells us to block, go

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

@ -158,7 +158,7 @@ static eHTMLTags gHTMLKidList[]={eHTMLTag_body,eHTMLTag_frameset,eHTMLTag_head,e
CTagList gHtmlKids(sizeof(gHTMLKidList)/sizeof(eHTMLTag_unknown),gHTMLKidList); CTagList gHtmlKids(sizeof(gHTMLKidList)/sizeof(eHTMLTag_unknown),gHTMLKidList);
static eHTMLTags gHeadKidList[]= static eHTMLTags gHeadKidList[]=
{eHTMLTag_base,eHTMLTag_bgsound,eHTMLTag_link,eHTMLTag_meta,eHTMLTag_script,eHTMLTag_style,eHTMLTag_title,eHTMLTag_noembed,eHTMLTag_noscript}; {eHTMLTag_base,eHTMLTag_bgsound,eHTMLTag_link,eHTMLTag_meta,eHTMLTag_script,eHTMLTag_style,eHTMLTag_title,eHTMLTag_noembed,eHTMLTag_noscript,eHTMLTag_newline};
CTagList gHeadKids(sizeof(gHeadKidList)/sizeof(eHTMLTag_unknown),gHeadKidList); CTagList gHeadKids(sizeof(gHeadKidList)/sizeof(eHTMLTag_unknown),gHeadKidList);
CTagList gLIKids(2,0,eHTMLTag_ol,eHTMLTag_ul); CTagList gLIKids(2,0,eHTMLTag_ol,eHTMLTag_ul);
@ -285,7 +285,7 @@ nsHTMLElement gHTMLElements[] = {
/*req-parent excl-parent*/ eHTMLTag_unknown,eHTMLTag_unknown, /*req-parent excl-parent*/ eHTMLTag_unknown,eHTMLTag_unknown,
/*rootnodes,endrootnodes*/ &gRootTags,&gRootTags, /*rootnodes,endrootnodes*/ &gRootTags,&gRootTags,
/*autoclose starttags and endtags*/ 0,0,0, /*autoclose starttags and endtags*/ 0,0,0,
/*parent,incl,exclgroups*/ kSpecial, (kSelf|SPECIALTYPE), kNone, /*parent,incl,exclgroups*/ kSpecial, (kSelf|SPECIALTYPE|kFlowEntity), kNone,
/*special props, prop-range*/ 0,kDefaultPropRange, /*special props, prop-range*/ 0,kDefaultPropRange,
/*special parents,kids,skip*/ 0,&gContainsParam,eHTMLTag_unknown}, /*special parents,kids,skip*/ 0,&gContainsParam,eHTMLTag_unknown},
@ -830,7 +830,7 @@ nsHTMLElement gHTMLElements[] = {
/*req-parent excl-parent*/ eHTMLTag_unknown,eHTMLTag_unknown, /*req-parent excl-parent*/ eHTMLTag_unknown,eHTMLTag_unknown,
/*rootnodes,endrootnodes*/ &gRootTags,&gRootTags, /*rootnodes,endrootnodes*/ &gRootTags,&gRootTags,
/*autoclose starttags and endtags*/ 0,0,0, /*autoclose starttags and endtags*/ 0,0,0,
/*parent,incl,exclgroups*/ (kHeadMisc|kSpecial), (SPECIALTYPE|kSelf), kNone, /*parent,incl,exclgroups*/ (kHeadMisc|kSpecial), (kFlowEntity|SPECIALTYPE|kSelf), kNone,
/*special props, prop-range*/ 0,kDefaultPropRange, /*special props, prop-range*/ 0,kDefaultPropRange,
/*special parents,kids,skip*/ 0,&gContainsParam,eHTMLTag_unknown}, /*special parents,kids,skip*/ 0,&gContainsParam,eHTMLTag_unknown},
@ -982,7 +982,7 @@ nsHTMLElement gHTMLElements[] = {
/*req-parent excl-parent*/ eHTMLTag_unknown,eHTMLTag_unknown, /*req-parent excl-parent*/ eHTMLTag_unknown,eHTMLTag_unknown,
/*rootnodes,endrootnodes*/ &gRootTags,&gRootTags, /*rootnodes,endrootnodes*/ &gRootTags,&gRootTags,
/*autoclose starttags and endtags*/ 0,0,0, /*autoclose starttags and endtags*/ 0,0,0,
/*parent,incl,exclgroups*/ kBlock, (kInlineEntity|kSelf|kFlowEntity), kNone, /*parent,incl,exclgroups*/ kBlockEntity, (kInlineEntity|kSelf|kFlowEntity), kNone,
/*special props, prop-range*/ 0,kDefaultPropRange, /*special props, prop-range*/ 0,kDefaultPropRange,
/*special parents,kids,skip*/ 0,0,eHTMLTag_unknown}, /*special parents,kids,skip*/ 0,0,eHTMLTag_unknown},

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

@ -992,13 +992,29 @@ NS_IMETHODIMP CViewSourceHTML::HandleToken(CToken* aToken,nsIParser* aParser) {
if(eHTMLTag_title == theTag){ if(eHTMLTag_title == theTag){
nsCParserNode attrNode(theToken,mLineNumber,GetTokenRecycler()); nsCParserNode attrNode(theToken,mLineNumber,GetTokenRecycler());
CToken* theNextToken = mTokenizer->PopToken();
if(theNextToken) {
theType=eHTMLTokenTypes(theNextToken->GetTokenType()); nsAutoString theTempStr;
if(eToken_text==theType) { nsAutoString theStr;
attrNode.SetSkippedContent(theNextToken->GetStringValueXXX()); PRBool done=PR_FALSE;
} while(!done) {
CHTMLToken* theNextToken=(CHTMLToken*)mTokenizer->PeekToken();
if(theNextToken) {
eHTMLTokenTypes theSubType=eHTMLTokenTypes(theNextToken->GetTokenType());
if(eToken_end!=theSubType) {
theNextToken=(CHTMLToken*)mTokenizer->PopToken();
theNextToken->GetSource(theTempStr);
theStr+=theTempStr;
gTokenRecycler->RecycleToken(theNextToken);
}
else done=PR_TRUE;
}
else done=PR_TRUE;
} }
theStr.CompressWhitespace();
attrNode.SetSkippedContent(theStr);
result= OpenHead(attrNode); result= OpenHead(attrNode);
if(NS_OK==result) { if(NS_OK==result) {
if(mSink) { if(mSink) {