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