155 Commits
Author SHA1 Message Date
Henri Sivonen d13776d321 Bug 2038124 - Optimize setting attributes on non-custom HTML elements from parser. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D302276
2026-06-02 09:12:39 +00:00
Alexandru Marc 16e384440d Revert "Bug 2038124 addendum - Simplify the attribute holder in the HTML parser. r=smaug" for causing build bustages @ Element.cpp
This reverts commit 82b2e13b45.

Revert "Bug 2038124 - Optimize setting attributes on non-custom HTML elements from parser. r=smaug"

This reverts commit 2d1ee1cd69.
2026-06-02 07:41:40 +00:00
Henri Sivonen 2d1ee1cd69 Bug 2038124 - Optimize setting attributes on non-custom HTML elements from parser. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D302276
2026-06-02 07:07:26 +00:00
Atila Butkovits d68e85e91d Revert "Bug 2038124 addendum - Simplify the attribute holder in the HTML parser. r=smaug" for causing bustages at Element.cpp.
This reverts commit 9dd3f6b595.

Revert "Bug 2038124 - Optimize setting attributes on non-custom HTML elements from parser. r=smaug"

This reverts commit b1774ce65e.
2026-06-01 21:47:14 +00:00
Henri Sivonen b1774ce65e Bug 2038124 - Optimize setting attributes on non-custom HTML elements from parser. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D302276
2026-06-01 20:50:16 +00:00
Henri Sivonen 44a2cdba0c Bug 1998923 - Make better inline and never-inline decisions around EnsureBufferSpace in the tokenizer. r=farre
Differential Revision: https://phabricator.services.mozilla.com/D271752
2025-11-07 14:19:42 +00:00
Henri Sivonen 86a403a0d1 Bug 1499682 - SIMD-accelerate the data state in the HTML tokenizer. r=smaug,sergesanspaille
Other tokenizer states and the serializer are potential follow-ups.

The code movement from nsHtml5Tokenizer.cpp to nsHtml5Tokeniner.h is
for enabling the eventual non-unified build of nsHtml5TokenizerSIMD.cpp
once the LLVM bug has been fixed.

Differential Revision: https://phabricator.services.mozilla.com/D227317
2025-10-28 18:17:40 +00:00
Alexandru Marc 53b9a6654d Revert "Bug 1499682 - SIMD-accelerate the data state in the HTML tokenizer. r=smaug,sergesanspaille" for causing multiple failures
This reverts commit d6d702dc29.
2025-10-27 17:11:12 +00:00
Henri Sivonen d6d702dc29 Bug 1499682 - SIMD-accelerate the data state in the HTML tokenizer. r=smaug,sergesanspaille
Other tokenizer states and the serializer are potential follow-ups.

The code movement from nsHtml5Tokenizer.cpp to nsHtml5Tokeniner.h is
for enabling the eventual non-unified build of nsHtml5TokenizerSIMD.cpp
once the LLVM bug has been fixed.

Differential Revision: https://phabricator.services.mozilla.com/D227317
2025-10-27 13:48:03 +00:00
Atila Butkovits aec3d65abb Revert "Bug 1499682 - SIMD-accelerate the data state in the HTML tokenizer. r=smaug,sergesanspaille" for causing failures at test_html5_tree_construction.html.
This reverts commit 96fdec23a2.
2025-10-20 12:39:42 +00:00
Henri Sivonen 96fdec23a2 Bug 1499682 - SIMD-accelerate the data state in the HTML tokenizer. r=smaug,sergesanspaille
Other tokenizer states and the serializer are potential follow-ups.

The code movement from nsHtml5Tokenizer.cpp to nsHtml5Tokeniner.h is
for enabling the eventual non-unified build of nsHtml5TokenizerSIMD.cpp
once the LLVM bug has been fixed.

Differential Revision: https://phabricator.services.mozilla.com/D227317
2025-10-20 11:49:39 +00:00
serge-sans-paille 262f78c07f Bug 1922838 - Replace ArrayLength, ArrayEnd and MOZ_ARRAY_LENGTH by standard alternative r=glandium,necko-reviewers,jgilbert,application-update-reviewers,media-playback-reviewers,credential-management-reviewers,anti-tracking-reviewers,places-reviewers,profiler-reviewers,win-reviewers,dom-storage-reviewers,bytesized,janv,dimi,daisuke,karlt,gstoll,canaltinova,timhuang
Namely std::size, std::end and std::size. This drops C support for
MOZ_ARRAY_LENGTH but it wasn't used anyway.

