forked from mirrors/gecko-dev
		
	--HG-- rename : parser/htmlparser/src/CNavDTD.cpp => parser/htmlparser/CNavDTD.cpp rename : parser/htmlparser/src/CNavDTD.h => parser/htmlparser/CNavDTD.h rename : parser/htmlparser/src/CParserContext.cpp => parser/htmlparser/CParserContext.cpp rename : parser/htmlparser/src/CParserContext.h => parser/htmlparser/CParserContext.h rename : parser/htmlparser/src/nsElementTable.cpp => parser/htmlparser/nsElementTable.cpp rename : parser/htmlparser/src/nsElementTable.h => parser/htmlparser/nsElementTable.h rename : parser/htmlparser/src/nsExpatDriver.cpp => parser/htmlparser/nsExpatDriver.cpp rename : parser/htmlparser/src/nsExpatDriver.h => parser/htmlparser/nsExpatDriver.h rename : parser/htmlparser/src/nsHTMLEntities.cpp => parser/htmlparser/nsHTMLEntities.cpp rename : parser/htmlparser/src/nsHTMLEntities.h => parser/htmlparser/nsHTMLEntities.h rename : parser/htmlparser/src/nsHTMLEntityList.h => parser/htmlparser/nsHTMLEntityList.h rename : parser/htmlparser/public/nsHTMLTagList.h => parser/htmlparser/nsHTMLTagList.h rename : parser/htmlparser/src/nsHTMLTags.cpp => parser/htmlparser/nsHTMLTags.cpp rename : parser/htmlparser/public/nsHTMLTags.h => parser/htmlparser/nsHTMLTags.h rename : parser/htmlparser/src/nsHTMLTokenizer.cpp => parser/htmlparser/nsHTMLTokenizer.cpp rename : parser/htmlparser/src/nsHTMLTokenizer.h => parser/htmlparser/nsHTMLTokenizer.h rename : parser/htmlparser/public/nsIContentSink.h => parser/htmlparser/nsIContentSink.h rename : parser/htmlparser/public/nsIDTD.h => parser/htmlparser/nsIDTD.h rename : parser/htmlparser/public/nsIExpatSink.idl => parser/htmlparser/nsIExpatSink.idl rename : parser/htmlparser/public/nsIExtendedExpatSink.idl => parser/htmlparser/nsIExtendedExpatSink.idl rename : parser/htmlparser/public/nsIFragmentContentSink.h => parser/htmlparser/nsIFragmentContentSink.h rename : parser/htmlparser/public/nsIHTMLContentSink.h => parser/htmlparser/nsIHTMLContentSink.h rename : parser/htmlparser/public/nsIParser.h => parser/htmlparser/nsIParser.h rename : parser/htmlparser/public/nsIParserService.h => parser/htmlparser/nsIParserService.h rename : parser/htmlparser/public/nsITokenizer.h => parser/htmlparser/nsITokenizer.h rename : parser/htmlparser/src/nsParser.cpp => parser/htmlparser/nsParser.cpp rename : parser/htmlparser/src/nsParser.h => parser/htmlparser/nsParser.h rename : parser/htmlparser/public/nsParserBase.h => parser/htmlparser/nsParserBase.h rename : parser/htmlparser/public/nsParserCIID.h => parser/htmlparser/nsParserCIID.h rename : parser/htmlparser/public/nsParserConstants.h => parser/htmlparser/nsParserConstants.h rename : parser/htmlparser/src/nsParserModule.cpp => parser/htmlparser/nsParserModule.cpp rename : parser/htmlparser/src/nsParserMsgUtils.cpp => parser/htmlparser/nsParserMsgUtils.cpp rename : parser/htmlparser/src/nsParserMsgUtils.h => parser/htmlparser/nsParserMsgUtils.h rename : parser/htmlparser/src/nsParserService.cpp => parser/htmlparser/nsParserService.cpp rename : parser/htmlparser/src/nsParserService.h => parser/htmlparser/nsParserService.h rename : parser/htmlparser/src/nsScanner.cpp => parser/htmlparser/nsScanner.cpp rename : parser/htmlparser/src/nsScanner.h => parser/htmlparser/nsScanner.h rename : parser/htmlparser/src/nsScannerString.cpp => parser/htmlparser/nsScannerString.cpp rename : parser/htmlparser/public/nsScannerString.h => parser/htmlparser/nsScannerString.h rename : parser/htmlparser/public/nsToken.h => parser/htmlparser/nsToken.h
		
			
				
	
	
		
			142 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 | 
						|
