LCOV - code coverage report
Current view: top level - parser/htmlparser - CParserContext.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 31 34 91.2 %
Date: 2017-07-14 16:53:18 Functions: 4 4 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
       2             : /* vim: set ts=2 sw=2 et tw=80: */
       3             : /* This Source Code Form is subject to the terms of the Mozilla Public
       4             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       5             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : 
       7             : 
       8             : #include "nsIAtom.h"
       9             : #include "CParserContext.h"
      10             : #include "prenv.h"  
      11             : #include "nsIHTMLContentSink.h"
      12             : #include "nsHTMLTokenizer.h"
      13             : #include "nsMimeTypes.h"
      14             : #include "nsHTMLTokenizer.h"
      15             : 
      16          23 : CParserContext::CParserContext(CParserContext* aPrevContext,
      17             :                                nsScanner* aScanner, 
      18             :                                void *aKey, 
      19             :                                eParserCommands aCommand,
      20             :                                nsIRequestObserver* aListener, 
      21             :                                eAutoDetectResult aStatus, 
      22          23 :                                bool aCopyUnused)
      23             :   : mListener(aListener),
      24             :     mKey(aKey),
      25             :     mPrevContext(aPrevContext),
      26             :     mScanner(aScanner),
      27             :     mDTDMode(eDTDMode_unknown),
      28             :     mStreamListenerState(eNone),
      29             :     mContextType(eCTNone),
      30             :     mAutoDetectStatus(aStatus),
      31             :     mParserCommand(aCommand),
      32             :     mMultipart(true),
      33          23 :     mCopyUnused(aCopyUnused)
      34             : { 
      35          23 :   MOZ_COUNT_CTOR(CParserContext); 
      36          23 : } 
      37             : 
      38          44 : CParserContext::~CParserContext()
      39             : {
      40             :   // It's ok to simply ingore the PrevContext.
      41          22 :   MOZ_COUNT_DTOR(CParserContext);
      42          22 : }
      43             : 
      44             : void
      45          23 : CParserContext::SetMimeType(const nsACString& aMimeType)
      46             : {
      47          23 :   mMimeType.Assign(aMimeType);
      48             : 
      49          23 :   mDocType = ePlainText;
      50             : 
      51          23 :   if (mMimeType.EqualsLiteral(TEXT_HTML))
      52           1 :     mDocType = eHTML_Strict;
      53          65 :   else if (mMimeType.EqualsLiteral(TEXT_XML)              ||
      54          42 :            mMimeType.EqualsLiteral(APPLICATION_XML)       ||
      55          42 :            mMimeType.EqualsLiteral(APPLICATION_XHTML_XML) ||
      56          42 :            mMimeType.EqualsLiteral(TEXT_XUL)              ||
      57          21 :            mMimeType.EqualsLiteral(IMAGE_SVG_XML)         ||
      58           0 :            mMimeType.EqualsLiteral(APPLICATION_MATHML_XML) ||
      59           0 :            mMimeType.EqualsLiteral(APPLICATION_RDF_XML)   ||
      60          22 :            mMimeType.EqualsLiteral(APPLICATION_WAPXHTML_XML) ||
      61           0 :            mMimeType.EqualsLiteral(TEXT_RDF))
      62          22 :     mDocType = eXML;
      63          23 : }
      64             : 
      65             : nsresult
      66         158 : CParserContext::GetTokenizer(nsIDTD* aDTD,
      67             :                              nsIContentSink* aSink,
      68             :                              nsITokenizer*& aTokenizer)
      69             : {
      70         158 :   nsresult result = NS_OK;
      71         158 :   int32_t type = aDTD ? aDTD->GetType() : NS_IPARSER_FLAG_HTML;
      72             : 
      73         158 :   if (!mTokenizer) {
      74          23 :     if (type == NS_IPARSER_FLAG_HTML || mParserCommand == eViewSource) {
      75           1 :       mTokenizer = new nsHTMLTokenizer;
      76             :     }
      77          22 :     else if (type == NS_IPARSER_FLAG_XML) {
      78          22 :       mTokenizer = do_QueryInterface(aDTD, &result);
      79             :     }
      80             :   }
      81             : 
      82         158 :   aTokenizer = mTokenizer;
      83             : 
      84         158 :   return result;
      85             : }

Generated by: LCOV version 1.13