Differential Revision: https://phabricator.services.mozilla.com/D224611
2024-10-28 08:21:19 +00:00
Alexandru Marc a5eb905bf4 Backed out changeset d92f391b3b0c (bug 1922838) for backing out bug 1915351 2024-10-25 16:42:33 +03:00
serge-sans-paille 07101ac24d Bug 1922838 - Replace ArrayLength, ArrayEnd and MOZ_ARRAY_LENGTH by standard alternative r=glandium,necko-reviewers,jgilbert,application-update-reviewers,media-playback-reviewers,credential-management-reviewers,anti-tracking-reviewers,places-reviewers,profiler-reviewers,win-reviewers,dom-storage-reviewers,bytesized,janv,dimi,daisuke,karlt,gstoll,canaltinova,timhuang
Namely std::size, std::end and std::size. This drops C support for
MOZ_ARRAY_LENGTH but it wasn't used anyway.

Differential Revision: https://phabricator.services.mozilla.com/D224611
2024-10-24 09:06:01 +00:00
Alexandru Marc 004e704b22 Backed out changeset 448597bce69d (bug 1922838) for causing build bustages. CLOSED TREE 2024-10-24 11:37:49 +03:00
serge-sans-paille 2c916d4973 Bug 1922838 - Replace ArrayLength, ArrayEnd and MOZ_ARRAY_LENGTH by standard alternative r=glandium,necko-reviewers,jgilbert,application-update-reviewers,media-playback-reviewers,credential-management-reviewers,anti-tracking-reviewers,places-reviewers,profiler-reviewers,win-reviewers,dom-storage-reviewers,bytesized,janv,dimi,daisuke,karlt,gstoll,canaltinova,timhuang
Namely std::size, std::end and std::size. This drops C support for
MOZ_ARRAY_LENGTH but it wasn't used anyway.

Differential Revision: https://phabricator.services.mozilla.com/D224611
2024-10-24 07:38:30 +00:00
Henri Sivonen d47cb52e63 Bug 1807017 - Consider to reuse the memory when nsHtml5Tokenizer::end() is called, r=hsivonen
Differential Revision: https://phabricator.services.mozilla.com/D201982
2024-03-28 00:32:21 +00:00
Cristina Horotan 4d553073d1 Backed out changeset a317563d8729 (bug 1807017) for causing mutiple failures at nsHtml5TreeBuilder.cpp CLOSED TREE 2024-03-28 01:50:18 +02:00
Henri Sivonen 73ac09694c Bug 1807017 - Consider to reuse the memory when nsHtml5Tokenizer::end() is called, r=hsivonen
Differential Revision: https://phabricator.services.mozilla.com/D201982
2024-03-27 21:56:22 +00:00
Markus Stange c76e7da0bd Bug 1861232 - Remove unused interner argument from elementNameByBuffer. r=dom-core,jjaschke,CanadaHonk
Differential Revision: https://phabricator.services.mozilla.com/D191970
2023-10-26 12:17:44 +00:00
Henri Sivonen f6da20b6a0 Bug 1857221 - Avoid tracking the line and column number when parsing innerHTML. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D191270
2023-10-23 09:07:22 +00:00
Henri Sivonen aeec0d45b1 Bug 1859527 - Update the generated includes in the HTML parser. r=edgar
Differential Revision: https://phabricator.services.mozilla.com/D191186
2023-10-18 08:40:49 +00:00
Henri Sivonen 91301501de Bug 1552008 - Track column number in the HTML. r=smaug,nchevobbe
Differential Revision: https://phabricator.services.mozilla.com/D170579
2023-03-16 16:44:17 +00:00
Marian-Vasile Laza a7fdd5e521 Backed out changeset 1b5481ac73dc (bug 1552008) for mochitest failures on test_bug672453.html. CLOSED TREE 2023-03-08 19:25:26 +02:00
Henri Sivonen d88d111193 Bug 1552008 - Track column number in the HTML. r=smaug,nchevobbe
Differential Revision: https://phabricator.services.mozilla.com/D170579
2023-03-08 15:32:52 +00:00
Henri Sivonen 7bc354567b Bug 1747388. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D145571
2022-05-10 07:05:09 +00:00
Henri Sivonen a8ed2707bb Bug 1701828 - meta charset rewrite. r=smaug
Implements https://github.com/whatwg/html/issues/6962 . Improves performance
when <meta charset> occurs in head but after the first kilobyte and aligns
behavior better with WebKit and Blink.

