mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-11-04 02:09:05 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 | 
						|
/* vim: set ts=2 sw=2 et tw=80: */
 | 
						|
/* 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/. */
 | 
						|
 | 
						|
#include "nsAtom.h"
 | 
						|
#include "CParserContext.h"
 | 
						|
#include "prenv.h"
 | 
						|
#include "nsIHTMLContentSink.h"
 | 
						|
#include "nsMimeTypes.h"
 | 
						|
 | 
						|
CParserContext::CParserContext(nsIURI* aURI, eParserCommands aCommand)
 | 
						|
    : mScanner(aURI),
 | 
						|
      mDTDMode(eDTDMode_autodetect),
 | 
						|
      mDocType(eUnknown),
 | 
						|
      mStreamListenerState(eNone),
 | 
						|
      mContextType(eCTURL),
 | 
						|
      mParserCommand(aCommand),
 | 
						|
      mMultipart(true),
 | 
						|
      mCopyUnused(false) {
 | 
						|
  MOZ_COUNT_CTOR(CParserContext);
 | 
						|
}
 | 
						|
 | 
						|
CParserContext::CParserContext(const nsAString& aBuffer,
 | 
						|
                               eParserCommands aCommand, bool aLastBuffer)
 | 
						|
    : mScanner(aBuffer, !aLastBuffer),
 | 
						|
      mMimeType("application/xml"_ns),
 | 
						|
      mDTDMode(eDTDMode_full_standards),
 | 
						|
      mDocType(eXML),
 | 
						|
      mStreamListenerState(aLastBuffer ? eOnStop : eOnDataAvail),
 | 
						|
      mContextType(eCTString),
 | 
						|
      mParserCommand(aCommand),
 | 
						|
      mMultipart(!aLastBuffer),
 | 
						|
      mCopyUnused(aLastBuffer) {
 | 
						|
  MOZ_COUNT_CTOR(CParserContext);
 | 
						|
}
 | 
						|
 | 
						|
CParserContext::~CParserContext() {
 | 
						|
  // It's ok to simply ingore the PrevContext.
 | 
						|
  MOZ_COUNT_DTOR(CParserContext);
 | 
						|
}
 | 
						|
 | 
						|
void CParserContext::SetMimeType(const nsACString& aMimeType) {
 | 
						|
  mMimeType.Assign(aMimeType);
 | 
						|
 | 
						|
  mDocType = eUnknown;
 | 
						|
 | 
						|
  if (mMimeType.EqualsLiteral(TEXT_HTML))
 | 
						|
    mDocType = eHTML_Strict;
 | 
						|
  else if (mMimeType.EqualsLiteral(TEXT_XML) ||
 | 
						|
           mMimeType.EqualsLiteral(APPLICATION_XML) ||
 | 
						|
           mMimeType.EqualsLiteral(APPLICATION_XHTML_XML) ||
 | 
						|
           mMimeType.EqualsLiteral(IMAGE_SVG_XML) ||
 | 
						|
           mMimeType.EqualsLiteral(APPLICATION_MATHML_XML) ||
 | 
						|
           mMimeType.EqualsLiteral(APPLICATION_RDF_XML) ||
 | 
						|
           mMimeType.EqualsLiteral(APPLICATION_WAPXHTML_XML) ||
 | 
						|
           mMimeType.EqualsLiteral(TEXT_RDF))
 | 
						|
    mDocType = eXML;
 | 
						|
}
 |