From 7c949449afc1ff027a87201c8ffc7fc493d371fd Mon Sep 17 00:00:00 2001 From: "peterv%propagandism.org" Date: Fri, 13 Jan 2006 14:45:32 +0000 Subject: [PATCH] Fix for bug 316582 (Clean up style in parser/htmlparser - CParserContext and small nsParser changes). r=mrbkap, sr=jst. git-svn-id: svn://10.0.0.236/trunk@187543 18797224-902f-48f8-a5cc-f745e15eee43 --- .../parser/htmlparser/src/CParserContext.cpp | 107 ++++-------------- .../parser/htmlparser/src/CParserContext.h | 6 +- mozilla/parser/htmlparser/src/nsParser.cpp | 10 +- 3 files changed, 33 insertions(+), 90 deletions(-) diff --git a/mozilla/parser/htmlparser/src/CParserContext.cpp b/mozilla/parser/htmlparser/src/CParserContext.cpp index 36f152108b6..e716208e1ec 100644 --- a/mozilla/parser/htmlparser/src/CParserContext.cpp +++ b/mozilla/parser/htmlparser/src/CParserContext.cpp @@ -47,14 +47,6 @@ MOZ_DECL_CTOR_COUNTER(CParserContext) -/** - * Your friendly little constructor. Ok, it's not the friendly, but the only guy - * using it is the parser. - * @update gess7/23/98 - * @param aScanner - * @param aKey - * @param aListener - */ CParserContext::CParserContext(nsScanner* aScanner, void *aKey, eParserCommands aCommand, @@ -62,89 +54,38 @@ CParserContext::CParserContext(nsScanner* aScanner, nsIDTD *aDTD, eAutoDetectResult aStatus, PRBool aCopyUnused) + : mDTD(aDTD), + mListener(aListener), + mKey(aKey), + mPrevContext(nsnull), + mScanner(aScanner), + mDTDMode(eDTDMode_unknown), + mStreamListenerState(eNone), + mContextType(eCTNone), + mAutoDetectStatus(aStatus), + mParserCommand(aCommand), + mMultipart(PR_TRUE), + mCopyUnused(aCopyUnused), + mTransferBufferSize(eTransferBufferSize) { MOZ_COUNT_CTOR(CParserContext); - - mScanner=aScanner; - mKey=aKey; - mPrevContext=0; - mListener=aListener; - mDTDMode=eDTDMode_unknown; - mAutoDetectStatus=aStatus; - mTransferBuffer=0; - mDTD=aDTD; - mTokenizer = 0; - mTransferBufferSize=eTransferBufferSize; - mStreamListenerState=eNone; - mMultipart=PR_TRUE; - mContextType=eCTNone; - mCopyUnused=aCopyUnused; - mParserCommand=aCommand; - mRequest=0; } -/** - * Your friendly little constructor. Ok, it's not the friendly, but the only guy - * using it is the parser. - * @update gess7/23/98 - * @param aScanner - * @param aKey - * @param aListener - */ -CParserContext::CParserContext(const CParserContext &aContext) : mMimeType() { - MOZ_COUNT_CTOR(CParserContext); - - mScanner=aContext.mScanner; - mKey=aContext.mKey; - mPrevContext=0; - mListener=aContext.mListener; - - mDTDMode=aContext.mDTDMode; - mAutoDetectStatus=aContext.mAutoDetectStatus; - mTransferBuffer=aContext.mTransferBuffer; - mDTD=aContext.mDTD; - - mTokenizer = aContext.mTokenizer; - - mTransferBufferSize=eTransferBufferSize; - mStreamListenerState=aContext.mStreamListenerState; - mMultipart=aContext.mMultipart; - mContextType=aContext.mContextType; - mRequest=aContext.mRequest; - mParserCommand=aContext.mParserCommand; - SetMimeType(aContext.mMimeType); -} - - -/** - * Destructor for parser context - */ CParserContext::~CParserContext() { + // It's ok to simply ingore the PrevContext. MOZ_COUNT_DTOR(CParserContext); - - if(mScanner) { - delete mScanner; - } - - if(mTransferBuffer) { - delete [] mTransferBuffer; - } - //Remember that it's ok to simply ingore the PrevContext. } - -/** - * Set's the mimetype for this context - * @update rickg 03.18.2000 - */ -void CParserContext::SetMimeType(const nsACString& aMimeType){ +void +CParserContext::SetMimeType(const nsACString& aMimeType) +{ mMimeType.Assign(aMimeType); - mDocType=ePlainText; + mDocType = ePlainText; - if(mMimeType.EqualsLiteral(kHTMLTextContentType)) - mDocType=eHTML_Strict; + if (mMimeType.EqualsLiteral(kHTMLTextContentType)) + mDocType = eHTML_Strict; else if (mMimeType.EqualsLiteral(kXMLTextContentType) || mMimeType.EqualsLiteral(kXMLApplicationContentType) || mMimeType.EqualsLiteral(kXHTMLApplicationContentType) || @@ -154,7 +95,7 @@ void CParserContext::SetMimeType(const nsACString& aMimeType){ #endif mMimeType.EqualsLiteral(kRDFApplicationContentType) || mMimeType.EqualsLiteral(kRDFTextContentType)) - mDocType=eXML; + mDocType = eXML; } nsresult @@ -164,7 +105,7 @@ CParserContext::GetTokenizer(PRInt32 aType, { nsresult result = NS_OK; - if(!mTokenizer) { + if (!mTokenizer) { if (aType == NS_IPARSER_FLAG_HTML || mParserCommand == eViewSource) { nsCOMPtr theSink = do_QueryInterface(aSink); PRUint16 theFlags = 0; @@ -196,12 +137,12 @@ CParserContext::GetTokenizer(PRInt32 aType, mTokenizer->CopyState(mPrevContext->mTokenizer); } } - else if (aType == NS_IPARSER_FLAG_XML) - { + else if (aType == NS_IPARSER_FLAG_XML) { mTokenizer = do_QueryInterface(mDTD, &result); } } aTokenizer = mTokenizer; + return result; } diff --git a/mozilla/parser/htmlparser/src/CParserContext.h b/mozilla/parser/htmlparser/src/CParserContext.h index 41d09736d3a..c766291a34b 100644 --- a/mozilla/parser/htmlparser/src/CParserContext.h +++ b/mozilla/parser/htmlparser/src/CParserContext.h @@ -52,6 +52,7 @@ #include "nsScanner.h" #include "nsString.h" #include "nsCOMPtr.h" +#include "nsAutoPtr.h" /** * Note that the parser is given FULL access to all @@ -73,7 +74,6 @@ public: eAutoDetectResult aStatus=eUnknownDetect, PRBool aCopyUnused=PR_FALSE); - CParserContext( const CParserContext& aContext); ~CParserContext(); nsresult GetTokenizer(PRInt32 aType, @@ -85,11 +85,11 @@ public: // why is mRequest strongly referenced? see bug 102376. nsCOMPtr mDTD; nsCOMPtr mListener; - char* mTransferBuffer; + nsAutoArrayPtr mTransferBuffer; void* mKey; nsCOMPtr mTokenizer; CParserContext* mPrevContext; - nsScanner* mScanner; + nsAutoPtr mScanner; nsCString mMimeType; nsDTDMode mDTDMode; diff --git a/mozilla/parser/htmlparser/src/nsParser.cpp b/mozilla/parser/htmlparser/src/nsParser.cpp index d8e6fb2a75f..19e30f06fb0 100644 --- a/mozilla/parser/htmlparser/src/nsParser.cpp +++ b/mozilla/parser/htmlparser/src/nsParser.cpp @@ -1013,8 +1013,11 @@ FindSuitableDTD(CParserContext& aParserContext, PRBool* aReturn) // Let's start by trying the defaultDTD, if one exists... if (aParserContext.mDTD) { eAutoDetectResult canParse = aParserContext.mDTD->CanParse(aParserContext); - if (canParse != eUnknownDetect && canParse != eInvalidDetect) - return PR_TRUE; + if (canParse != eUnknownDetect && canParse != eInvalidDetect) { + *aReturn = PR_TRUE; + + return NS_OK; + } } CSharedParserObjects* sharedObjects; @@ -2639,8 +2642,7 @@ NS_IMETHODIMP nsParser::GetDTD(nsIDTD** aDTD) { if (mParserContext) { - *aDTD = mParserContext->mDTD; - NS_IF_ADDREF(*aDTD); + NS_IF_ADDREF(*aDTD = mParserContext->mDTD); } return NS_OK;