The main change is to avoid reloads when meta appears within head but
after the first kilobyte. Prior to this change, Gecko reloaded in that
case (in compliance with the spec!) even though WebKit and Blink did not.

Differences from WebKit and Blink:

* WebKit and Blink honor <meta charset> in <noscript>. This implementation
  does not.
* WebKit and Blink look for meta as if the tree builder was unaware of
  foreign content. This implementation is foreign content-aware. This
  makes a difference for CDATA sections that contain a > before the meta
  as well as style and script elements within foreign content. This could
  happen if the CDATA section that has mysteriously been introduced around
  a what looks like a meta tag also contains another prior tag-looking
  run of text.
* This implementation processes rel=preload and speculative loads that are
  seen before <meta charset> has been seen. WebKit and Blink instead first
  look for the meta and rewind before starting speculative parsing.
* Unlike WebKit, if there is neither an honored meta nor syntax resembling
  an XML declaration, detection from content takes place (as in Blink).
* Unlike Blink, if there is neither an honored meta nor syntax resembling
  an XML declaration, the detection from content is not dependent of network
  buffer boundaries.
* Unlike Blink, detection from content can trigger a reload at the end of
  the stream if the guess made at that point differs from the first guess.
  (See below for the definition of the input to the first guess.)

Differences from the old spec and Gecko previously:

* Meta inside script and RCDATA elements is no longer honored.
* Late meta is now ignored and no longer triggers a reload.
* Later meta counts as early enough meta: In addition to the previous
  meta within the first 1024 bytes, now a meta that started within the first
  1024 bytes counts as early enough. Additionally, if by then there hasn't
  been a template start tag and head hasn't ended, meta occurring before the
  earlier of the end of the head or a template start tag counts as early
  enough.
* Meta now counts as not-late even if the encoding label has numeric
  character reference escapes.
* Syntax resembling an XML declaration longer than a kilobyte is honored if
  there is no honored meta.
* If there is neither an honored meta nor syntax resembling an XML declaration,
  the initial chardetng scan is potentially longer than before: the first 1024
  bytes, the token spanning the 1024-byte boundary if there is such a token,
  and, if by then head hasn't ended and there hasn't been a template start tag
  until the end of the template start tag or the end of the token that causes
  head to end, ever comes first. However, if the token implying the end of the
  head is a text token, bytes only to the end of the previous non-text token is
  considered. (This definition avoids depending on network buffer boundaries.)
* XML View Source now uses the code for syntax resembling an XML declaration
  instead of expat for extracting the internal encoding label.

Reftest are added as both WPT and Gecko reftests in order to test both http:
and file: URL scenarios. The Gecko tests retain the WPT <link> tags in order
to use the exact same bytes.

An encoding declaration has been added to a number of old tests that didn't
intend to test the new speculation behavior especially in the context of
https://bugzilla.mozilla.org/show_bug.cgi?id=1727750 .

Differential Revision: https://phabricator.services.mozilla.com/D125808
2021-12-08 11:34:20 +00:00
Norisz Fay e844dde8a6 Backed out changeset 3dfd3c94a105 (bug 1701828) for causing mochitest failures on browser_hsts_host.js CLOSED TREE 2021-12-07 12:05:44 +02:00
Henri Sivonen 37fade70f0 Bug 1701828 - meta charset rewrite. r=smaug
Implements https://github.com/whatwg/html/issues/6962 . Improves performance
when <meta charset> occurs in head but after the first kilobyte and aligns
behavior better with WebKit and Blink.

The main change is to avoid reloads when meta appears within head but
after the first kilobyte. Prior to this change, Gecko reloaded in that
case (in compliance with the spec!) even though WebKit and Blink did not.

Differences from WebKit and Blink:

* WebKit and Blink honor <meta charset> in <noscript>. This implementation
  does not.
* WebKit and Blink look for meta as if the tree builder was unaware of
  foreign content. This implementation is foreign content-aware. This
  makes a difference for CDATA sections that contain a > before the meta
  as well as style and script elements within foreign content. This could
  happen if the CDATA section that has mysteriously been introduced around
  a what looks like a meta tag also contains another prior tag-looking
  run of text.
* This implementation processes rel=preload and speculative loads that are
  seen before <meta charset> has been seen. WebKit and Blink instead first
  look for the meta and rewind before starting speculative parsing.
