Fix line numbers in html. b=111576, r=heikki, sr=jst, a=asa,chofmann
git-svn-id: svn://10.0.0.236/trunk@118658 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -380,9 +380,6 @@ CViewSourceHTML::CViewSourceHTML() : mFilename(), mTags(), mErrors() {
|
||||
*/
|
||||
CViewSourceHTML::~CViewSourceHTML(){
|
||||
mParser=0; //just to prove we destructed...
|
||||
|
||||
NS_IF_RELEASE(mTokenizer);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -454,7 +451,9 @@ CViewSourceHTML::CanParse(CParserContext& aParserContext,
|
||||
* @param aSink
|
||||
* @return error code (almost always 0)
|
||||
*/
|
||||
nsresult CViewSourceHTML::WillBuildModel( const CParserContext& aParserContext,nsIContentSink* aSink){
|
||||
nsresult CViewSourceHTML::WillBuildModel(const CParserContext& aParserContext,
|
||||
nsITokenizer* aTokenizer,
|
||||
nsIContentSink* aSink){
|
||||
|
||||
nsresult result=NS_OK;
|
||||
|
||||
@@ -476,6 +475,7 @@ nsresult CViewSourceHTML::WillBuildModel( const CParserContext& aParserContext,
|
||||
mMimeType=aParserContext.mMimeType;
|
||||
mDTDMode=aParserContext.mDTDMode;
|
||||
mParserCommand=aParserContext.mParserCommand;
|
||||
mTokenizer = aTokenizer;
|
||||
mErrorCount=0;
|
||||
mTagCount=0;
|
||||
|
||||
@@ -535,12 +535,12 @@ NS_IMETHODIMP CViewSourceHTML::BuildModel(nsIParser* aParser,nsITokenizer* aToke
|
||||
|
||||
tag.Assign(NS_LITERAL_STRING("HTML"));
|
||||
CStartToken htmlToken(tag, eHTMLTag_html);
|
||||
nsCParserNode htmlNode(&htmlToken,0,0/*stack token*/);
|
||||
nsCParserNode htmlNode(&htmlToken, 0/*stack token*/);
|
||||
mSink->OpenHTML(htmlNode);
|
||||
|
||||
tag.Assign(NS_LITERAL_STRING("HEAD"));
|
||||
CStartToken headToken(tag, eHTMLTag_head);
|
||||
nsCParserNode headNode(&headToken,0,0/*stack token*/);
|
||||
nsCParserNode headNode(&headToken, 0/*stack token*/);
|
||||
mSink->OpenHead(headNode);
|
||||
|
||||
// Note that XUL with automatically add the prefix "Source of: "
|
||||
@@ -551,7 +551,7 @@ NS_IMETHODIMP CViewSourceHTML::BuildModel(nsIParser* aParser,nsITokenizer* aToke
|
||||
CStartToken* theToken=NS_STATIC_CAST(CStartToken*,theAllocator->CreateTokenOfType(eToken_start,eHTMLTag_link,tag));
|
||||
if(theToken) {
|
||||
CAttributeToken *theAttr;
|
||||
nsCParserNode theNode(theToken,0,theAllocator);
|
||||
nsCParserNode theNode(theToken, theAllocator);
|
||||
|
||||
theAttr=(CAttributeToken*)theAllocator->CreateTokenOfType(eToken_attribute,eHTMLTag_unknown,NS_LITERAL_STRING("stylesheet"));
|
||||
theAttr->SetKey(NS_LITERAL_STRING("rel"));
|
||||
@@ -571,7 +571,7 @@ NS_IMETHODIMP CViewSourceHTML::BuildModel(nsIParser* aParser,nsITokenizer* aToke
|
||||
}
|
||||
|
||||
CEndToken endHeadToken(eHTMLTag_head);
|
||||
nsCParserNode endHeadNode(&endHeadToken,0,0/*stack token*/);
|
||||
nsCParserNode endHeadNode(&endHeadToken, 0/*stack token*/);
|
||||
result = mSink->CloseHead(endHeadNode);
|
||||
if(NS_SUCCEEDED(result)) {
|
||||
mHasOpenRoot = PR_TRUE;
|
||||
@@ -585,7 +585,7 @@ NS_IMETHODIMP CViewSourceHTML::BuildModel(nsIParser* aParser,nsITokenizer* aToke
|
||||
tag.Assign(NS_LITERAL_STRING("BODY"));
|
||||
CStartToken* bodyToken=NS_STATIC_CAST(CStartToken*,theAllocator->CreateTokenOfType(eToken_start, eHTMLTag_body, tag));
|
||||
if (bodyToken) {
|
||||
nsCParserNode bodyNode(bodyToken,0,theAllocator);
|
||||
nsCParserNode bodyNode(bodyToken, theAllocator);
|
||||
CAttributeToken *theAttr=nsnull;
|
||||
theAttr=(CAttributeToken*)theAllocator->CreateTokenOfType(eToken_attribute,eHTMLTag_unknown,NS_ConvertASCIItoUCS2(kBodyId));
|
||||
theAttr->SetKey(NS_LITERAL_STRING("id"));
|
||||
@@ -603,7 +603,7 @@ NS_IMETHODIMP CViewSourceHTML::BuildModel(nsIParser* aParser,nsITokenizer* aToke
|
||||
|
||||
if (NS_SUCCEEDED(result)) {
|
||||
CStartToken theToken(eHTMLTag_pre);
|
||||
nsCParserNode theNode(&theToken,0,0/*stack token*/);
|
||||
nsCParserNode theNode(&theToken, 0/*stack token*/);
|
||||
result=mSink->OpenContainer(theNode);
|
||||
}
|
||||
}
|
||||
@@ -664,11 +664,11 @@ nsresult CViewSourceHTML::GenerateSummary() {
|
||||
*/
|
||||
void CViewSourceHTML::StartNewPreBlock(void){
|
||||
CEndToken endToken(eHTMLTag_pre);
|
||||
nsCParserNode endNode(&endToken,0,0/*stack token*/);
|
||||
nsCParserNode endNode(&endToken, 0/*stack token*/);
|
||||
mSink->CloseContainer(endNode);
|
||||
|
||||
CStartToken startToken(eHTMLTag_pre);
|
||||
nsCParserNode startNode(&startToken,0,0/*stack token*/);
|
||||
nsCParserNode startNode(&startToken, 0/*stack token*/);
|
||||
mSink->OpenContainer(startNode);
|
||||
|
||||
#ifdef DUMP_TO_FILE
|
||||
@@ -712,15 +712,15 @@ NS_IMETHODIMP CViewSourceHTML::DidBuildModel(nsresult anErrorCode,PRBool aNotify
|
||||
|
||||
if(ePlainText!=mDocType) {
|
||||
CEndToken theToken(eHTMLTag_pre);
|
||||
nsCParserNode preNode(&theToken,0,0/*stack token*/);
|
||||
nsCParserNode preNode(&theToken, 0/*stack token*/);
|
||||
mSink->CloseContainer(preNode);
|
||||
|
||||
CEndToken bodyToken(eHTMLTag_body);
|
||||
nsCParserNode bodyNode(&bodyToken,0,0/*stack token*/);
|
||||
nsCParserNode bodyNode(&bodyToken, 0/*stack token*/);
|
||||
mSink->CloseBody(bodyNode);
|
||||
|
||||
CEndToken htmlToken(eHTMLTag_html);
|
||||
nsCParserNode htmlNode(&htmlToken,0,0/*stack token*/);
|
||||
nsCParserNode htmlNode(&htmlToken, 0/*stack token*/);
|
||||
mSink->CloseHTML(htmlNode);
|
||||
}
|
||||
result = mSink->DidBuildModel(1);
|
||||
@@ -754,23 +754,16 @@ NS_IMETHODIMP_(void)
|
||||
CViewSourceHTML::Terminate() {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retrieve the preferred tokenizer for use by this DTD.
|
||||
* @update gess12/28/98
|
||||
* @param none
|
||||
* @return ptr to tokenizer
|
||||
*/
|
||||
nsresult CViewSourceHTML::GetTokenizer(nsITokenizer*& aTokenizer) {
|
||||
nsresult result=NS_OK;
|
||||
if(!mTokenizer) {
|
||||
|
||||
result=NS_NewHTMLTokenizer(&mTokenizer,eDTDMode_quirks,mDocType,mParserCommand);
|
||||
}
|
||||
aTokenizer=mTokenizer;
|
||||
return result;
|
||||
NS_IMETHODIMP_(PRInt32)
|
||||
CViewSourceHTML::GetType() {
|
||||
return NS_IPARSER_FLAG_HTML;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
CViewSourceHTML::CollectSkippedContent(PRInt32 aTag, nsAString& aContent, PRInt32 &aLineNo)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -946,7 +939,7 @@ nsresult CViewSourceHTML::WriteTag(PRInt32 aTagType,const nsAString & aText,PRIn
|
||||
nsAutoString beforeText;
|
||||
beforeText.AssignWithConversion(kBeforeText[aTagType]);
|
||||
theContext.mITextToken.SetIndirectString(beforeText);
|
||||
nsCParserNode theNode(&theContext.mITextToken,0,0/*stack token*/);
|
||||
nsCParserNode theNode(&theContext.mITextToken, 0/*stack token*/);
|
||||
mSink->AddLeaf(theNode);
|
||||
}
|
||||
#ifdef DUMP_TO_FILE
|
||||
@@ -957,7 +950,7 @@ nsresult CViewSourceHTML::WriteTag(PRInt32 aTagType,const nsAString & aText,PRIn
|
||||
if (mSyntaxHighlight && aTagType != mText) {
|
||||
CStartToken* theTagToken=NS_STATIC_CAST(CStartToken*,theAllocator->CreateTokenOfType(eToken_start,eHTMLTag_span,NS_LITERAL_STRING("SPAN")));
|
||||
|
||||
theContext.mStartNode.Init(theTagToken,mLineNumber,theAllocator);
|
||||
theContext.mStartNode.Init(theTagToken, theAllocator);
|
||||
CAttributeToken* theAttr=(CAttributeToken*)theAllocator->CreateTokenOfType(eToken_attribute,eHTMLTag_unknown,NS_ConvertASCIItoUCS2(kElementClasses[aTagType]));
|
||||
theAttr->SetKey(NS_LITERAL_STRING("class"));
|
||||
theContext.mStartNode.AddAttribute(theAttr);
|
||||
@@ -975,7 +968,7 @@ nsresult CViewSourceHTML::WriteTag(PRInt32 aTagType,const nsAString & aText,PRIn
|
||||
|
||||
theContext.mITextToken.SetIndirectString(aText); //now emit the tag name...
|
||||
|
||||
nsCParserNode theNode(&theContext.mITextToken,0,0/*stack token*/);
|
||||
nsCParserNode theNode(&theContext.mITextToken, 0/*stack token*/);
|
||||
mSink->AddLeaf(theNode);
|
||||
#ifdef DUMP_TO_FILE
|
||||
if (gDumpFile) {
|
||||
@@ -988,7 +981,7 @@ nsresult CViewSourceHTML::WriteTag(PRInt32 aTagType,const nsAString & aText,PRIn
|
||||
if (mSyntaxHighlight && aTagType != mText) {
|
||||
theContext.mStartNode.ReleaseAll();
|
||||
CEndToken theEndToken(eHTMLTag_span);
|
||||
theContext.mEndNode.Init(&theEndToken,mLineNumber,0/*stack token*/);
|
||||
theContext.mEndNode.Init(&theEndToken, 0/*stack token*/);
|
||||
mSink->CloseContainer(theContext.mEndNode); //emit </starttag>...
|
||||
#ifdef DUMP_TO_FILE
|
||||
if (gDumpFile)
|
||||
@@ -1004,7 +997,7 @@ nsresult CViewSourceHTML::WriteTag(PRInt32 aTagType,const nsAString & aText,PRIn
|
||||
nsAutoString afterText;
|
||||
afterText.AssignWithConversion(kAfterText[aTagType]);
|
||||
theContext.mITextToken.SetIndirectString(afterText);
|
||||
nsCParserNode theNode(&theContext.mITextToken,0,0/*stack token*/);
|
||||
nsCParserNode theNode(&theContext.mITextToken, 0/*stack token*/);
|
||||
mSink->AddLeaf(theNode);
|
||||
}
|
||||
#ifdef DUMP_TO_FILE
|
||||
@@ -1033,7 +1026,7 @@ NS_IMETHODIMP CViewSourceHTML::HandleToken(CToken* aToken,nsIParser* aParser) {
|
||||
mSink=(nsIHTMLContentSink*)aParser->GetContentSink();
|
||||
|
||||
CSharedVSContext& theContext=CSharedVSContext::GetSharedContext();
|
||||
theContext.mTokenNode.Init(theToken,mLineNumber,mTokenizer->GetTokenAllocator());
|
||||
theContext.mTokenNode.Init(theToken, mTokenizer->GetTokenAllocator());
|
||||
|
||||
eHTMLTags theParent=(mTags.Length()) ? (eHTMLTags)mTags.Last() : eHTMLTag_unknown;
|
||||
eHTMLTags theChild=(eHTMLTags)aToken->GetTypeID();
|
||||
@@ -1058,8 +1051,9 @@ NS_IMETHODIMP CViewSourceHTML::HandleToken(CToken* aToken,nsIParser* aParser) {
|
||||
if(theParent==theChild) {
|
||||
mTags.Truncate(mTags.Length()-1);
|
||||
}
|
||||
|
||||
const nsAString& endValue = aToken->GetStringValue();
|
||||
result=WriteTag(mEndTag,endValue,0,PR_TRUE);
|
||||
result=WriteTag(mEndTag,endValue,aToken->GetAttributeCount(),PR_TRUE);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user