small improvement to strictDTD to allow auto-opening of Tbody

This commit is contained in:
rickg%netscape.com 2000-05-07 04:55:36 +00:00
parent 9122f17e5d
commit 127758985b
4 changed files with 44 additions and 8 deletions

View file

@ -9,7 +9,7 @@
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
@ -704,7 +704,7 @@ nsresult COtherDTD::WillHandleStartTag(CToken* aToken,eHTMLTags aTag,nsCParserNo
mLineNumber++;
break;
default:
break;
break;
}
CObserverService* theService=mParser->GetObserverService();
@ -765,13 +765,13 @@ nsresult COtherDTD::HandleStartToken(CToken* aToken) {
switch(theChildTag) {
case eHTMLTag_html:
if(!HasOpenContainer(theChildTag)) {
if(!HasOpenContainer(theChildTag)) {
mSink->OpenHTML(*theNode);
mBodyContext->Push(theNode,0);
}
theTagWasHandled=PR_TRUE;
break;
default:
CElement* theElement=gElementTable->mElements[theParent];
if(theElement) {

View file

@ -699,6 +699,24 @@ public:
}
break;
case eHTMLTag_tr:
case eHTMLTag_th:
if(aContext->mTableStates && (!aContext->mTableStates->mHasTBody)) {
nsCParserNode* theNode=new nsCParserNode();
CToken* theToken=new CStartToken(eHTMLTag_tbody);
theNode->Init(theToken,0,0); //this will likely leak...
result=HandleStartToken(theNode,eHTMLTag_tbody,aContext,aSink);
if(NS_SUCCEEDED(result)) {
CElement *theElement=GetElement(eHTMLTag_tbody);
if(theElement) {
result=theElement->HandleStartToken(aNode,aTag,aContext,aSink);
}
}
}
break;
default:
break;
}

View file

@ -9,7 +9,7 @@
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
@ -704,7 +704,7 @@ nsresult COtherDTD::WillHandleStartTag(CToken* aToken,eHTMLTags aTag,nsCParserNo
mLineNumber++;
break;
default:
break;
break;
}
CObserverService* theService=mParser->GetObserverService();
@ -765,13 +765,13 @@ nsresult COtherDTD::HandleStartToken(CToken* aToken) {
switch(theChildTag) {
case eHTMLTag_html:
if(!HasOpenContainer(theChildTag)) {
if(!HasOpenContainer(theChildTag)) {
mSink->OpenHTML(*theNode);
mBodyContext->Push(theNode,0);
}
theTagWasHandled=PR_TRUE;
break;
default:
CElement* theElement=gElementTable->mElements[theParent];
if(theElement) {

View file

@ -699,6 +699,24 @@ public:
}
break;
case eHTMLTag_tr:
case eHTMLTag_th:
if(aContext->mTableStates && (!aContext->mTableStates->mHasTBody)) {
nsCParserNode* theNode=new nsCParserNode();
CToken* theToken=new CStartToken(eHTMLTag_tbody);
theNode->Init(theToken,0,0); //this will likely leak...
result=HandleStartToken(theNode,eHTMLTag_tbody,aContext,aSink);
if(NS_SUCCEEDED(result)) {
CElement *theElement=GetElement(eHTMLTag_tbody);
if(theElement) {
result=theElement->HandleStartToken(aNode,aTag,aContext,aSink);
}
}
}
break;
default:
break;
}