1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #include "mozilla/Likely.h"
8 nsHtml5Tokenizer::StartPlainText()
10 stateSave
= NS_HTML5TOKENIZER_PLAINTEXT
;
14 nsHtml5Tokenizer::EnableViewSource(nsHtml5Highlighter
* aHighlighter
)
16 mViewSource
= aHighlighter
;
20 nsHtml5Tokenizer::FlushViewSource()
22 return mViewSource
->FlushOps();
26 nsHtml5Tokenizer::StartViewSource(const nsAutoString
& aTitle
)
28 mViewSource
->Start(aTitle
);
32 nsHtml5Tokenizer::EndViewSource()
38 nsHtml5Tokenizer::errWarnLtSlashInRcdata()
42 // The null checks below annotated MOZ_LIKELY are not actually necessary.
45 nsHtml5Tokenizer::errUnquotedAttributeValOrNull(char16_t c
)
47 if (MOZ_LIKELY(mViewSource
)) {
50 mViewSource
->AddErrorToCurrentNode("errUnquotedAttributeLt");
53 mViewSource
->AddErrorToCurrentNode("errUnquotedAttributeGrave");
57 mViewSource
->AddErrorToCurrentNode("errUnquotedAttributeQuote");
60 mViewSource
->AddErrorToCurrentNode("errUnquotedAttributeEquals");
67 nsHtml5Tokenizer::errLtOrEqualsOrGraveInUnquotedAttributeOrNull(char16_t c
)
69 if (MOZ_LIKELY(mViewSource
)) {
72 mViewSource
->AddErrorToCurrentNode("errUnquotedAttributeStartEquals");
75 mViewSource
->AddErrorToCurrentNode("errUnquotedAttributeStartLt");
78 mViewSource
->AddErrorToCurrentNode("errUnquotedAttributeStartGrave");
85 nsHtml5Tokenizer::errBadCharBeforeAttributeNameOrNull(char16_t c
)
87 if (MOZ_LIKELY(mViewSource
)) {
89 mViewSource
->AddErrorToCurrentNode("errBadCharBeforeAttributeNameLt");
90 } else if (c
== '=') {
91 errEqualsSignBeforeAttributeName();
92 } else if (c
!= 0xFFFD) {
93 errQuoteBeforeAttributeName(c
);
99 nsHtml5Tokenizer::errBadCharAfterLt(char16_t c
)
101 if (MOZ_LIKELY(mViewSource
)) {
102 mViewSource
->AddErrorToCurrentNode("errBadCharAfterLt");
107 nsHtml5Tokenizer::errQuoteOrLtInAttributeNameOrNull(char16_t c
)
109 if (MOZ_LIKELY(mViewSource
)) {
111 mViewSource
->AddErrorToCurrentNode("errLtInAttributeName");
112 } else if (c
!= 0xFFFD) {
113 mViewSource
->AddErrorToCurrentNode("errQuoteInAttributeName");
119 nsHtml5Tokenizer::maybeErrAttributesOnEndTag(nsHtml5HtmlAttributes
* attrs
)
121 if (mViewSource
&& attrs
->getLength() != 0) {
123 * When an end tag token is emitted with attributes, that is a parse
126 mViewSource
->AddErrorToCurrentRun("maybeErrAttributesOnEndTag");
131 nsHtml5Tokenizer::maybeErrSlashInEndTag(bool selfClosing
)
133 if (mViewSource
&& selfClosing
&& endTag
) {
134 mViewSource
->AddErrorToCurrentSlash("maybeErrSlashInEndTag");
139 nsHtml5Tokenizer::errNcrNonCharacter(char16_t ch
)
141 if (MOZ_UNLIKELY(mViewSource
)) {
142 mViewSource
->AddErrorToCurrentNode("errNcrNonCharacter");
148 nsHtml5Tokenizer::errAstralNonCharacter(int32_t ch
)
150 if (MOZ_UNLIKELY(mViewSource
)) {
151 mViewSource
->AddErrorToCurrentNode("errNcrNonCharacter");
156 nsHtml5Tokenizer::errNcrControlChar(char16_t ch
)
158 if (MOZ_UNLIKELY(mViewSource
)) {
159 mViewSource
->AddErrorToCurrentNode("errNcrControlChar");
165 nsHtml5Tokenizer::errGarbageAfterLtSlash()
167 if (MOZ_LIKELY(mViewSource
)) {
168 mViewSource
->AddErrorToCurrentNode("errGarbageAfterLtSlash");
173 nsHtml5Tokenizer::errLtSlashGt()
175 if (MOZ_LIKELY(mViewSource
)) {
176 mViewSource
->AddErrorToCurrentNode("errLtSlashGt");
181 nsHtml5Tokenizer::errCharRefLacksSemicolon()
183 if (MOZ_UNLIKELY(mViewSource
)) {
184 mViewSource
->AddErrorToCurrentNode("errCharRefLacksSemicolon");
189 nsHtml5Tokenizer::errNoDigitsInNCR()
191 if (MOZ_UNLIKELY(mViewSource
)) {
192 mViewSource
->AddErrorToCurrentNode("errNoDigitsInNCR");
197 nsHtml5Tokenizer::errGtInSystemId()
199 if (MOZ_LIKELY(mViewSource
)) {
200 mViewSource
->AddErrorToCurrentNode("errGtInSystemId");
205 nsHtml5Tokenizer::errGtInPublicId()
207 if (MOZ_LIKELY(mViewSource
)) {
208 mViewSource
->AddErrorToCurrentNode("errGtInPublicId");
213 nsHtml5Tokenizer::errNamelessDoctype()
215 if (MOZ_LIKELY(mViewSource
)) {
216 mViewSource
->AddErrorToCurrentNode("errNamelessDoctype");
221 nsHtml5Tokenizer::errConsecutiveHyphens()
223 if (MOZ_UNLIKELY(mViewSource
)) {
224 mViewSource
->AddErrorToCurrentNode("errConsecutiveHyphens");
229 nsHtml5Tokenizer::errPrematureEndOfComment()
231 if (MOZ_LIKELY(mViewSource
)) {
232 mViewSource
->AddErrorToCurrentNode("errPrematureEndOfComment");
237 nsHtml5Tokenizer::errBogusComment()
239 if (MOZ_UNLIKELY(mViewSource
)) {
240 mViewSource
->AddErrorToCurrentNode("errBogusComment");
245 nsHtml5Tokenizer::errSlashNotFollowedByGt()
247 if (MOZ_LIKELY(mViewSource
)) {
248 mViewSource
->AddErrorToCurrentSlash("errSlashNotFollowedByGt");
253 nsHtml5Tokenizer::errNoSpaceBetweenAttributes()
255 if (MOZ_LIKELY(mViewSource
)) {
256 mViewSource
->AddErrorToCurrentNode("errNoSpaceBetweenAttributes");
261 nsHtml5Tokenizer::errAttributeValueMissing()
263 if (MOZ_LIKELY(mViewSource
)) {
264 mViewSource
->AddErrorToCurrentNode("errAttributeValueMissing");
269 nsHtml5Tokenizer::errEqualsSignBeforeAttributeName()
271 if (MOZ_LIKELY(mViewSource
)) {
272 mViewSource
->AddErrorToCurrentNode("errEqualsSignBeforeAttributeName");
277 nsHtml5Tokenizer::errLtGt()
279 if (MOZ_LIKELY(mViewSource
)) {
280 mViewSource
->AddErrorToCurrentNode("errLtGt");
285 nsHtml5Tokenizer::errProcessingInstruction()
287 if (MOZ_LIKELY(mViewSource
)) {
288 mViewSource
->AddErrorToCurrentNode("errProcessingInstruction");
293 nsHtml5Tokenizer::errUnescapedAmpersandInterpretedAsCharacterReference()
295 if (MOZ_UNLIKELY(mViewSource
)) {
296 mViewSource
->AddErrorToCurrentAmpersand("errUnescapedAmpersandInterpretedAsCharacterReference");
301 nsHtml5Tokenizer::errNotSemicolonTerminated()
303 if (MOZ_UNLIKELY(mViewSource
)) {
304 mViewSource
->AddErrorToCurrentNode("errNotSemicolonTerminated");
309 nsHtml5Tokenizer::errNoNamedCharacterMatch()
311 if (MOZ_UNLIKELY(mViewSource
)) {
312 mViewSource
->AddErrorToCurrentAmpersand("errNoNamedCharacterMatch");
317 nsHtml5Tokenizer::errQuoteBeforeAttributeName(char16_t c
)
319 if (MOZ_LIKELY(mViewSource
)) {
320 mViewSource
->AddErrorToCurrentNode("errQuoteBeforeAttributeName");
325 nsHtml5Tokenizer::errExpectedPublicId()
327 if (MOZ_LIKELY(mViewSource
)) {
328 mViewSource
->AddErrorToCurrentNode("errExpectedPublicId");
333 nsHtml5Tokenizer::errBogusDoctype()
335 if (MOZ_UNLIKELY(mViewSource
)) {
336 mViewSource
->AddErrorToCurrentNode("errBogusDoctype");
341 nsHtml5Tokenizer::errNcrSurrogate()
343 if (MOZ_UNLIKELY(mViewSource
)) {
344 mViewSource
->AddErrorToCurrentNode("errNcrSurrogate");
349 nsHtml5Tokenizer::errNcrCr()
351 if (MOZ_UNLIKELY(mViewSource
)) {
352 mViewSource
->AddErrorToCurrentNode("errNcrCr");
357 nsHtml5Tokenizer::errNcrInC1Range()
359 if (MOZ_UNLIKELY(mViewSource
)) {
360 mViewSource
->AddErrorToCurrentNode("errNcrInC1Range");
365 nsHtml5Tokenizer::errEofInPublicId()
367 if (MOZ_UNLIKELY(mViewSource
)) {
368 mViewSource
->AddErrorToCurrentRun("errEofInPublicId");
373 nsHtml5Tokenizer::errEofInComment()
375 if (MOZ_UNLIKELY(mViewSource
)) {
376 mViewSource
->AddErrorToCurrentRun("errEofInComment");
381 nsHtml5Tokenizer::errEofInDoctype()
383 if (MOZ_UNLIKELY(mViewSource
)) {
384 mViewSource
->AddErrorToCurrentRun("errEofInDoctype");
389 nsHtml5Tokenizer::errEofInAttributeValue()
391 if (MOZ_UNLIKELY(mViewSource
)) {
392 mViewSource
->AddErrorToCurrentRun("errEofInAttributeValue");
397 nsHtml5Tokenizer::errEofInAttributeName()
399 if (MOZ_UNLIKELY(mViewSource
)) {
400 mViewSource
->AddErrorToCurrentRun("errEofInAttributeName");
405 nsHtml5Tokenizer::errEofWithoutGt()
407 if (MOZ_UNLIKELY(mViewSource
)) {
408 mViewSource
->AddErrorToCurrentRun("errEofWithoutGt");
413 nsHtml5Tokenizer::errEofInTagName()
415 if (MOZ_UNLIKELY(mViewSource
)) {
416 mViewSource
->AddErrorToCurrentRun("errEofInTagName");
421 nsHtml5Tokenizer::errEofInEndTag()
423 if (MOZ_UNLIKELY(mViewSource
)) {
424 mViewSource
->AddErrorToCurrentRun("errEofInEndTag");
429 nsHtml5Tokenizer::errEofAfterLt()
431 if (MOZ_UNLIKELY(mViewSource
)) {
432 mViewSource
->AddErrorToCurrentRun("errEofAfterLt");
437 nsHtml5Tokenizer::errNcrOutOfRange()
439 if (MOZ_UNLIKELY(mViewSource
)) {
440 mViewSource
->AddErrorToCurrentNode("errNcrOutOfRange");
445 nsHtml5Tokenizer::errNcrUnassigned()
447 if (MOZ_UNLIKELY(mViewSource
)) {
448 mViewSource
->AddErrorToCurrentNode("errNcrUnassigned");
453 nsHtml5Tokenizer::errDuplicateAttribute()
455 if (MOZ_UNLIKELY(mViewSource
)) {
456 mViewSource
->AddErrorToCurrentNode("errDuplicateAttribute");
461 nsHtml5Tokenizer::errEofInSystemId()
463 if (MOZ_UNLIKELY(mViewSource
)) {
464 mViewSource
->AddErrorToCurrentRun("errEofInSystemId");
469 nsHtml5Tokenizer::errExpectedSystemId()
471 if (MOZ_LIKELY(mViewSource
)) {
472 mViewSource
->AddErrorToCurrentNode("errExpectedSystemId");
477 nsHtml5Tokenizer::errMissingSpaceBeforeDoctypeName()
479 if (MOZ_LIKELY(mViewSource
)) {
480 mViewSource
->AddErrorToCurrentNode("errMissingSpaceBeforeDoctypeName");
485 nsHtml5Tokenizer::errHyphenHyphenBang()
487 if (MOZ_LIKELY(mViewSource
)) {
488 mViewSource
->AddErrorToCurrentNode("errHyphenHyphenBang");
493 nsHtml5Tokenizer::errNcrControlChar()
495 if (MOZ_UNLIKELY(mViewSource
)) {
496 mViewSource
->AddErrorToCurrentNode("errNcrControlChar");
501 nsHtml5Tokenizer::errNcrZero()
503 if (MOZ_UNLIKELY(mViewSource
)) {
504 mViewSource
->AddErrorToCurrentNode("errNcrZero");
509 nsHtml5Tokenizer::errNoSpaceBetweenDoctypeSystemKeywordAndQuote()
511 if (MOZ_LIKELY(mViewSource
)) {
512 mViewSource
->AddErrorToCurrentNode("errNoSpaceBetweenDoctypeSystemKeywordAndQuote");
517 nsHtml5Tokenizer::errNoSpaceBetweenPublicAndSystemIds()
519 if (MOZ_LIKELY(mViewSource
)) {
520 mViewSource
->AddErrorToCurrentNode("errNoSpaceBetweenPublicAndSystemIds");
525 nsHtml5Tokenizer::errNoSpaceBetweenDoctypePublicKeywordAndQuote()
527 if (MOZ_LIKELY(mViewSource
)) {
528 mViewSource
->AddErrorToCurrentNode("errNoSpaceBetweenDoctypePublicKeywordAndQuote");