* Unlike WebKit, if there is neither an honored meta nor syntax resembling
  an XML declaration, detection from content takes place (as in Blink).
* Unlike Blink, if there is neither an honored meta nor syntax resembling
  an XML declaration, the detection from content is not dependent of network
  buffer boundaries.
* Unlike Blink, detection from content can trigger a reload at the end of
  the stream if the guess made at that point differs from the first guess.
  (See below for the definition of the input to the first guess.)

Differences from the old spec and Gecko previously:

* Meta inside script and RCDATA elements is no longer honored.
* Late meta is now ignored and no longer triggers a reload.
* Later meta counts as early enough meta: In addition to the previous
  meta within the first 1024 bytes, now a meta that started within the first
  1024 bytes counts as early enough. Additionally, if by then there hasn't
  been a template start tag and head hasn't ended, meta occurring before the
  earlier of the end of the head or a template start tag counts as early
  enough.
* Meta now counts as not-late even if the encoding label has numeric
  character reference escapes.
* Syntax resembling an XML declaration longer than a kilobyte is honored if
  there is no honored meta.
* If there is neither an honored meta nor syntax resembling an XML declaration,
  the initial chardetng scan is potentially longer than before: the first 1024
  bytes, the token spanning the 1024-byte boundary if there is such a token,
  and, if by then head hasn't ended and there hasn't been a template start tag
  until the end of the template start tag or the end of the token that causes
  head to end, ever comes first. However, if the token implying the end of the
  head is a text token, bytes only to the end of the previous non-text token is
  considered. (This definition avoids depending on network buffer boundaries.)
* XML View Source now uses the code for syntax resembling an XML declaration
  instead of expat for extracting the internal encoding label.

Reftest are added as both WPT and Gecko reftests in order to test both http:
and file: URL scenarios. The Gecko tests retain the WPT <link> tags in order
to use the exact same bytes.

An encoding declaration has been added to a number of old tests that didn't
intend to test the new speculation behavior especially in the context of
https://bugzilla.mozilla.org/show_bug.cgi?id=1727750 .

Differential Revision: https://phabricator.services.mozilla.com/D125808
2021-12-07 07:35:32 +00:00
Henri Sivonen 44da2f95ed Bug 1153920 - Conform ampersand error reporting to HTML spec. r=smaug
Created by inlining the `AMBIGUOUS_AMPERSAND` state in
https://github.com/validator/htmlparser/pull/30 back into the states
that transitioned to `AMBIGUOUS_AMPERSAND` in that PR by
Michael(tm) Smith.

Differential Revision: https://phabricator.services.mozilla.com/D81992
2021-09-02 11:13:37 +00:00
Michael[tm] Smith f8016b5f48 Bug 1541822 - Ensure doctype name is set to null when missing r=smaug
This change ensures that the tokenizer sets the doctype name to null
when the doctype name is missing in the input source.

Otherwise, without this change, the doctype name is set to the empty
string — which doesn’t conform to the requirements in the HTML spec, and
which causes us to fail 9 tests in the html5lib-tests suite.

Relates to https://github.com/validator/htmlparser/issues/35

Differential Revision: https://phabricator.services.mozilla.com/D122936
2021-08-19 10:02:57 +00:00
Michael[tm] Smith e82ccf150a Bug 1725946 - Conform tokenizer-only U+0000 NUL handling to spec r=smaug
This change brings the tokenizer’s handling of U+0000 NUL characters in
the DATA state and the CDATA section state into conformance with the
requirements in the HTML spec — for the case where only tokenization is
being performed, without tree construction; that is, the case where the
tokenizer() method is called, rather than parse() or parseFragment().

Specifically, the tokenization steps defined in the spec require that
when a U+0000 NUL is consumed in the DATA state or in the CDATA section
state, the parser must then emit a U+0000 NUL. But when performing tree
construction, the spec requires that when a U+0000 NUL is consumed, the
parser must instead emit a U+FFFD REPLACEMENT CHARACTER.

Without this change, the parser always emits a U+FFFD REPLACEMENT
CHARACTER — even when only tokenization is being performed. That causes
us to fail a number of tests in html5lib-tests suite.

For more background on the relevant behavior, see the following:

* https://www.w3.org/Bugs/Public/show_bug.cgi?id=9659
* https://github.com/whatwg/html/commit/d98f83e
* https://github.com/validator/htmlparser/commit/9b9c263

Relates to https://github.com/validator/htmlparser/issues/35

