diff --git a/mozilla/htmlparser/src/CNavDTD.cpp b/mozilla/htmlparser/src/CNavDTD.cpp index 483175f292c..bd7c3944a01 100644 --- a/mozilla/htmlparser/src/CNavDTD.cpp +++ b/mozilla/htmlparser/src/CNavDTD.cpp @@ -720,9 +720,9 @@ nsresult CNavDTD::HandleDefaultStartToken(CToken* aToken,eHTMLTags aChildTag,nsI //Sick as it sounds, I have to make sure the body has been //opened before other tags can be added to the content sink... - - static eHTMLTags gBodyBlockers[]={eHTMLTag_body,eHTMLTag_frameset,eHTMLTag_head}; - PRInt32 theBodyBlocker=GetTopmostIndexOf(gBodyBlockers,sizeof(gStyleTags)/sizeof(eHTMLTag_unknown)); + + static eHTMLTags gBodyBlockers[]={eHTMLTag_body,eHTMLTag_frameset,eHTMLTag_head,eHTMLTag_map}; + PRInt32 theBodyBlocker=GetTopmostIndexOf(gBodyBlockers,sizeof(gBodyBlockers)/sizeof(eHTMLTag_unknown)); if(!theBodyBlocker) { if(CanPropagate(eHTMLTag_body,aChildTag)) { mHasOpenBody=PR_TRUE; @@ -1971,8 +1971,10 @@ nsresult CNavDTD::OpenMap(const nsIParserNode& aNode){ if(mHasOpenMap) CloseMap(aNode); nsresult result=mSink->OpenMap(aNode); - if(NS_OK==result) + if(NS_OK==result) { + mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); mHasOpenMap=PR_TRUE; + } return result; } @@ -1989,6 +1991,7 @@ nsresult CNavDTD::CloseMap(const nsIParserNode& aNode){ if(mHasOpenMap) { mHasOpenMap=PR_FALSE; result=mSink->CloseMap(aNode); + mBodyContext->Pop(); } return result; } diff --git a/mozilla/htmlparser/src/nsElementTable.h b/mozilla/htmlparser/src/nsElementTable.h index e9487bf11ff..8da6a500ceb 100644 --- a/mozilla/htmlparser/src/nsElementTable.h +++ b/mozilla/htmlparser/src/nsElementTable.h @@ -141,7 +141,7 @@ CTagList gDTKids(1,eHTMLTag_dt); CTagList gFieldsetKids(1,eHTMLTag_legend); CTagList gFormKids(1,eHTMLTag_keygen); CTagList gFramesetKids(3,eHTMLTag_frame,eHTMLTag_frameset,eHTMLTag_noframes); -CTagList gHtmlKids(5,eHTMLTag_body,eHTMLTag_frameset,eHTMLTag_head,eHTMLTag_noscript,eHTMLTag_script); +CTagList gHtmlKids(6,eHTMLTag_body,eHTMLTag_frameset,eHTMLTag_head,eHTMLTag_map,eHTMLTag_noscript,eHTMLTag_script); CTagList gHeadKids(7,eHTMLTag_base,eHTMLTag_bgsound,eHTMLTag_link,eHTMLTag_meta,eHTMLTag_script,eHTMLTag_style,eHTMLTag_title); CTagList gMapKids(1,eHTMLTag_area); CTagList gNoframesKids(1,eHTMLTag_body); diff --git a/mozilla/htmlparser/src/nsParser.cpp b/mozilla/htmlparser/src/nsParser.cpp index 2946114f4f3..c5c463680bf 100644 --- a/mozilla/htmlparser/src/nsParser.cpp +++ b/mozilla/htmlparser/src/nsParser.cpp @@ -612,6 +612,11 @@ nsresult nsParser::Parse(nsString& aSourceBuffer,PRBool anHTMLString,PRBool aVer mDTDVerification=aVerifyEnabled; mStreamListenerState=eOnStart; + { + fstream out("c:/temp/out.file",ios::trunc); + aSourceBuffer.DebugDump(out); + } + nsresult result=NS_OK; if(0OpenMap(aNode); - if(NS_OK==result) + if(NS_OK==result) { + mBodyContext->Push((eHTMLTags)aNode.GetNodeType()); mHasOpenMap=PR_TRUE; + } return result; } @@ -1989,6 +1991,7 @@ nsresult CNavDTD::CloseMap(const nsIParserNode& aNode){ if(mHasOpenMap) { mHasOpenMap=PR_FALSE; result=mSink->CloseMap(aNode); + mBodyContext->Pop(); } return result; } diff --git a/mozilla/parser/htmlparser/src/nsElementTable.h b/mozilla/parser/htmlparser/src/nsElementTable.h index e9487bf11ff..8da6a500ceb 100644 --- a/mozilla/parser/htmlparser/src/nsElementTable.h +++ b/mozilla/parser/htmlparser/src/nsElementTable.h @@ -141,7 +141,7 @@ CTagList gDTKids(1,eHTMLTag_dt); CTagList gFieldsetKids(1,eHTMLTag_legend); CTagList gFormKids(1,eHTMLTag_keygen); CTagList gFramesetKids(3,eHTMLTag_frame,eHTMLTag_frameset,eHTMLTag_noframes); -CTagList gHtmlKids(5,eHTMLTag_body,eHTMLTag_frameset,eHTMLTag_head,eHTMLTag_noscript,eHTMLTag_script); +CTagList gHtmlKids(6,eHTMLTag_body,eHTMLTag_frameset,eHTMLTag_head,eHTMLTag_map,eHTMLTag_noscript,eHTMLTag_script); CTagList gHeadKids(7,eHTMLTag_base,eHTMLTag_bgsound,eHTMLTag_link,eHTMLTag_meta,eHTMLTag_script,eHTMLTag_style,eHTMLTag_title); CTagList gMapKids(1,eHTMLTag_area); CTagList gNoframesKids(1,eHTMLTag_body); diff --git a/mozilla/parser/htmlparser/src/nsParser.cpp b/mozilla/parser/htmlparser/src/nsParser.cpp index 2946114f4f3..c5c463680bf 100644 --- a/mozilla/parser/htmlparser/src/nsParser.cpp +++ b/mozilla/parser/htmlparser/src/nsParser.cpp @@ -612,6 +612,11 @@ nsresult nsParser::Parse(nsString& aSourceBuffer,PRBool anHTMLString,PRBool aVer mDTDVerification=aVerifyEnabled; mStreamListenerState=eOnStart; + { + fstream out("c:/temp/out.file",ios::trunc); + aSourceBuffer.DebugDump(out); + } + nsresult result=NS_OK; if(0