LCOV - code coverage report
Current view: directory - parser/html - nsHtml5TokenizerCppSupplement.h (source / functions) Found Hit Coverage
Test: app.info Lines: 260 6 2.3 %
Date: 2012-06-02 Functions: 62 2 3.2 %

       1                 : /* ***** BEGIN LICENSE BLOCK *****
       2                 :  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
       3                 :  *
       4                 :  * The contents of this file are subject to the Mozilla Public License Version
       5                 :  * 1.1 (the "License"); you may not use this file except in compliance with
       6                 :  * the License. You may obtain a copy of the License at
       7                 :  * http://www.mozilla.org/MPL/
       8                 :  *
       9                 :  * Software distributed under the License is distributed on an "AS IS" basis,
      10                 :  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
      11                 :  * for the specific language governing rights and limitations under the
      12                 :  * License.
      13                 :  *
      14                 :  * The Original Code is HTML5 View Source code.
      15                 :  *
      16                 :  * The Initial Developer of the Original Code is
      17                 :  * Mozilla Foundation.
      18                 :  * Portions created by the Initial Developer are Copyright (C) 2011
      19                 :  * the Initial Developer. All Rights Reserved.
      20                 :  *
      21                 :  * Contributor(s):
      22                 :  *   Henri Sivonen <hsivonen@iki.fi>
      23                 :  *
      24                 :  * Alternatively, the contents of this file may be used under the terms of
      25                 :  * either the GNU General Public License Version 2 or later (the "GPL"), or
      26                 :  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
      27                 :  * in which case the provisions of the GPL or the LGPL are applicable instead
      28                 :  * of those above. If you wish to allow use of your version of this file only
      29                 :  * under the terms of either the GPL or the LGPL, and not to allow others to
      30                 :  * use your version of this file under the terms of the MPL, indicate your
      31                 :  * decision by deleting the provisions above and replace them with the notice
      32                 :  * and other provisions required by the GPL or the LGPL. If you do not delete
      33                 :  * the provisions above, a recipient may use your version of this file under
      34                 :  * the terms of any one of the MPL, the GPL or the LGPL.
      35                 :  *
      36                 :  * ***** END LICENSE BLOCK ***** */
      37                 : 
      38                 : void
      39               0 : nsHtml5Tokenizer::StartPlainText()
      40                 : {
      41               0 :   stateSave = NS_HTML5TOKENIZER_PLAINTEXT;
      42               0 : }
      43                 : 
      44                 : void
      45               0 : nsHtml5Tokenizer::EnableViewSource(nsHtml5Highlighter* aHighlighter)
      46                 : {
      47               0 :   mViewSource = aHighlighter;
      48               0 : }
      49                 : 
      50                 : bool
      51               0 : nsHtml5Tokenizer::FlushViewSource()
      52                 : {
      53               0 :   return mViewSource->FlushOps();
      54                 : }
      55                 : 
      56                 : void
      57               0 : nsHtml5Tokenizer::StartViewSource(const nsAutoString& aTitle)
      58                 : {
      59               0 :   mViewSource->Start(aTitle);
      60               0 : }
      61                 : 
      62                 : void
      63               0 : nsHtml5Tokenizer::EndViewSource()
      64                 : {
      65               0 :   mViewSource->End();
      66               0 : }
      67                 : 
      68                 : void
      69               0 : nsHtml5Tokenizer::errWarnLtSlashInRcdata()
      70                 : {
      71               0 : }
      72                 : 
      73                 : // The null checks below annotated NS_LIKELY are not actually necessary.
      74                 : 
      75                 : void
      76               0 : nsHtml5Tokenizer::errUnquotedAttributeValOrNull(PRUnichar c)
      77                 : {
      78               0 :   if (NS_LIKELY(mViewSource)) {
      79               0 :     switch (c) {
      80                 :       case '<':
      81               0 :         mViewSource->AddErrorToCurrentNode("errUnquotedAttributeLt");
      82               0 :         return;
      83                 :       case '`':
      84               0 :         mViewSource->AddErrorToCurrentNode("errUnquotedAttributeGrave");
      85               0 :         return;
      86                 :       case '\'':
      87                 :       case '"':
      88               0 :         mViewSource->AddErrorToCurrentNode("errUnquotedAttributeQuote");
      89               0 :         return;
      90                 :       case '=':
      91               0 :         mViewSource->AddErrorToCurrentNode("errUnquotedAttributeEquals");
      92               0 :         return;
      93                 :     }
      94                 :   }
      95                 : }
      96                 : 
      97                 : void
      98               0 : nsHtml5Tokenizer::errLtOrEqualsOrGraveInUnquotedAttributeOrNull(PRUnichar c)
      99                 : {
     100               0 :   if (NS_LIKELY(mViewSource)) {
     101               0 :     switch (c) {
     102                 :       case '=':
     103               0 :         mViewSource->AddErrorToCurrentNode("errUnquotedAttributeStartEquals");
     104               0 :         return;
     105                 :       case '<':
     106               0 :         mViewSource->AddErrorToCurrentNode("errUnquotedAttributeStartLt");
     107               0 :         return;
     108                 :       case '`':
     109               0 :         mViewSource->AddErrorToCurrentNode("errUnquotedAttributeStartGrave");
     110               0 :         return;
     111                 :     }
     112                 :   }
     113                 : }
     114                 : 
     115                 : void
     116               0 : nsHtml5Tokenizer::errBadCharBeforeAttributeNameOrNull(PRUnichar c)
     117                 : {
     118               0 :   if (NS_LIKELY(mViewSource)) {
     119               0 :     if (c == '<') {
     120               0 :       mViewSource->AddErrorToCurrentNode("errBadCharBeforeAttributeNameLt");
     121               0 :     } else if (c == '=') {
     122               0 :       errEqualsSignBeforeAttributeName();
     123               0 :     } else if (c != 0xFFFD) {
     124               0 :       errQuoteBeforeAttributeName(c);
     125                 :     }
     126                 :   }
     127               0 : }
     128                 : 
     129                 : void
     130               0 : nsHtml5Tokenizer::errBadCharAfterLt(PRUnichar c)
     131                 : {
     132               0 :   if (NS_LIKELY(mViewSource)) {
     133               0 :     mViewSource->AddErrorToCurrentNode("errBadCharAfterLt");
     134                 :   }
     135               0 : }
     136                 : 
     137                 : void
     138               0 : nsHtml5Tokenizer::errQuoteOrLtInAttributeNameOrNull(PRUnichar c)
     139                 : {
     140               0 :   if (NS_LIKELY(mViewSource)) {
     141               0 :     if (c == '<') {
     142               0 :       mViewSource->AddErrorToCurrentNode("errLtInAttributeName");
     143               0 :     } else if (c != 0xFFFD) {
     144               0 :       mViewSource->AddErrorToCurrentNode("errQuoteInAttributeName");
     145                 :     }
     146                 :   }
     147               0 : }
     148                 : 
     149                 : void
     150              37 : nsHtml5Tokenizer::maybeErrAttributesOnEndTag(nsHtml5HtmlAttributes* attrs)
     151                 : {
     152              37 :   if (mViewSource && attrs->getLength() != 0) {
     153                 :     /*
     154                 :      * When an end tag token is emitted with attributes, that is a parse
     155                 :      * error.
     156                 :      */
     157               0 :     mViewSource->AddErrorToCurrentRun("maybeErrAttributesOnEndTag");
     158                 :   }
     159              37 : }
     160                 : 
     161                 : void
     162             124 : nsHtml5Tokenizer::maybeErrSlashInEndTag(bool selfClosing)
     163                 : {
     164             124 :   if (mViewSource && selfClosing && endTag) {
     165               0 :     mViewSource->AddErrorToCurrentSlash("maybeErrSlashInEndTag");
     166                 :   }
     167             124 : }
     168                 : 
     169                 : PRUnichar
     170               0 : nsHtml5Tokenizer::errNcrNonCharacter(PRUnichar ch)
     171                 : {
     172               0 :   if (NS_UNLIKELY(mViewSource)) {
     173               0 :     mViewSource->AddErrorToCurrentNode("errNcrNonCharacter");
     174                 :   }
     175               0 :   return ch;
     176                 : }
     177                 : 
     178                 : void
     179               0 : nsHtml5Tokenizer::errAstralNonCharacter(PRInt32 ch)
     180                 : {
     181               0 :   if (NS_UNLIKELY(mViewSource)) {
     182               0 :     mViewSource->AddErrorToCurrentNode("errNcrNonCharacter");
     183                 :   }
     184               0 : }
     185                 : 
     186                 : PRUnichar
     187               0 : nsHtml5Tokenizer::errNcrControlChar(PRUnichar ch)
     188                 : {
     189               0 :   if (NS_UNLIKELY(mViewSource)) {
     190               0 :     mViewSource->AddErrorToCurrentNode("errNcrControlChar");
     191                 :   }
     192               0 :   return ch;
     193                 : }
     194                 : 
     195                 : void
     196               0 : nsHtml5Tokenizer::errGarbageAfterLtSlash()
     197                 : {
     198               0 :   if (NS_LIKELY(mViewSource)) {
     199               0 :     mViewSource->AddErrorToCurrentNode("errGarbageAfterLtSlash");
     200                 :   }
     201               0 : }
     202                 : 
     203                 : void
     204               0 : nsHtml5Tokenizer::errLtSlashGt()
     205                 : {
     206               0 :   if (NS_LIKELY(mViewSource)) {
     207               0 :     mViewSource->AddErrorToCurrentNode("errLtSlashGt");
     208                 :   }
     209               0 : }
     210                 : 
     211                 : void
     212               0 : nsHtml5Tokenizer::errCharRefLacksSemicolon()
     213                 : {
     214               0 :   if (NS_UNLIKELY(mViewSource)) {
     215               0 :     mViewSource->AddErrorToCurrentNode("errCharRefLacksSemicolon");
     216                 :   }
     217               0 : }
     218                 : 
     219                 : void
     220               0 : nsHtml5Tokenizer::errNoDigitsInNCR()
     221                 : {
     222               0 :   if (NS_UNLIKELY(mViewSource)) {
     223               0 :     mViewSource->AddErrorToCurrentNode("errNoDigitsInNCR");
     224                 :   }
     225               0 : }
     226                 : 
     227                 : void
     228               0 : nsHtml5Tokenizer::errGtInSystemId()
     229                 : {
     230               0 :   if (NS_LIKELY(mViewSource)) {
     231               0 :     mViewSource->AddErrorToCurrentNode("errGtInSystemId");
     232                 :   }
     233               0 : }
     234                 : 
     235                 : void
     236               0 : nsHtml5Tokenizer::errGtInPublicId()
     237                 : {
     238               0 :   if (NS_LIKELY(mViewSource)) {
     239               0 :     mViewSource->AddErrorToCurrentNode("errGtInPublicId");
     240                 :   }
     241               0 : }
     242                 : 
     243                 : void
     244               0 : nsHtml5Tokenizer::errNamelessDoctype()
     245                 : {
     246               0 :   if (NS_LIKELY(mViewSource)) {
     247               0 :     mViewSource->AddErrorToCurrentNode("errNamelessDoctype");
     248                 :   }
     249               0 : }
     250                 : 
     251                 : void
     252               0 : nsHtml5Tokenizer::errConsecutiveHyphens()
     253                 : {
     254               0 :   if (NS_UNLIKELY(mViewSource)) {
     255               0 :     mViewSource->AddErrorToCurrentNode("errConsecutiveHyphens");
     256                 :   }
     257               0 : }
     258                 : 
     259                 : void
     260               0 : nsHtml5Tokenizer::errPrematureEndOfComment()
     261                 : {
     262               0 :   if (NS_LIKELY(mViewSource)) {
     263               0 :     mViewSource->AddErrorToCurrentNode("errPrematureEndOfComment");
     264                 :   }
     265               0 : }
     266                 : 
     267                 : void
     268               0 : nsHtml5Tokenizer::errBogusComment()
     269                 : {
     270               0 :   if (NS_UNLIKELY(mViewSource)) {
     271               0 :     mViewSource->AddErrorToCurrentNode("errBogusComment");
     272                 :   }
     273               0 : }
     274                 : 
     275                 : void
     276               0 : nsHtml5Tokenizer::errSlashNotFollowedByGt()
     277                 : {
     278               0 :   if (NS_LIKELY(mViewSource)) {
     279               0 :     mViewSource->AddErrorToCurrentSlash("errSlashNotFollowedByGt");
     280                 :   }
     281               0 : }
     282                 : 
     283                 : void
     284               0 : nsHtml5Tokenizer::errNoSpaceBetweenAttributes()
     285                 : {
     286               0 :   if (NS_LIKELY(mViewSource)) {
     287               0 :     mViewSource->AddErrorToCurrentNode("errNoSpaceBetweenAttributes");
     288                 :   }
     289               0 : }
     290                 : 
     291                 : void
     292               0 : nsHtml5Tokenizer::errAttributeValueMissing()
     293                 : {
     294               0 :   if (NS_LIKELY(mViewSource)) {
     295               0 :     mViewSource->AddErrorToCurrentNode("errAttributeValueMissing");
     296                 :   }
     297               0 : }
     298                 : 
     299                 : void
     300               0 : nsHtml5Tokenizer::errEqualsSignBeforeAttributeName()
     301                 : {
     302               0 :   if (NS_LIKELY(mViewSource)) {
     303               0 :     mViewSource->AddErrorToCurrentNode("errEqualsSignBeforeAttributeName");
     304                 :   }
     305               0 : }
     306                 : 
     307                 : void
     308               0 : nsHtml5Tokenizer::errLtGt()
     309                 : {
     310               0 :   if (NS_LIKELY(mViewSource)) {
     311               0 :     mViewSource->AddErrorToCurrentNode("errLtGt");
     312                 :   }
     313               0 : }
     314                 : 
     315                 : void
     316               0 : nsHtml5Tokenizer::errProcessingInstruction()
     317                 : {
     318               0 :   if (NS_LIKELY(mViewSource)) {
     319               0 :     mViewSource->AddErrorToCurrentNode("errProcessingInstruction");
     320                 :   }
     321               0 : }
     322                 : 
     323                 : void
     324               0 : nsHtml5Tokenizer::errUnescapedAmpersandInterpretedAsCharacterReference()
     325                 : {
     326               0 :   if (NS_UNLIKELY(mViewSource)) {
     327               0 :     mViewSource->AddErrorToCurrentAmpersand("errUnescapedAmpersandInterpretedAsCharacterReference");
     328                 :   }
     329               0 : }
     330                 : 
     331                 : void
     332               0 : nsHtml5Tokenizer::errNotSemicolonTerminated()
     333                 : {
     334               0 :   if (NS_UNLIKELY(mViewSource)) {
     335               0 :     mViewSource->AddErrorToCurrentNode("errNotSemicolonTerminated");
     336                 :   }
     337               0 : }
     338                 : 
     339                 : void
     340               0 : nsHtml5Tokenizer::errNoNamedCharacterMatch()
     341                 : {
     342               0 :   if (NS_UNLIKELY(mViewSource)) {
     343               0 :     mViewSource->AddErrorToCurrentAmpersand("errNoNamedCharacterMatch");
     344                 :   }
     345               0 : }
     346                 : 
     347                 : void
     348               0 : nsHtml5Tokenizer::errQuoteBeforeAttributeName(PRUnichar c)
     349                 : {
     350               0 :   if (NS_LIKELY(mViewSource)) {
     351               0 :     mViewSource->AddErrorToCurrentNode("errQuoteBeforeAttributeName");
     352                 :   }
     353               0 : }
     354                 : 
     355                 : void
     356               0 : nsHtml5Tokenizer::errExpectedPublicId()
     357                 : {
     358               0 :   if (NS_LIKELY(mViewSource)) {
     359               0 :     mViewSource->AddErrorToCurrentNode("errExpectedPublicId");
     360                 :   }
     361               0 : }
     362                 : 
     363                 : void
     364               0 : nsHtml5Tokenizer::errBogusDoctype()
     365                 : {
     366               0 :   if (NS_UNLIKELY(mViewSource)) {
     367               0 :     mViewSource->AddErrorToCurrentNode("errBogusDoctype");
     368                 :   }
     369               0 : }
     370                 : 
     371                 : void
     372               0 : nsHtml5Tokenizer::errNcrSurrogate()
     373                 : {
     374               0 :   if (NS_UNLIKELY(mViewSource)) {
     375               0 :     mViewSource->AddErrorToCurrentNode("errNcrSurrogate");
     376                 :   }
     377               0 : }
     378                 : 
     379                 : void
     380               0 : nsHtml5Tokenizer::errNcrCr()
     381                 : {
     382               0 :   if (NS_UNLIKELY(mViewSource)) {
     383               0 :     mViewSource->AddErrorToCurrentNode("errNcrCr");
     384                 :   }
     385               0 : }
     386                 : 
     387                 : void
     388               0 : nsHtml5Tokenizer::errNcrInC1Range()
     389                 : {
     390               0 :   if (NS_UNLIKELY(mViewSource)) {
     391               0 :     mViewSource->AddErrorToCurrentNode("errNcrInC1Range");
     392                 :   }
     393               0 : }
     394                 : 
     395                 : void
     396               0 : nsHtml5Tokenizer::errEofInPublicId()
     397                 : {
     398               0 :   if (NS_UNLIKELY(mViewSource)) {
     399               0 :     mViewSource->AddErrorToCurrentRun("errEofInPublicId");
     400                 :   }
     401               0 : }
     402                 : 
     403                 : void
     404               0 : nsHtml5Tokenizer::errEofInComment()
     405                 : {
     406               0 :   if (NS_UNLIKELY(mViewSource)) {
     407               0 :     mViewSource->AddErrorToCurrentRun("errEofInComment");
     408                 :   }
     409               0 : }
     410                 : 
     411                 : void
     412               0 : nsHtml5Tokenizer::errEofInDoctype()
     413                 : {
     414               0 :   if (NS_UNLIKELY(mViewSource)) {
     415               0 :     mViewSource->AddErrorToCurrentRun("errEofInDoctype");
     416                 :   }
     417               0 : }
     418                 : 
     419                 : void
     420               0 : nsHtml5Tokenizer::errEofInAttributeValue()
     421                 : {
     422               0 :   if (NS_UNLIKELY(mViewSource)) {
     423               0 :     mViewSource->AddErrorToCurrentRun("errEofInAttributeValue");
     424                 :   }
     425               0 : }
     426                 : 
     427                 : void
     428               0 : nsHtml5Tokenizer::errEofInAttributeName()
     429                 : {
     430               0 :   if (NS_UNLIKELY(mViewSource)) {
     431               0 :     mViewSource->AddErrorToCurrentRun("errEofInAttributeName");
     432                 :   }
     433               0 : }
     434                 : 
     435                 : void
     436               0 : nsHtml5Tokenizer::errEofWithoutGt()
     437                 : {
     438               0 :   if (NS_UNLIKELY(mViewSource)) {
     439               0 :     mViewSource->AddErrorToCurrentRun("errEofWithoutGt");
     440                 :   }
     441               0 : }
     442                 : 
     443                 : void
     444               0 : nsHtml5Tokenizer::errEofInTagName()
     445                 : {
     446               0 :   if (NS_UNLIKELY(mViewSource)) {
     447               0 :     mViewSource->AddErrorToCurrentRun("errEofInTagName");
     448                 :   }
     449               0 : }
     450                 : 
     451                 : void
     452               0 : nsHtml5Tokenizer::errEofInEndTag()
     453                 : {
     454               0 :   if (NS_UNLIKELY(mViewSource)) {
     455               0 :     mViewSource->AddErrorToCurrentRun("errEofInEndTag");
     456                 :   }
     457               0 : }
     458                 : 
     459                 : void
     460               0 : nsHtml5Tokenizer::errEofAfterLt()
     461                 : {
     462               0 :   if (NS_UNLIKELY(mViewSource)) {
     463               0 :     mViewSource->AddErrorToCurrentRun("errEofAfterLt");
     464                 :   }
     465               0 : }
     466                 : 
     467                 : void
     468               0 : nsHtml5Tokenizer::errNcrOutOfRange()
     469                 : {
     470               0 :   if (NS_UNLIKELY(mViewSource)) {
     471               0 :     mViewSource->AddErrorToCurrentNode("errNcrOutOfRange");
     472                 :   }
     473               0 : }
     474                 : 
     475                 : void
     476               0 : nsHtml5Tokenizer::errNcrUnassigned()
     477                 : {
     478               0 :   if (NS_UNLIKELY(mViewSource)) {
     479               0 :     mViewSource->AddErrorToCurrentNode("errNcrUnassigned");
     480                 :   }
     481               0 : }
     482                 : 
     483                 : void
     484               0 : nsHtml5Tokenizer::errDuplicateAttribute()
     485                 : {
     486               0 :   if (NS_UNLIKELY(mViewSource)) {
     487               0 :     mViewSource->AddErrorToCurrentNode("errDuplicateAttribute");
     488                 :   }
     489               0 : }
     490                 : 
     491                 : void
     492               0 : nsHtml5Tokenizer::errEofInSystemId()
     493                 : {
     494               0 :   if (NS_UNLIKELY(mViewSource)) {
     495               0 :     mViewSource->AddErrorToCurrentRun("errEofInSystemId");
     496                 :   }
     497               0 : }
     498                 : 
     499                 : void
     500               0 : nsHtml5Tokenizer::errExpectedSystemId()
     501                 : {
     502               0 :   if (NS_LIKELY(mViewSource)) {
     503               0 :     mViewSource->AddErrorToCurrentNode("errExpectedSystemId");
     504                 :   }
     505               0 : }
     506                 : 
     507                 : void
     508               0 : nsHtml5Tokenizer::errMissingSpaceBeforeDoctypeName()
     509                 : {
     510               0 :   if (NS_LIKELY(mViewSource)) {
     511               0 :     mViewSource->AddErrorToCurrentNode("errMissingSpaceBeforeDoctypeName");
     512                 :   }
     513               0 : }
     514                 : 
     515                 : void
     516               0 : nsHtml5Tokenizer::errHyphenHyphenBang()
     517                 : {
     518               0 :   if (NS_LIKELY(mViewSource)) {
     519               0 :     mViewSource->AddErrorToCurrentNode("errHyphenHyphenBang");
     520                 :   }
     521               0 : }
     522                 : 
     523                 : void
     524               0 : nsHtml5Tokenizer::errNcrControlChar()
     525                 : {
     526               0 :   if (NS_UNLIKELY(mViewSource)) {
     527               0 :     mViewSource->AddErrorToCurrentNode("errNcrControlChar");
     528                 :   }
     529               0 : }
     530                 : 
     531                 : void
     532               0 : nsHtml5Tokenizer::errNcrZero()
     533                 : {
     534               0 :   if (NS_UNLIKELY(mViewSource)) {
     535               0 :     mViewSource->AddErrorToCurrentNode("errNcrZero");
     536                 :   }
     537               0 : }
     538                 : 
     539                 : void
     540               0 : nsHtml5Tokenizer::errNoSpaceBetweenDoctypeSystemKeywordAndQuote()
     541                 : {
     542               0 :   if (NS_LIKELY(mViewSource)) {
     543               0 :     mViewSource->AddErrorToCurrentNode("errNoSpaceBetweenDoctypeSystemKeywordAndQuote");
     544                 :   }
     545               0 : }
     546                 : 
     547                 : void
     548               0 : nsHtml5Tokenizer::errNoSpaceBetweenPublicAndSystemIds()
     549                 : {
     550               0 :   if (NS_LIKELY(mViewSource)) {
     551               0 :     mViewSource->AddErrorToCurrentNode("errNoSpaceBetweenPublicAndSystemIds");
     552                 :   }
     553               0 : }
     554                 : 
     555                 : void
     556               0 : nsHtml5Tokenizer::errNoSpaceBetweenDoctypePublicKeywordAndQuote()
     557                 : {
     558               0 :   if (NS_LIKELY(mViewSource)) {
     559               0 :     mViewSource->AddErrorToCurrentNode("errNoSpaceBetweenDoctypePublicKeywordAndQuote");
     560                 :   }
     561               0 : }

Generated by: LCOV version 1.7