diff options
Diffstat (limited to 'parser/htmlparser/CParserContext.cpp')
-rw-r--r-- | parser/htmlparser/CParserContext.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/parser/htmlparser/CParserContext.cpp b/parser/htmlparser/CParserContext.cpp new file mode 100644 index 0000000000..d57c9855cc --- /dev/null +++ b/parser/htmlparser/CParserContext.cpp @@ -0,0 +1,60 @@ +/* -*- 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; +} |