From b73cf8f832bcd361e7cac6ce18b6639b0b968cf0 Mon Sep 17 00:00:00 2001 From: "kipp%netscape.com" Date: Tue, 21 Jul 1998 17:35:48 +0000 Subject: [PATCH] Fixed map tag and area tag handling git-svn-id: svn://10.0.0.236/trunk@6073 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/htmlparser/src/CNavDTD.cpp | 24 ++++++++++++++++++----- mozilla/parser/htmlparser/src/CNavDTD.cpp | 24 ++++++++++++++++++----- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/mozilla/htmlparser/src/CNavDTD.cpp b/mozilla/htmlparser/src/CNavDTD.cpp index 55950bcc374..a8d72f86fba 100644 --- a/mozilla/htmlparser/src/CNavDTD.cpp +++ b/mozilla/htmlparser/src/CNavDTD.cpp @@ -641,11 +641,15 @@ nsresult CNavDTD::HandleStartToken(CToken* aToken) { } break; - case eHTMLTag_nobr: - result=PR_TRUE; + case eHTMLTag_area: + if (mHasOpenMap) { + result = mSink->AddLeaf(attrNode); + } + break; case eHTMLTag_map: - result=PR_TRUE; + result = OpenMap(attrNode); + break; default: result=HandleDefaultStartToken(aToken,tokenTagType,attrNode); @@ -706,7 +710,10 @@ nsresult CNavDTD::HandleEndToken(CToken* aToken) { break; case eHTMLTag_map: - result=CloseContainer(theNode,tokenTagType,PR_TRUE); + { + nsCParserNode aNode((CHTMLToken*)aToken); + result=CloseMap(aNode); + } break; case eHTMLTag_form: @@ -1248,7 +1255,14 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { result = PR_TRUE; break; case eHTMLTag_map: - result=PRBool(eHTMLTag_area==aChild); break; + { + static char okTags[] = {eHTMLTag_area, + eHTMLTag_newline, + eHTMLTag_whitespace, + 0}; + result = PRBool(0 != strchr(okTags, aChild)); + } + break; case eHTMLTag_menu: case eHTMLTag_dir: diff --git a/mozilla/parser/htmlparser/src/CNavDTD.cpp b/mozilla/parser/htmlparser/src/CNavDTD.cpp index 55950bcc374..a8d72f86fba 100644 --- a/mozilla/parser/htmlparser/src/CNavDTD.cpp +++ b/mozilla/parser/htmlparser/src/CNavDTD.cpp @@ -641,11 +641,15 @@ nsresult CNavDTD::HandleStartToken(CToken* aToken) { } break; - case eHTMLTag_nobr: - result=PR_TRUE; + case eHTMLTag_area: + if (mHasOpenMap) { + result = mSink->AddLeaf(attrNode); + } + break; case eHTMLTag_map: - result=PR_TRUE; + result = OpenMap(attrNode); + break; default: result=HandleDefaultStartToken(aToken,tokenTagType,attrNode); @@ -706,7 +710,10 @@ nsresult CNavDTD::HandleEndToken(CToken* aToken) { break; case eHTMLTag_map: - result=CloseContainer(theNode,tokenTagType,PR_TRUE); + { + nsCParserNode aNode((CHTMLToken*)aToken); + result=CloseMap(aNode); + } break; case eHTMLTag_form: @@ -1248,7 +1255,14 @@ PRBool CNavDTD::CanContain(PRInt32 aParent,PRInt32 aChild) { result = PR_TRUE; break; case eHTMLTag_map: - result=PRBool(eHTMLTag_area==aChild); break; + { + static char okTags[] = {eHTMLTag_area, + eHTMLTag_newline, + eHTMLTag_whitespace, + 0}; + result = PRBool(0 != strchr(okTags, aChild)); + } + break; case eHTMLTag_menu: case eHTMLTag_dir: