fixed 2 bugs that prevented home.netscape.com from loading. WIP.
git-svn-id: svn://10.0.0.236/trunk@2565 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -485,7 +485,7 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) const {
|
||||
{
|
||||
static char okTags[]={
|
||||
eHTMLTag_caption, eHTMLTag_col, eHTMLTag_colgroup,eHTMLTag_tbody,
|
||||
eHTMLTag_tfoot, eHTMLTag_tr, eHTMLTag_thead, 0};
|
||||
eHTMLTag_tfoot, /* eHTMLTag_tr,*/ eHTMLTag_thead, 0};
|
||||
result=PRBool(0!=strchr(okTags,aChild));
|
||||
}
|
||||
break;
|
||||
@@ -626,6 +626,17 @@ PRBool CNavDTD::CanOmit(PRInt32 aParent,PRInt32 aChild) const {
|
||||
} //switch
|
||||
break;
|
||||
|
||||
case eHTMLTag_entity:
|
||||
switch((eHTMLTags)aParent) {
|
||||
case eHTMLTag_tr: case eHTMLTag_table:
|
||||
case eHTMLTag_thead: case eHTMLTag_tfoot:
|
||||
case eHTMLTag_tbody: case eHTMLTag_col:
|
||||
result=PR_TRUE;
|
||||
default:
|
||||
break;
|
||||
} //switch
|
||||
break;
|
||||
|
||||
default:
|
||||
if(eHTMLTag_unknown==aParent)
|
||||
result=PR_FALSE;
|
||||
@@ -848,6 +859,15 @@ PRBool CNavDTD::ForwardPropagate(nsString& aVector,PRInt32 aParentTag,PRInt32 aC
|
||||
|
||||
switch(aParentTag) {
|
||||
case eHTMLTag_table:
|
||||
{
|
||||
static char tableTags[]={eHTMLTag_tr,eHTMLTag_td,0};
|
||||
if(strchr(tableTags,aChildTag)) {
|
||||
//if you're here, we know we can correctly backward propagate.
|
||||
result=BackwardPropagate(aVector,aParentTag,aChildTag);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case eHTMLTag_tr:
|
||||
if(PR_TRUE==CanContain(eHTMLTag_td,aChildTag)) {
|
||||
aVector.Append((PRUnichar)eHTMLTag_td);
|
||||
|
||||
@@ -769,7 +769,7 @@ PRInt32 nsHTMLParser::CollectAttributes(nsCParserNode& aNode,PRInt32 aCount){
|
||||
}
|
||||
else (*mCurrentPos)--;
|
||||
}
|
||||
else kInterrupted;
|
||||
else return kInterrupted;
|
||||
}
|
||||
else return kInterrupted;
|
||||
}
|
||||
@@ -1023,10 +1023,15 @@ PRInt32 nsHTMLParser::HandleEndToken(CToken* aToken) {
|
||||
*/
|
||||
PRInt32 nsHTMLParser::HandleEntityToken(CToken* aToken) {
|
||||
NS_PRECONDITION(0!=aToken,kNullToken);
|
||||
CEntityToken* et = (CEntityToken*)(aToken);
|
||||
PRInt32 result=kNoError;
|
||||
nsCParserNode aNode((CHTMLToken*)aToken);
|
||||
result=AddLeaf(aNode);
|
||||
|
||||
CEntityToken* et = (CEntityToken*)(aToken);
|
||||
PRInt32 result=kNoError;
|
||||
eHTMLTags tokenTagType=et->GetHTMLTag();
|
||||
|
||||
if(PR_FALSE==mDTD->CanOmit(GetTopNode(),tokenTagType)) {
|
||||
nsCParserNode aNode((CHTMLToken*)aToken);
|
||||
result=AddLeaf(aNode);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -129,6 +129,7 @@ HTMLTagEntry gHTMLTagTable[] =
|
||||
{"DT", eHTMLTag_dt},
|
||||
|
||||
{"EM", eHTMLTag_em}, {"EMBED", eHTMLTag_embed},
|
||||
{"ENTITY", eHTMLTag_entity}, //a pseudo tag
|
||||
|
||||
{"FIELDSET", eHTMLTag_fieldset}, {"FONT", eHTMLTag_font},
|
||||
{"FOOTER", eHTMLTag_footer}, {"FORM", eHTMLTag_form},
|
||||
@@ -968,6 +969,7 @@ PRInt32 CWhitespaceToken::Consume(PRUnichar aChar, CScanner& aScanner) {
|
||||
*/
|
||||
CEntityToken::CEntityToken(const nsString& aName) : CHTMLToken(aName) {
|
||||
mOrdinalValue=eToken_entity;
|
||||
mTagType=eHTMLTag_entity;
|
||||
#ifdef VERBOSE_DEBUG
|
||||
if(!VerifyEntityTable()) {
|
||||
cout<<"Entity table is invalid!" << endl;
|
||||
|
||||
@@ -61,7 +61,7 @@ enum eHTMLTags
|
||||
eHTMLTag_code, eHTMLTag_col, eHTMLTag_colgroup, eHTMLTag_comment,
|
||||
eHTMLTag_dd, eHTMLTag_del, eHTMLTag_dfn, eHTMLTag_dir,
|
||||
eHTMLTag_div, eHTMLTag_dl, eHTMLTag_dt,
|
||||
eHTMLTag_em, eHTMLTag_embed,
|
||||
eHTMLTag_em, eHTMLTag_embed, eHTMLTag_entity,
|
||||
eHTMLTag_fieldset, eHTMLTag_font, eHTMLTag_footer,
|
||||
eHTMLTag_form, eHTMLTag_frame, eHTMLTag_frameset, //39
|
||||
eHTMLTag_h1, eHTMLTag_h2, eHTMLTag_h3, eHTMLTag_h4,
|
||||
|
||||
@@ -485,7 +485,7 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) const {
|
||||
{
|
||||
static char okTags[]={
|
||||
eHTMLTag_caption, eHTMLTag_col, eHTMLTag_colgroup,eHTMLTag_tbody,
|
||||
eHTMLTag_tfoot, eHTMLTag_tr, eHTMLTag_thead, 0};
|
||||
eHTMLTag_tfoot, /* eHTMLTag_tr,*/ eHTMLTag_thead, 0};
|
||||
result=PRBool(0!=strchr(okTags,aChild));
|
||||
}
|
||||
break;
|
||||
@@ -626,6 +626,17 @@ PRBool CNavDTD::CanOmit(PRInt32 aParent,PRInt32 aChild) const {
|
||||
} //switch
|
||||
break;
|
||||
|
||||
case eHTMLTag_entity:
|
||||
switch((eHTMLTags)aParent) {
|
||||
case eHTMLTag_tr: case eHTMLTag_table:
|
||||
case eHTMLTag_thead: case eHTMLTag_tfoot:
|
||||
case eHTMLTag_tbody: case eHTMLTag_col:
|
||||
result=PR_TRUE;
|
||||
default:
|
||||
break;
|
||||
} //switch
|
||||
break;
|
||||
|
||||
default:
|
||||
if(eHTMLTag_unknown==aParent)
|
||||
result=PR_FALSE;
|
||||
@@ -848,6 +859,15 @@ PRBool CNavDTD::ForwardPropagate(nsString& aVector,PRInt32 aParentTag,PRInt32 aC
|
||||
|
||||
switch(aParentTag) {
|
||||
case eHTMLTag_table:
|
||||
{
|
||||
static char tableTags[]={eHTMLTag_tr,eHTMLTag_td,0};
|
||||
if(strchr(tableTags,aChildTag)) {
|
||||
//if you're here, we know we can correctly backward propagate.
|
||||
result=BackwardPropagate(aVector,aParentTag,aChildTag);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case eHTMLTag_tr:
|
||||
if(PR_TRUE==CanContain(eHTMLTag_td,aChildTag)) {
|
||||
aVector.Append((PRUnichar)eHTMLTag_td);
|
||||
|
||||
@@ -769,7 +769,7 @@ PRInt32 nsHTMLParser::CollectAttributes(nsCParserNode& aNode,PRInt32 aCount){
|
||||
}
|
||||
else (*mCurrentPos)--;
|
||||
}
|
||||
else kInterrupted;
|
||||
else return kInterrupted;
|
||||
}
|
||||
else return kInterrupted;
|
||||
}
|
||||
@@ -1023,10 +1023,15 @@ PRInt32 nsHTMLParser::HandleEndToken(CToken* aToken) {
|
||||
*/
|
||||
PRInt32 nsHTMLParser::HandleEntityToken(CToken* aToken) {
|
||||
NS_PRECONDITION(0!=aToken,kNullToken);
|
||||
CEntityToken* et = (CEntityToken*)(aToken);
|
||||
PRInt32 result=kNoError;
|
||||
nsCParserNode aNode((CHTMLToken*)aToken);
|
||||
result=AddLeaf(aNode);
|
||||
|
||||
CEntityToken* et = (CEntityToken*)(aToken);
|
||||
PRInt32 result=kNoError;
|
||||
eHTMLTags tokenTagType=et->GetHTMLTag();
|
||||
|
||||
if(PR_FALSE==mDTD->CanOmit(GetTopNode(),tokenTagType)) {
|
||||
nsCParserNode aNode((CHTMLToken*)aToken);
|
||||
result=AddLeaf(aNode);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -129,6 +129,7 @@ HTMLTagEntry gHTMLTagTable[] =
|
||||
{"DT", eHTMLTag_dt},
|
||||
|
||||
{"EM", eHTMLTag_em}, {"EMBED", eHTMLTag_embed},
|
||||
{"ENTITY", eHTMLTag_entity}, //a pseudo tag
|
||||
|
||||
{"FIELDSET", eHTMLTag_fieldset}, {"FONT", eHTMLTag_font},
|
||||
{"FOOTER", eHTMLTag_footer}, {"FORM", eHTMLTag_form},
|
||||
@@ -968,6 +969,7 @@ PRInt32 CWhitespaceToken::Consume(PRUnichar aChar, CScanner& aScanner) {
|
||||
*/
|
||||
CEntityToken::CEntityToken(const nsString& aName) : CHTMLToken(aName) {
|
||||
mOrdinalValue=eToken_entity;
|
||||
mTagType=eHTMLTag_entity;
|
||||
#ifdef VERBOSE_DEBUG
|
||||
if(!VerifyEntityTable()) {
|
||||
cout<<"Entity table is invalid!" << endl;
|
||||
|
||||
@@ -61,7 +61,7 @@ enum eHTMLTags
|
||||
eHTMLTag_code, eHTMLTag_col, eHTMLTag_colgroup, eHTMLTag_comment,
|
||||
eHTMLTag_dd, eHTMLTag_del, eHTMLTag_dfn, eHTMLTag_dir,
|
||||
eHTMLTag_div, eHTMLTag_dl, eHTMLTag_dt,
|
||||
eHTMLTag_em, eHTMLTag_embed,
|
||||
eHTMLTag_em, eHTMLTag_embed, eHTMLTag_entity,
|
||||
eHTMLTag_fieldset, eHTMLTag_font, eHTMLTag_footer,
|
||||
eHTMLTag_form, eHTMLTag_frame, eHTMLTag_frameset, //39
|
||||
eHTMLTag_h1, eHTMLTag_h2, eHTMLTag_h3, eHTMLTag_h4,
|
||||
|
||||
Reference in New Issue
Block a user