/* This Source Code Form is subject to the terms of the Mozilla Public
 | 
						|
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 | 
						|
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | 
						|
 | 
						|
#ifndef NS_EXPAT_DRIVER__
 | 
						|
#define NS_EXPAT_DRIVER__
 | 
						|
 | 
						|
#include "expat_config.h"
 | 
						|
#include "expat.h"
 | 
						|
#include "nsCOMPtr.h"
 | 
						|
#include "nsString.h"
 | 
						|
#include "nsIDTD.h"
 | 
						|
#include "nsITokenizer.h"
 | 
						|
#include "nsIInputStream.h"
 | 
						|
#include "nsIParser.h"
 | 
						|
#include "nsCycleCollectionParticipant.h"
 | 
						|
 | 
						|
class nsIExpatSink;
 | 
						|
class nsIExtendedExpatSink;
 | 
						|
struct nsCatalogData;
 | 
						|
 | 
						|
class nsExpatDriver : public nsIDTD,
 | 
						|
                      public nsITokenizer
 | 
						|
{
 | 
						|
  virtual ~nsExpatDriver();
 | 
						|
 | 
						|
public:
 | 
						|
  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
 | 
						|
  NS_DECL_NSIDTD
 | 
						|
  NS_DECL_NSITOKENIZER
 | 
						|
  NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsExpatDriver, nsIDTD)
 | 
						|
 | 
						|
  nsExpatDriver();
 | 
						|
 | 
						|
  int HandleExternalEntityRef(const char16_t *aOpenEntityNames,
 | 
						|
                              const char16_t *aBase,
 | 
						|
                              const char16_t *aSystemId,
 | 
						|
                              const char16_t *aPublicId);
 | 
						|
  nsresult HandleStartElement(const char16_t *aName, const char16_t **aAtts);
 | 
						|
  nsresult HandleEndElement(const char16_t *aName);
 | 
						|
  nsresult HandleCharacterData(const char16_t *aCData, const uint32_t aLength);
 | 
						|
  nsresult HandleComment(const char16_t *aName);
 | 
						|
  nsresult HandleProcessingInstruction(const char16_t *aTarget,
 | 
						|
                                       const char16_t *aData);
 | 
						|
  nsresult HandleXMLDeclaration(const char16_t *aVersion,
 | 
						|
                                const char16_t *aEncoding,
 | 
						|
                                int32_t aStandalone);
 | 
						|
  nsresult HandleDefault(const char16_t *aData, const uint32_t aLength);
 | 
						|
  nsresult HandleStartCdataSection();
 | 
						|
  nsresult HandleEndCdataSection();
 | 
						|
  nsresult HandleStartDoctypeDecl(const char16_t* aDoctypeName,
 | 
						|
                                  const char16_t* aSysid,
 | 
						|
                                  const char16_t* aPubid,
 | 
						|
                                  bool aHasInternalSubset);
 | 
						|
  nsresult HandleEndDoctypeDecl();
 | 
						|
  nsresult HandleStartNamespaceDecl(const char16_t* aPrefix,
 | 
						|
                                    const char16_t* aUri);
 | 
						|
  nsresult HandleEndNamespaceDecl(const char16_t* aPrefix);
 | 
						|
  nsresult HandleNotationDecl(const char16_t* aNotationName,
 | 
						|
                              const char16_t* aBase,
 | 
						|
                              const char16_t* aSysid,
 | 
						|
                              const char16_t* aPubid);
 | 
						|
  nsresult HandleUnparsedEntityDecl(const char16_t* aEntityName,
 | 
						|
                                    const char16_t* aBase,
 | 
						|
                                    const char16_t* aSysid,
 | 
						|
                                    const char16_t* aPubid,
 | 
						|
                                    const char16_t* aNotationName);
 | 
						|
 | 
						|
private:
 | 
						|
  // Load up an external stream to get external entity information
 | 
						|
  nsresult OpenInputStreamFromExternalDTD(const char16_t* aFPIStr,
 | 
						|
                                          const char16_t* aURLStr,
 | 
						|
                                          const char16_t* aBaseURL,
 | 
						|
                                          nsIInputStream** aStream,
 | 
						|
                                          nsAString& aAbsURL);
 | 
						|
 | 
						|
  /**
 | 
						|
   * Pass a buffer to Expat. If Expat is blocked aBuffer should be null and
 | 
						|
   * aLength should be 0. The result of the call will be stored in
 | 
						|
   * mInternalState. Expat will parse as much of the buffer as it can and store
 | 
						|
   * the rest in its internal buffer.
 | 
						|
   *
 | 
						|
   * @param aBuffer the buffer to pass to Expat. May be null.
 | 
						|
   * @param aLength the length of the buffer to pass to Expat (in number of
 | 
						|
   *                char16_t's). Must be 0 if aBuffer is null and > 0 if
 | 
						|
   *                aBuffer is not null.
 | 
						|
   * @param aIsFinal whether there will definitely not be any more new buffers
 | 
						|
   *                 passed in to ParseBuffer
 | 
						|
   * @param aConsumed [out] the number of PRUnichars that Expat consumed. This
 | 
						|
   *                        doesn't include the PRUnichars that Expat stored in
 | 
						|
   *                        its buffer but didn't parse yet.
 | 
						|
   */
 | 
						|
  void ParseBuffer(const char16_t *aBuffer, uint32_t aLength, bool aIsFinal,
 | 
						|
                   uint32_t *aConsumed);
 | 
						|
  nsresult HandleError();
 | 
						|
 | 
						|
  void MaybeStopParser(nsresult aState);
 | 
						|
 | 
						|
  bool BlockedOrInterrupted()
 | 
						|
  {
 | 
						|
    return mInternalState == NS_ERROR_HTMLPARSER_BLOCK ||
 | 
						|
           mInternalState == NS_ERROR_HTMLPARSER_INTERRUPTED;
 | 
						|
  }
 | 
						|
 | 
						|
  XML_Parser       mExpatParser;
 | 
						|
  nsString         mLastLine;
 | 
						|
  nsString         mCDataText;
 | 
						|
  // Various parts of a doctype
 | 
						|
  nsString         mDoctypeName;
 | 
						|
  nsString         mSystemID;
 | 
						|
  nsString         mPublicID;
 | 
						|
  nsString         mInternalSubset;
 | 
						|
  bool             mInCData;
 | 
						|
  bool             mInInternalSubset;
 | 
						|
  bool             mInExternalDTD;
 | 
						|
  bool             mMadeFinalCallToExpat;
 | 
						|
 | 
						|
  // Whether we're sure that we won't be getting more buffers to parse from
 | 
						|
  // Necko
 | 
						|
  bool             mIsFinalChunk;
 | 
						|
 | 
						|
  nsresult         mInternalState;
 | 
						|
 | 
						|
  // The length of the data in Expat's buffer (in number of PRUnichars).
 | 
						|
  uint32_t         mExpatBuffered;
 | 
						|
 | 
						|
  // These sinks all refer the same conceptual object. mOriginalSink is
 | 
						|
  // identical with the nsIContentSink* passed to WillBuildModel, and exists
 | 
						|
  // only to avoid QI-ing back to nsIContentSink*.
 | 
						|
  nsCOMPtr<nsIContentSink> mOriginalSink;
 | 
						|
  nsCOMPtr<nsIExpatSink> mSink;
 | 
						|
  nsCOMPtr<nsIExtendedExpatSink> mExtendedSink;
 | 
						|
 | 
						|
  const nsCatalogData* mCatalogData; // weak
 | 
						|
  nsString         mURISpec;
 | 
						|
 | 
						|
  // Used for error reporting.
 | 
						|
  uint64_t         mInnerWindowID;
 | 
						|
};
 | 
						|
 | 
						|
#endif
 |