diff --git a/mozilla/htmlparser/src/CNavDTD.cpp b/mozilla/htmlparser/src/CNavDTD.cpp index 38673c35a96..c78d1f67997 100644 --- a/mozilla/htmlparser/src/CNavDTD.cpp +++ b/mozilla/htmlparser/src/CNavDTD.cpp @@ -1007,21 +1007,21 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { static char gTagSet1[]={ eHTMLTag_a, eHTMLTag_acronym, eHTMLTag_address, eHTMLTag_applet, - eHTMLTag_blink, eHTMLTag_b, eHTMLTag_basefont, eHTMLTag_bdo, + eHTMLTag_blink, eHTMLTag_b, eHTMLTag_basefont, eHTMLTag_bdo, eHTMLTag_big, eHTMLTag_blockquote,eHTMLTag_br, eHTMLTag_button, eHTMLTag_center, eHTMLTag_cite, eHTMLTag_code, eHTMLTag_dfn, eHTMLTag_dir, eHTMLTag_div, eHTMLTag_dl, eHTMLTag_em, eHTMLTag_fieldset, eHTMLTag_font, eHTMLTag_form, eHTMLTag_h1, eHTMLTag_h2, eHTMLTag_h3, eHTMLTag_h4, eHTMLTag_h5, eHTMLTag_h6, - eHTMLTag_hr, eHTMLTag_i, eHTMLTag_iframe, eHTMLTag_img, + eHTMLTag_hr, eHTMLTag_i, eHTMLTag_iframe, eHTMLTag_img, eHTMLTag_input, eHTMLTag_isindex, eHTMLTag_kbd, eHTMLTag_label, eHTMLTag_li, eHTMLTag_map, eHTMLTag_menu, eHTMLTag_newline, eHTMLTag_nobr, eHTMLTag_noframes, eHTMLTag_noscript, - eHTMLTag_object, eHTMLTag_ol, eHTMLTag_p, eHTMLTag_pre, - eHTMLTag_q, eHTMLTag_s, eHTMLTag_strike, + eHTMLTag_object, eHTMLTag_ol, eHTMLTag_p, eHTMLTag_pre, + eHTMLTag_q, eHTMLTag_s, eHTMLTag_strike, eHTMLTag_samp, eHTMLTag_script, eHTMLTag_select, eHTMLTag_small, eHTMLTag_span, eHTMLTag_strong, eHTMLTag_sub, eHTMLTag_sup, eHTMLTag_table, eHTMLTag_text, @@ -1037,7 +1037,7 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { eHTMLTag_basefont, eHTMLTag_bdo, eHTMLTag_big, eHTMLTag_br, eHTMLTag_button, eHTMLTag_cite, eHTMLTag_code, eHTMLTag_dfn, eHTMLTag_div, eHTMLTag_em, eHTMLTag_font, eHTMLTag_hr, - eHTMLTag_i, eHTMLTag_iframe, eHTMLTag_img, eHTMLTag_input, + eHTMLTag_i, eHTMLTag_iframe, eHTMLTag_img, eHTMLTag_input, eHTMLTag_kbd, eHTMLTag_label, eHTMLTag_map, eHTMLTag_newline, eHTMLTag_nobr, @@ -1059,14 +1059,14 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { eHTMLTag_div, eHTMLTag_dt, eHTMLTag_em, eHTMLTag_fieldset, eHTMLTag_font, eHTMLTag_form, eHTMLTag_h1, eHTMLTag_h2, eHTMLTag_h3, eHTMLTag_h4, eHTMLTag_h5, eHTMLTag_h6, - eHTMLTag_i, eHTMLTag_iframe, eHTMLTag_ins, eHTMLTag_kbd, + eHTMLTag_i, eHTMLTag_iframe, eHTMLTag_ins, eHTMLTag_kbd, eHTMLTag_label, eHTMLTag_legend, eHTMLTag_li, eHTMLTag_newline, eHTMLTag_noframes, eHTMLTag_noscript, eHTMLTag_object, eHTMLTag_p, eHTMLTag_pre, - eHTMLTag_q, eHTMLTag_s, eHTMLTag_strike, + eHTMLTag_q, eHTMLTag_s, eHTMLTag_strike, eHTMLTag_samp, eHTMLTag_small, eHTMLTag_span, eHTMLTag_strong, eHTMLTag_sub, eHTMLTag_sup, eHTMLTag_td, eHTMLTag_text, @@ -1091,21 +1091,10 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { result=PRBool(0!=strchr(gTagSet2,aChild)); break; case eHTMLTag_applet: - { - static char okTags[]={ - eHTMLTag_a, eHTMLTag_acronym, eHTMLTag_applet, eHTMLTag_b, - eHTMLTag_basefont,eHTMLTag_bdo, eHTMLTag_big, eHTMLTag_br, - eHTMLTag_button, eHTMLTag_cite, eHTMLTag_code, eHTMLTag_dfn, - eHTMLTag_em, eHTMLTag_font, eHTMLTag_i, eHTMLTag_iframe, - eHTMLTag_img, eHTMLTag_input, eHTMLTag_kbd, eHTMLTag_label, - eHTMLTag_map, eHTMLTag_object, eHTMLTag_param, eHTMLTag_q, - eHTMLTag_s, eHTMLTag_samp, eHTMLTag_script, - eHTMLTag_select, eHTMLTag_small, - eHTMLTag_span, eHTMLTag_strike, eHTMLTag_strong, eHTMLTag_sub, - eHTMLTag_sup, eHTMLTag_textarea, eHTMLTag_tt, eHTMLTag_u, - eHTMLTag_var,0}; - result=PRBool(0!=strchr(okTags,aChild)); - } + if(eHTMLTag_param==aChild) + result=PR_TRUE; + else result=PRBool(0!=strchr(gTagSet2,aChild)); + break; case eHTMLTag_area: case eHTMLTag_base: @@ -1169,8 +1158,6 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { case eHTMLTag_dd: case eHTMLTag_dt: - result=PRBool(0!=strchr(gTagSet1,aChild)); break; - case eHTMLTag_div: result=PRBool(0!=strchr(gTagSet1,aChild)); break; @@ -1226,8 +1213,6 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { break; case eHTMLTag_iframe:/* XXX wrong */ - result=PRBool(0!=strchr(gTagSet1,aChild)); break; - case eHTMLTag_label: case eHTMLTag_legend:/* XXX not sure */ result=PRBool(0!=strchr(gTagSet1,aChild)); break; @@ -1269,9 +1254,6 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { case eHTMLTag_noscript: result=PRBool(0!=strchr(gTagSet1,aChild)); break; - case eHTMLTag_object: - result=PRBool(0!=strchr(gTagSet2,aChild)); break; - case eHTMLTag_option: //for now, allow an option to contain anything but another option... result=PRBool(eHTMLTag_option!=aChild); break; @@ -1279,18 +1261,19 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { case eHTMLTag_p: if(eHTMLTag_p==aChild) result=PR_FALSE; - else result=PRBool(0!=strchr(gTagSet2,aChild)); + else result=PRBool(0!=strchr(gTagSet2,aChild)); break; break; + case eHTMLTag_object: + case eHTMLTag_pre: + result=PRBool(0!=strchr(gTagSet2,aChild)); break; + case eHTMLTag_param: break; //singletons can't contain other tags case eHTMLTag_plaintext: break; - case eHTMLTag_pre: - result=PRBool(0!=strchr(gTagSet2,aChild)); break; - case eHTMLTag_script: break; //unadorned script text... @@ -2607,7 +2590,6 @@ PRInt32 CNavDTD::ConsumeStartTag(PRUnichar aChar,CScanner& aScanner,CToken*& aTo CToken* skippedToken=0; if(str.EqualsIgnoreCase("SCRIPT") || str.EqualsIgnoreCase("STYLE") || - str.EqualsIgnoreCase("APPLET") || str.EqualsIgnoreCase("TITLE") || str.EqualsIgnoreCase("TEXTAREA")) { diff --git a/mozilla/htmlparser/src/nsHTMLTokens.cpp b/mozilla/htmlparser/src/nsHTMLTokens.cpp index 56165633c0f..95d7a744b7a 100644 --- a/mozilla/htmlparser/src/nsHTMLTokens.cpp +++ b/mozilla/htmlparser/src/nsHTMLTokens.cpp @@ -25,6 +25,7 @@ #include "nsParserTypes.h" #include "prtypes.h" #include "nsDebug.h" +#include "nsHTMLTags.h" //#define GESS_MACHINE #ifdef GESS_MACHINE @@ -153,6 +154,14 @@ PRInt32 CStartToken::GetTypeID(){ char cbuf[20]; tmp.ToCString(cbuf, sizeof(cbuf)); mTypeID = NS_TagToEnum(cbuf); + switch(mTypeID) { + case eHTMLTag_dir: + case eHTMLTag_menu: + mTypeID=eHTMLTag_ul; + break; + default: + break; + } } return mTypeID; } @@ -328,6 +337,14 @@ PRInt32 CEndToken::GetTypeID(){ char cbuf[20]; tmp.ToCString(cbuf, sizeof(cbuf)); mTypeID = NS_TagToEnum(cbuf); + switch(mTypeID) { + case eHTMLTag_dir: + case eHTMLTag_menu: + mTypeID=eHTMLTag_ul; + break; + default: + break; + } } return mTypeID; } diff --git a/mozilla/parser/htmlparser/src/CNavDTD.cpp b/mozilla/parser/htmlparser/src/CNavDTD.cpp index 38673c35a96..c78d1f67997 100644 --- a/mozilla/parser/htmlparser/src/CNavDTD.cpp +++ b/mozilla/parser/htmlparser/src/CNavDTD.cpp @@ -1007,21 +1007,21 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { static char gTagSet1[]={ eHTMLTag_a, eHTMLTag_acronym, eHTMLTag_address, eHTMLTag_applet, - eHTMLTag_blink, eHTMLTag_b, eHTMLTag_basefont, eHTMLTag_bdo, + eHTMLTag_blink, eHTMLTag_b, eHTMLTag_basefont, eHTMLTag_bdo, eHTMLTag_big, eHTMLTag_blockquote,eHTMLTag_br, eHTMLTag_button, eHTMLTag_center, eHTMLTag_cite, eHTMLTag_code, eHTMLTag_dfn, eHTMLTag_dir, eHTMLTag_div, eHTMLTag_dl, eHTMLTag_em, eHTMLTag_fieldset, eHTMLTag_font, eHTMLTag_form, eHTMLTag_h1, eHTMLTag_h2, eHTMLTag_h3, eHTMLTag_h4, eHTMLTag_h5, eHTMLTag_h6, - eHTMLTag_hr, eHTMLTag_i, eHTMLTag_iframe, eHTMLTag_img, + eHTMLTag_hr, eHTMLTag_i, eHTMLTag_iframe, eHTMLTag_img, eHTMLTag_input, eHTMLTag_isindex, eHTMLTag_kbd, eHTMLTag_label, eHTMLTag_li, eHTMLTag_map, eHTMLTag_menu, eHTMLTag_newline, eHTMLTag_nobr, eHTMLTag_noframes, eHTMLTag_noscript, - eHTMLTag_object, eHTMLTag_ol, eHTMLTag_p, eHTMLTag_pre, - eHTMLTag_q, eHTMLTag_s, eHTMLTag_strike, + eHTMLTag_object, eHTMLTag_ol, eHTMLTag_p, eHTMLTag_pre, + eHTMLTag_q, eHTMLTag_s, eHTMLTag_strike, eHTMLTag_samp, eHTMLTag_script, eHTMLTag_select, eHTMLTag_small, eHTMLTag_span, eHTMLTag_strong, eHTMLTag_sub, eHTMLTag_sup, eHTMLTag_table, eHTMLTag_text, @@ -1037,7 +1037,7 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { eHTMLTag_basefont, eHTMLTag_bdo, eHTMLTag_big, eHTMLTag_br, eHTMLTag_button, eHTMLTag_cite, eHTMLTag_code, eHTMLTag_dfn, eHTMLTag_div, eHTMLTag_em, eHTMLTag_font, eHTMLTag_hr, - eHTMLTag_i, eHTMLTag_iframe, eHTMLTag_img, eHTMLTag_input, + eHTMLTag_i, eHTMLTag_iframe, eHTMLTag_img, eHTMLTag_input, eHTMLTag_kbd, eHTMLTag_label, eHTMLTag_map, eHTMLTag_newline, eHTMLTag_nobr, @@ -1059,14 +1059,14 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { eHTMLTag_div, eHTMLTag_dt, eHTMLTag_em, eHTMLTag_fieldset, eHTMLTag_font, eHTMLTag_form, eHTMLTag_h1, eHTMLTag_h2, eHTMLTag_h3, eHTMLTag_h4, eHTMLTag_h5, eHTMLTag_h6, - eHTMLTag_i, eHTMLTag_iframe, eHTMLTag_ins, eHTMLTag_kbd, + eHTMLTag_i, eHTMLTag_iframe, eHTMLTag_ins, eHTMLTag_kbd, eHTMLTag_label, eHTMLTag_legend, eHTMLTag_li, eHTMLTag_newline, eHTMLTag_noframes, eHTMLTag_noscript, eHTMLTag_object, eHTMLTag_p, eHTMLTag_pre, - eHTMLTag_q, eHTMLTag_s, eHTMLTag_strike, + eHTMLTag_q, eHTMLTag_s, eHTMLTag_strike, eHTMLTag_samp, eHTMLTag_small, eHTMLTag_span, eHTMLTag_strong, eHTMLTag_sub, eHTMLTag_sup, eHTMLTag_td, eHTMLTag_text, @@ -1091,21 +1091,10 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { result=PRBool(0!=strchr(gTagSet2,aChild)); break; case eHTMLTag_applet: - { - static char okTags[]={ - eHTMLTag_a, eHTMLTag_acronym, eHTMLTag_applet, eHTMLTag_b, - eHTMLTag_basefont,eHTMLTag_bdo, eHTMLTag_big, eHTMLTag_br, - eHTMLTag_button, eHTMLTag_cite, eHTMLTag_code, eHTMLTag_dfn, - eHTMLTag_em, eHTMLTag_font, eHTMLTag_i, eHTMLTag_iframe, - eHTMLTag_img, eHTMLTag_input, eHTMLTag_kbd, eHTMLTag_label, - eHTMLTag_map, eHTMLTag_object, eHTMLTag_param, eHTMLTag_q, - eHTMLTag_s, eHTMLTag_samp, eHTMLTag_script, - eHTMLTag_select, eHTMLTag_small, - eHTMLTag_span, eHTMLTag_strike, eHTMLTag_strong, eHTMLTag_sub, - eHTMLTag_sup, eHTMLTag_textarea, eHTMLTag_tt, eHTMLTag_u, - eHTMLTag_var,0}; - result=PRBool(0!=strchr(okTags,aChild)); - } + if(eHTMLTag_param==aChild) + result=PR_TRUE; + else result=PRBool(0!=strchr(gTagSet2,aChild)); + break; case eHTMLTag_area: case eHTMLTag_base: @@ -1169,8 +1158,6 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { case eHTMLTag_dd: case eHTMLTag_dt: - result=PRBool(0!=strchr(gTagSet1,aChild)); break; - case eHTMLTag_div: result=PRBool(0!=strchr(gTagSet1,aChild)); break; @@ -1226,8 +1213,6 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { break; case eHTMLTag_iframe:/* XXX wrong */ - result=PRBool(0!=strchr(gTagSet1,aChild)); break; - case eHTMLTag_label: case eHTMLTag_legend:/* XXX not sure */ result=PRBool(0!=strchr(gTagSet1,aChild)); break; @@ -1269,9 +1254,6 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { case eHTMLTag_noscript: result=PRBool(0!=strchr(gTagSet1,aChild)); break; - case eHTMLTag_object: - result=PRBool(0!=strchr(gTagSet2,aChild)); break; - case eHTMLTag_option: //for now, allow an option to contain anything but another option... result=PRBool(eHTMLTag_option!=aChild); break; @@ -1279,18 +1261,19 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { case eHTMLTag_p: if(eHTMLTag_p==aChild) result=PR_FALSE; - else result=PRBool(0!=strchr(gTagSet2,aChild)); + else result=PRBool(0!=strchr(gTagSet2,aChild)); break; break; + case eHTMLTag_object: + case eHTMLTag_pre: + result=PRBool(0!=strchr(gTagSet2,aChild)); break; + case eHTMLTag_param: break; //singletons can't contain other tags case eHTMLTag_plaintext: break; - case eHTMLTag_pre: - result=PRBool(0!=strchr(gTagSet2,aChild)); break; - case eHTMLTag_script: break; //unadorned script text... @@ -2607,7 +2590,6 @@ PRInt32 CNavDTD::ConsumeStartTag(PRUnichar aChar,CScanner& aScanner,CToken*& aTo CToken* skippedToken=0; if(str.EqualsIgnoreCase("SCRIPT") || str.EqualsIgnoreCase("STYLE") || - str.EqualsIgnoreCase("APPLET") || str.EqualsIgnoreCase("TITLE") || str.EqualsIgnoreCase("TEXTAREA")) { diff --git a/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp b/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp index 56165633c0f..95d7a744b7a 100644 --- a/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp +++ b/mozilla/parser/htmlparser/src/nsHTMLTokens.cpp @@ -25,6 +25,7 @@ #include "nsParserTypes.h" #include "prtypes.h" #include "nsDebug.h" +#include "nsHTMLTags.h" //#define GESS_MACHINE #ifdef GESS_MACHINE @@ -153,6 +154,14 @@ PRInt32 CStartToken::GetTypeID(){ char cbuf[20]; tmp.ToCString(cbuf, sizeof(cbuf)); mTypeID = NS_TagToEnum(cbuf); + switch(mTypeID) { + case eHTMLTag_dir: + case eHTMLTag_menu: + mTypeID=eHTMLTag_ul; + break; + default: + break; + } } return mTypeID; } @@ -328,6 +337,14 @@ PRInt32 CEndToken::GetTypeID(){ char cbuf[20]; tmp.ToCString(cbuf, sizeof(cbuf)); mTypeID = NS_TagToEnum(cbuf); + switch(mTypeID) { + case eHTMLTag_dir: + case eHTMLTag_menu: + mTypeID=eHTMLTag_ul; + break; + default: + break; + } } return mTypeID; }