Differential Revision: https://phabricator.services.mozilla.com/D122721
2021-08-17 10:09:10 +00:00
Michael[tm] Smith 5de2048fa5 Bug 1319410 fixup - Stay in the COMMENT_LESSTHAN state, annotate fall-throughs. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D82163
2021-08-16 05:01:10 +00:00
Michael[tm] Smith f9ed6f998f Bug 1319410 - Make consecutive hyphens in comments a non-error r=smaug
Also allow `<!-->` at (IE conditional) comment end

See https://github.com/whatwg/html/pull/1356
See https://github.com/whatwg/html/pull/1456

Differential Revision: https://phabricator.services.mozilla.com/D82000
2021-08-16 05:01:09 +00:00
Henri Sivonen 61d5df5ae7 Bug 1724920 - Sort headers in the generated parts of the HTML parser. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D122225
2021-08-11 08:08:52 +00:00
Henri Sivonen e8bf7114c7 Bug 786797 - Check for integer overflow when computing new buffer sizes. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D102592
2021-01-21 17:02:58 +00:00
Michael[tm] Smith 31b329245a Bug 1650090 - Stop reporting HTML4-specific parse errors. DONTBUILD NPOTB r=alchen
Differential Revision: https://phabricator.services.mozilla.com/D82021
2020-08-03 11:03:02 +00:00
Henri Sivonen 759bddad47 Bug 1619230 - Use .get() in P::completedNamedCharacterReference(mViewSource). r=erahm
Differential Revision: https://phabricator.services.mozilla.com/D64927
2020-03-02 17:45:31 +00:00
Henri Sivonen abbf967ecd Bug 1618488 - Add .get() to mViewSource in calls to P::transition in the tokenizer. r=erahm
Differential Revision: https://phabricator.services.mozilla.com/D64552
2020-02-27 19:28:46 +00:00
Henri Sivonen 63a38ce016 Bug 1603919 - Use [[fallthrough]] instead of MOZ_FALLTHROUGH in generated HTML parser code. r=cpeterson
Differential Revision: https://phabricator.services.mozilla.com/D57451
2019-12-18 00:00:06 +00:00
Henri Sivonen aefec1e86d Bug 1584216 - Adjust tokenization of U+0000. r=alchen
Differential Revision: https://phabricator.services.mozilla.com/D47594
2019-10-01 12:26:55 +00:00
Henri Sivonen 85b708503b Bug 1562033. r=alchen
Differential Revision: https://phabricator.services.mozilla.com/D36361
2019-07-08 07:33:59 +00:00
Henri Sivonen c9bd88713b Bug 1555523. r=alchen
Differential Revision: https://phabricator.services.mozilla.com/D33639
2019-06-15 12:45:57 +00:00
Henri Sivonen f110425f3c Bug 1540675 - Handle line breaks correctly in comment end bang state. r=alchen.
Differential Revision: https://phabricator.services.mozilla.com/D25594
2019-04-15 13:40:14 +03:00
Sylvestre Ledru 1ad0cac654 Bug 1519636 - clang-format-8: Reformat recent changes to the Google coding style r=Ehsan
clang-format-8 upstream had some improvements wrt macros
See: https://reviews.llvm.org/D33440
This is why the diff is bigger than usual

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D26098
2019-04-05 21:41:42 +00:00
Csoregi Natalia 2ded4ab36d Backed out changeset 4ad80127f89f (bug 1519636) for bustage on MarkupMap.h and nsAccessibilityService.cpp. CLOSED TREE 2019-04-05 09:48:19 +03:00
Sylvestre Ledru ebe9c62d30 Bug 1519636 - clang-format-8: Reformat recent changes to the Google coding style r=Ehsan
clang-format-8 upstream had some improvements wrt macros
See: https://reviews.llvm.org/D33440
This is why the diff is bigger than usual

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D26098
2019-04-04 21:36:16 +00:00
Narcis Beleuzu 6b9ce2a82b Backed out changeset 389b6bbd76db (bug 1519636) for bustages on MarkupMap.h . CLOSED TREE 2019-04-05 00:27:56 +03:00
Sylvestre Ledru 194039a8d9 Bug 1519636 - clang-format-8: Reformat recent changes to the Google coding style r=Ehsan
clang-format-8 upstream had some improvements wrt macros
See: https://reviews.llvm.org/D33440
This is why the diff is bigger than usual

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D26098
2019-04-04 20:12:23 +00:00
Sylvestre Ledru e5a134f73a Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset
2018-11-30 11:46:48 +01:00