mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-08 12:19:05 +02:00
small improvement to strictDTD to allow auto-opening of Tbody
This commit is contained in:
parent
9122f17e5d
commit
127758985b
4 changed files with 44 additions and 8 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue