Skip to content

Document WEB_FEATURES.yml files#17

Closed
jugglinmike wants to merge 99 commits intotmpfrom
docs-web-features
Closed

Document WEB_FEATURES.yml files#17
jugglinmike wants to merge 99 commits intotmpfrom
docs-web-features

Conversation

@jugglinmike
Copy link
Copy Markdown
Member

A new "test metadata" page initially seemed like a logical place to group this
information alongside the "metadata" that's already documented for CSS tests,
reftests, and testharness.js tests.

Beyond their use of the term "metadata", though, it's difficult to concisely
explain what the various applications have in common. Many of them describe
critical information for interpreting the tests (e.g. rel="match" in
reftests), so what may technically be metadata in terms of HTML probably
shouldn't be presented on the same level as, e.g. the names of suitable code
reviewers.

@jugglinmike jugglinmike requested a review from ChrisC April 7, 2026 22:55
github-actions Bot and others added 23 commits April 7, 2026 20:10
Co-authored-by: wpt-pr-bot <wpt-pr-bot@users.noreply.github.com>
The beforefilter event is fired on customizable comboboxes and
filterable selects when the browser is about to filter the options, and
can be canceled to allow the site to implement its own filtering
instead.

Context: openui/open-ui#931

Bug: 453705243
Change-Id: Ia1328a4b82226f2440737a07b5ea1c2306949951
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7727021
Reviewed-by: David Baron <dbaron@chromium.org>
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Commit-Queue: Joey Arhar <jarhar@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1611068}
This CL integrates HTMLSubmitButtonBehavior into the form submission
pipeline to allow CEs to act as submit buttons. Submission logic is
updated to find a submit behavior and treat the associated custom
element as the submitter during the event lifecycle.

The implementation enables support for formAction, formMethod,
formEnctype, formNoValidate, and formTarget defined within the behavior.
It also ensures that the behavior's name and value properties are
appended to the form data. `IsEffectivelyDisabled` method is added to
check for the behavior's and element's states and the ancestor
fieldsets. Activation events on the custom element are now delegated to
the behavior to trigger the submission process.

Tests are added to ElementInternals-submit-behavior.tentative.html to
verify behavior.

Explainer:
https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/PlatformProvidedBehaviors/explainer.md
Design doc:
https://docs.google.com/document/d/1LA1hhzxmi4OmZoGtIdnwvL3g7y48YjXTOoUvFtxFugE/edit?usp=sharing

Bug: 486928684
Change-Id: Ifa93f060594e789a45d1b1809023427c4fcabf69
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7727461
Reviewed-by: Dan Clark <daniec@microsoft.com>
Reviewed-by: Mason Freed <masonf@chromium.org>
Commit-Queue: Ana Sollano Kim <ansollan@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1611135}
The previous CL (89f1c5e8fda3) moved the tests out of tentative/ but
missed moving the shared-worker-memory.js resource and updating
the references in the test files. This CL completes the cleanup.

Original CL: https://chromium-review.googlesource.com/c/chromium/src/+/7734182

Bug: 400473072
Change-Id: I5d9fab0a3f0a0135384dd94a99d0064de723b44c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7734485
Reviewed-by: Minoru Chikamune <chikamune@chromium.org>
Commit-Queue: Yoshisato Yanagisawa <yyanagisawa@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1611273}
…then appending a text node should not hang or crash

Signed-off-by: Euclid Ye <yezhizhenjiakang@gmail.com>
Bumps [taskcluster](https://github.com/taskcluster/taskcluster) from 98.0.0 to 99.0.3.
- [Release notes](https://github.com/taskcluster/taskcluster/releases)
- [Changelog](https://github.com/taskcluster/taskcluster/blob/main/CHANGELOG.md)
- [Commits](taskcluster/taskcluster@v98.0.0...v99.0.3)

---
updated-dependencies:
- dependency-name: taskcluster
  dependency-version: 99.0.3
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
This CL adds a simple Web platform test for Content Security Policy
covering the algorithm "Is element nonceable?", cf.
https://w3c.github.io/webappsec-csp/#is-element-nonceable.

Force-WPT-Export: true
Change-Id: Ie245ddb02d79196aaac9c2b151955bf56a15e9e9
Bug: 500099106
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7735128
Commit-Queue: Antonio Sartori <antoniosartori@chromium.org>
Reviewed-by: Mike West <mkwst@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1611380}
Add missing commas after random()'s random sharing options. Tests were
falsely passing before since the initial values for shorthand expansion
longhand properties were same.

Bug: 413385732
Change-Id: I1683e53cbdd6542d7cc39b0552ec204a139ed159
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7736428
Commit-Queue: Munira Tursunova <moonira@google.com>
Reviewed-by: Rune Lillesveen <futhark@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1611402}
Co-authored-by: wpt-pr-bot <wpt-pr-bot@users.noreply.github.com>
Bug: 40940960
Change-Id: Ie735caab77704a645b57f0dd3be4aeafa6021569
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7726843
Reviewed-by: Free Debreuil <freedebreuil@google.com>
Commit-Queue: Kevin Ellis <kevers@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1611434}
…#58554)

* Change PR reviewer to wpt-pr-bot for wasm workflow

* Remove reviewer from PR creation in workflow

Removed the reviewer parameter from the PR creation command.
When border-shape is active, background-clip:border-area
clips backgrounds to the border-shape ring rather than the
rectangular border contour. This uses a DstIn compositing
mask that matches BorderShapePainter::Paint() so the two
stay in sync.

BorderShapePainter::PaintBorderArea() paints the ring as an
opaque mask, sharing the same helper as Paint() to avoid
duplication. Border-shape reference rects are resolved
through BoxBackgroundPaintContext to keep fragment-aware
geometry and fix table-part backgrounds.
BackgroundImageGeometry computes and stores border-shape
state so image-backed fills cover the full visible
border-shape area including miter-join overflow.

Bug: 329302543
Change-Id: I60a087df4fc93b400e0cde3c2fee669fcdf44348
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7707757
Reviewed-by: Fredrik Söderquist <fs@opera.com>
Commit-Queue: Jason Leo <cgqaq@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1611443}
Flips the flag for Immediate Mode with passwords and passkeys.

This also updates the getClientCapabilities WPT because enabling this
feature changes the output in the default configuration.

Fixed: 500653050
Change-Id: I51822e7d64e8f14eb89640ebc44aef7196458ea7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7738102
Auto-Submit: Ken Buchanan <kenrb@chromium.org>
Commit-Queue: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Nina Satragno <nsatragno@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1611659}

They define one property, `features`, which is a list of rules that relate one
web-feature to one or more tests in that directory. Each mapping rule includes
two properties: `name` (whose value is the string identifier of a web-feature)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jugglinmike I wonder if it's worth calling out that this doesn't map to the web-feature name a little bit more explicitly? You pointed out the confusion the other day... Might also highlight the need to possibly update the web_features schema to avoid this confusion.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure. I'm proposing doing this as a footnote because this discrepancy is tricky to describe concisely (e.g. "the property named named [...]"). Hopefully we can obviate this caveat soon!

These changes are gated behind the AppearanceBase flag.

See https://drafts.csswg.org/css-forms-1

Bug: 450139531
Change-Id: I1e962a5493ca2ee13184f98d34fa644424943048
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7650474
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Commit-Queue: Luke <lwarlow@igalia.com>
Cr-Commit-Position: refs/heads/main@{#1611676}
There is no mechanism for matching specific subdirectories (only for matching
*all* subdirectories via `**`). To define mappings for files in a given
subdirectory, write mapping rules in a `WEB_FEATURES.yml` file within that
subdirectory.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might have missed it, but I think it's helpful to explicit mention the use of the* pattern and how it's different from **. (And maybe also highlight that the ** pattern is the only value that can go into the files property without being part of a list.)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The type difference is described above, but I can certainly call out the distinct behavior of *.

stephanieyzhang and others added 3 commits April 8, 2026 13:04
Setting outerHTML on an element whose parent is a DocumentFragment
was incorrectly throwing a NoModificationAllowedError. Per the HTML
spec[0], the outerHTML setter should only throw when the parent is a
Document. When the parent is a DocumentFragment, the spec requires
using a temporary body element as the context for fragment parsing.

Added web tests for DocumentFragment, Document, and no-parent cases.

[0] https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#the-outerhtml-property

Fixed: 40885158
Change-Id: I79169dfbef86fbf4b6dc4d133fe90c13ca938857
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7530588
Reviewed-by: Fernando Fiori <ffiori@microsoft.com>
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Commit-Queue: Stephanie Zhang <stephanie.zhang@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1611702}
AIClassifier is a new feature that allows the browser to classify text.
This new feature is exposed to Blink via a new Mojo interface.

I2P:
https://groups.google.com/a/chromium.org/g/blink-dev/c/5dQNl-gyjgU/m/6YBJJIiDAQAJ

The change includes the following:

Blink Mojom: New AIClassifier interface and associated data structures.
Chrome Implementation: AIClassifier class in chrome/browser/ai that uses
an OnDeviceSession to interact with the classification model. AIManager
Integration: Added CanCreateClassifier and CreateClassifier methods to
AIManager to allow Blink to request and create AIClassifier instances.
Content Implementation: EchoAIClassifier for testing purposes.

Metrics: Added kClassifier to the AISessionType enum.
Renderer: Updated classifier.cc to call the new AIManager methods.
Bug: 483707607
Change-Id: I04676439afb3feed54237a701365b332910a10f6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7688370
Reviewed-by: Nathan Memmott <memmott@chromium.org>
Reviewed-by: Jingyun Liu <jingyun@google.com>
Commit-Queue: Devin Cabillo <devincabillo@google.com>
Cr-Commit-Position: refs/heads/main@{#1611826}
This changes the behavior when selecting a new option in the case that
there are nested selectedcontent elements inside the select. Before, the
disabled selectedcontent would get cloned, but now it won't.

Context: whatwg/html#12263 (comment)

Bug: 458113204
Change-Id: I9afd550f21787b7daefb48c5a76712b5899e5b42
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7737623
Reviewed-by: David Grogan <dgrogan@chromium.org>
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Commit-Queue: Joey Arhar <jarhar@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1611875}
github-actions Bot and others added 28 commits April 13, 2026 11:27
Co-authored-by: wpt-pr-bot <wpt-pr-bot@users.noreply.github.com>
The test was using a 1ms delay between closing one popup and opening
another, which likely caused intermittent failures and timeouts in
headless environments like wpt.fyi. This change increases the delay to
1000ms, matching the 'Wait for a second' comment in the code.

Bug: 400473072
Change-Id: Ic8bf7cd47bd4ae362d9b9a3bd0c5081afc875772
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7742622
Commit-Queue: Minoru Chikamune <chikamune@chromium.org>
Auto-Submit: Yoshisato Yanagisawa <yyanagisawa@chromium.org>
Reviewed-by: Minoru Chikamune <chikamune@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1612597}
This patch changes to set the responsive embedded sizing flag
of the document only when `is_sync_parser_` flag is set, which
is used by the `Accept-CH`/`Delegate-CH` headers.

Bug: 418397278
Change-Id: I766aab06ae07841ed1f0a4d8e02efed1b4eae846
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7743780
Reviewed-by: Ian Kilpatrick <ikilpatrick@chromium.org>
Reviewed-by: Koji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1612619}
CSSWG resolution [1]:
RESOLVED: image-animation applies to <video> poster images

Since the implementation already provide image-animation behavior, add
WPT cases.

[1] w3c/csswg-drafts#13641

Fixed: 498558533
Change-Id: I6b9f07db083fc2b5e094ac7a50c5664ba71a5def
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7738202
Commit-Queue: Seokho Song <seokho@chromium.org>
Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1612622}
When a grid-lanes container with row-axis tracks has an initially
indefinite block size that resolves to a definite value, and
`NeedsAdditionalLayoutPass()` returns `false` (no full re-run needed),
non-default align-content values still need their row geometry
re-finalized with the resolved block size.

This mirrors the same logic in
`GridLayoutAlgorithm::ComputeGridGeometry()`. This is a follow-up CL
for CL:7713389.

Bug: 343257585
Change-Id: I5c6d2da887a656497aab6a5fe6801d6fd147a881
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7737713
Commit-Queue: Yanling Wang <yanlingwang@microsoft.com>
Reviewed-by: Alison Maher <almaher@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1612637}
If the `Unencoded-Digest` header contains an unknown algorithm, we can't
enforce its assertions on the content we download. This enables forward
compatibility with new algorithms, but also opens a hole in signature
checks, insofar as the signature over an unenforceable digest is equally
unenforceable. Here, we follow the spec change in [1] to require
enforcability.

[1]: WICG/signature-based-sri@c6300af

Bug: 498080391
Change-Id: I7422e261831cd1af0da9fb97c603350733cff262
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7734936
Reviewed-by: Antonio Sartori <antoniosartori@chromium.org>
Commit-Queue: Mike West <mkwst@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1612754}
Resolved in [0] and [1] to change random syntax to following:

<random()> = random( <random-cache-key>? , <calc-sum>, <calc-sum>,
                     <calc-sum>? )
<random-cache-key> = auto | <random-name> | fixed <number [0,1]>
<random-name> = <dashed-ident> [ element-scoped || [ property-scoped |
                                 property-index-scoped ]]?

Previous syntax:

<random()> = random( <random-value-sharing>? , <calc-sum>, <calc-sum>,
                     <calc-sum>? )
<random-value-sharing> = [ [ auto | <dashed-ident> ] || element-shared ]
                           | fixed <number [0,1]>

Spec has not been fully updated yet.

[0]  w3c/csswg-drafts#13132 (comment)
[1] w3c/csswg-drafts#13601 (comment)

Bug: 413385732
Change-Id: I30f355ef6241b3d0c8e259bc1044ba2f57ce2b97
Fixed: 498620677, 489743837
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7735052
Commit-Queue: Munira Tursunova <moonira@google.com>
Reviewed-by: Rune Lillesveen <futhark@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1612756}
…ating frame.

This check was originally introduced in crrev.com/c/6763697 to only
allow LNA permission prompts to trigger within a single tab/context.
However, crbug.com/491509051 details a valid scenario where the
initiator of a subframe navigation is not in the frame tree of the
subframe being navigated. Specifically, this happens when:

* top window (origin1) iframes origin2
* iframe of origin2 opens a new window, also to origin2
* new window of origin2 does `opener.location.href = <LNA-url>`

With this fix, this scenario ends up checking the LNA permission on the
initiator, which may pop up the permission prompt on the initiator
window. This was chosen as it is the initiator which is triggering the
LNA navigation.

One quirk here: if instead of the opened window initiating the
navigation, if instead it posted a message to the iframe that triggered
the iframe to navigate itself, then the permission check would be on the
iframe. This might lead to slightly different behaviour depending on
permission policy settings, but is not a permissions bypass as the LNA
permission is still required from an initiator in either case.

Bug: 491509051
Change-Id: Iac1b4ded1459a61a93b9a6fdaf8278db529bf50b
Cq-Do-Not-Cancel-Tryjobs: true
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7681373
Reviewed-by: Camille Lamy <clamy@chromium.org>
Commit-Queue: Hubert Chao <hchao@chromium.org>
Reviewed-by: Chris Thompson <cthomp@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1612807}
Add support for request modifiers for @font-face src and external
SVG resources, as well as corresponding tests.

Bug: 435625756
Change-Id: Ic02b348e95302f8c62bfe230f59a357509ce7789
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7748606
Reviewed-by: Fredrik Söderquist <fs@opera.com>
Commit-Queue: jj <jj@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1612810}
This patch invalidates the scrollbar painting when the used value of
pointer events changed. This is necessary since this can affect
the opaqueness value stored on the compositor (which is updated via
paint).

Without the patch, the value on the compositor can be stale which
allows the user to interact with the scrollbar after the inert is
toggled on.

R=flackr@chromium.org

Bug: 497896149
Change-Id: I9beb7e34b676d0379b6d5609a1c03fe8ac535566
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7738301
Reviewed-by: Robert Flack <flackr@chromium.org>
Commit-Queue: Vladimir Levin <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1612828}
Refactor the test so that each failure is surfaced individually.
Reduce boilerplate to make it easier to test additional cases.

Bug: 499073687
Change-Id: Ibcb7173d764082164ee317853c8a11adbf47685f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7741968
Reviewed-by: Divyansh Mangal <dmangal@microsoft.com>
Commit-Queue: Divyansh Mangal <dmangal@microsoft.com>
Auto-Submit: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/main@{#1612956}
Dialogs only restore focus to the previously focused element on close
when an element inside the dialog is focused. When there is no focusable
element inside of the dialog and the dialog element itself becomes
focused, we should restore focus to the previously focused element when
the dialog is closed.

This change matches the spec, which uses an inclusive descendant check
on the dialog element.

Fixed: 497884156
Change-Id: I48e0e617a82a3ebe784884bd60f7d81e2776b71d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7735579
Commit-Queue: Joey Arhar <jarhar@chromium.org>
Reviewed-by: David Baron <dbaron@chromium.org>
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1613005}
Before this patch, customizable combobox would automatically set the
first option in the datalist to :active-option every time that the
datalist is opened. However, this doesn't match the behavior of any
comboboxes I looked at. With this patch, the user must arrow down after
opening the datalist in order for any option to start matching
:active-option.

This behavior is not applied to filterable select because the "Labels"
picker on github issues always sets the first option as the active one
when the filtering input is focused.

Bug: 453705243
Change-Id: I6680a98c95144043bbea67aa923eedf7d54a9d84
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7728808
Reviewed-by: David Grogan <dgrogan@chromium.org>
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Commit-Queue: Joey Arhar <jarhar@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1613020}
When restoring form control state, the DOM could be modified to add or
remove more listed elements to the form if a select element is being
restored which has a selectedcontent element.

Fixed: 499384399
Change-Id: I18f69c30ae25396c53625f7a3172626b79de3ae3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7732030
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Commit-Queue: Joey Arhar <jarhar@chromium.org>
Reviewed-by: Dominic Farolino <dom@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1613032}
This change adds "onstream" to the list of recognized HTML attributes
and maps it to the "stream" event type.

Also added WPTs to verify that both the onstream IDL property and the
onstream HTML attribute function correctly, along with
addEventListener("stream").

Bug: 498583077

Change-Id: I752da8de0de0d08c625ae89c738c8f3be9b4c39a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7717754
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Commit-Queue: Ravjit Uppal <ravjit@chromium.org>
Auto-Submit: Ravjit Uppal <ravjit@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1613047}
Updates to match recent spec changes

These changes are gated behind the AppearanceBase flag.

See https://drafts.csswg.org/css-forms-1

Bug: 450139531
Change-Id: I09140a81190ec0697adb077229356dcd2aeb57aa
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7747467
Reviewed-by: Joey Arhar <jarhar@chromium.org>
Commit-Queue: Luke <lwarlow@igalia.com>
Cr-Commit-Position: refs/heads/main@{#1613068}
* Add WPTs for navigator_web_install [1] preconditions/bad input
* Migrate existing bad input browsertests to unittests
* Adjust timing of service binding, so bad input is unit testable

[1] explainer -
https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/WebInstall/explainer.md

Low-Coverage-Reason: COVERAGE_UNDERREPORTED covered by web platform tests
Bug: 498644992
Change-Id: Icbc7c97c55db1d8ab00b649126008db8578d0aa0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7722810
Reviewed-by: Lu Huang <luhua@microsoft.com>
Commit-Queue: Lia Hiscock <liahiscock@microsoft.com>
Reviewed-by: Daniel Murphy <dmurph@chromium.org>
Reviewed-by: David Baron <dbaron@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1613146}
According to the [comment], "immutable" means:
(a) it can only be set by a parser-created <meta>
(b) it's set and frozen by the first such <meta> the parser
    sees, and
(c) if the parser closes the <head> without seeing the meta

This patch implements the (c). The (a) and (b) are already
implemented.

Technically speaking, (c) means that "sees `<body>` or tags
that imply `<body>`", because the ["after head" insertion mode]
pushes `<meta>` elements after `<head>` but before `<body>`
into `<head>`. This patch has a test for this case too.

[comment]: w3c/csswg-drafts#1771 (comment)
["after head" insertion mode]: https://html.spec.whatwg.org/multipage/parsing.html#the-after-head-insertion-mode

Bug: 418397278
Change-Id: Ic01b94eb3e502562cdd479435b6d0f77b30bb229
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7747506
Reviewed-by: Kent Tamura <tkent@chromium.org>
Reviewed-by: Koji Ishii <kojii@chromium.org>
Reviewed-by: Ian Kilpatrick <ikilpatrick@chromium.org>
Auto-Submit: Koji Ishii <kojii@chromium.org>
Commit-Queue: Kent Tamura <tkent@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1613459}
In https://crrev.com/c/6802120, to fix a repaint issue, line-clamp
ellipses added as part of line-breaking (with the
`CSSLineClampLineBreakingEllipsis` runtime flag) were associated with
a relevant `LayoutObject`.

This involved filtering the `InlineItem`s before the clamp point with
the `CanUseItemForNeedsPaint` function added to
`logical_line_builder.cc`. Notably, this function did not filter out
open tags, meaning that the ellipsis could be associated with
non-atomic inline box layout objects, which is not something that
could ever happen for the ellipses generated by `LineTruncator`.

As it turns out, having an inline box start immediately before a
block-in-inline causes the line-breaking ellipsis to be associated
with the inline box. If that inline box happens to have an outline,
then `PhysicalBoxFragment::AddOutlineRectsForInlineBox` will try to
find all fragment items associated with the box, including the
ellipsis, leading to wrong assumptions since the ellipsis isn't a
wrong item.

A solution could be to explicitly filter out inline boxes with an
outline, but since `LineTruncator` doesn't associate any ellipses with
any non-atomic inline items, we chose to do the case for line-breaking
ellipses.

As a related note, this fix would also have solved bug 489494018,
which was fixed in https://crrev.com/c/7649894 by allowing associating
ellipses with line break items. Since both changes are separate, and
both bring the behavior closer to `LineTruncator`'s, it makes sense to
not revert that one.

Bug: 40336192, 499496973
Change-Id: Iacb8cb5298e199198aba0545fdcd3cd64c5f4da6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7726309
Reviewed-by: Koji Ishii <kojii@chromium.org>
Commit-Queue: Andreu Botella <abotella@igalia.com>
Cr-Commit-Position: refs/heads/main@{#1613505}
Expanding a 0-D input to a 0-D output causes an access violation in a
certain ORT EP. Work around this by using an identity node instead,
since the operation is a no-op.

Bug: 500394293
Change-Id: Ic5ede18f6760e644bf92a8da250fc71af2e2cdcb
Cq-Include-Trybots: luci.chromium.try:win11-blink-rel, mac14.arm64-blink-rel, mac14-blink-rel, mac15.arm64-blink-rel, linux-blink-rel
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7738338
Reviewed-by: Hu, Ningxin <ningxin.hu@intel.com>
Commit-Queue: Zou, Shiyi <shiyi.zou@intel.com>
Cr-Commit-Position: refs/heads/main@{#1613534}
Wait for Ahem before taking reftest snapshots in css-ruby and
css-writing-modes text-combine-upright tests. This avoids fallback-font
first layout differences and makes snapshots deterministic.

Remove temporary Linux Failure Pass expectations now that these tests
are stable again.

Bug: 495770240,431038526
Change-Id: I29b4d8f38c9c2e58e54b4e8e2377cc0663daff50
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7705114
Reviewed-by: Yoav Weiss (@Shopify) <yoavweiss@chromium.org>
Auto-Submit: Helmut Januschka <helmut@januschka.com>
Commit-Queue: Helmut Januschka <helmut@januschka.com>
Cr-Commit-Position: refs/heads/main@{#1613609}
…sition

Bug: 496807859
Change-Id: Id954d9463407ef4f858005026692398fdd91b296
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7703993
Reviewed-by: Fredrik Söderquist <fs@opera.com>
Reviewed-by: Koji Ishii <kojii@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Auto-Submit: Nishaanth Shriram M S <nishaanthshriramms@gmail.com>
Cr-Commit-Position: refs/heads/main@{#1613611}
See bug for details.

Bug: 502073069
Change-Id: I39b9328f87899b9f302c3d3fe36aaa7d5dc90010
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7749166
Reviewed-by: Noam Rosenthal <nrosenthal@google.com>
Commit-Queue: Yoav Weiss (@Shopify) <yoavweiss@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1613631}
When the kDataUrlWorkerOpaqueOrigin feature is enabled, data: URL
workers use a correct opaque origin for their StorageKey. This
eliminates the mismatch between the Blob URL's opaque origin and the
StorageKey's origin, which means the Blob URL system no longer needs
the ALLOW_OPAQUE_ORIGIN_STORAGE_KEY_MISMATCH workaround.

This CL conditionally passes DEFAULT instead of the workaround to
the Blob URL registry when the feature is enabled. This proves the
workaround is no longer needed and allows it to be removed entirely
once the feature is enabled by default, without modifying the
underlying Blob URL validation logic unconditionally at this stage.

Bug: 40051700
Change-Id: Ie4d2187ad42051aed587da67b01ba7439ba0ba1a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7734490
Auto-Submit: Yoshisato Yanagisawa <yyanagisawa@chromium.org>
Commit-Queue: Andrew Williams <awillia@chromium.org>
Reviewed-by: Andrew Williams <awillia@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1612600}
CSP web platform tests for connect-src inside workers started timing
out after the change
web-platform-tests#58737 which adapted the
expectations for reported blocked-uris for websocket connections.

This change adapts the tests so that they don't timeout but instead
fail with output, so that we don't lose test coverage, until we figure
out what to do wrt https://crbug.com/501115606.

Fixed: 501216031
Bug: 501115606
Change-Id: Iee84d30b92710b7e8a532f7a998cbf27a9e94190
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7748325
Reviewed-by: Mike West <mkwst@chromium.org>
Commit-Queue: Antonio Sartori <antoniosartori@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1612752}
Have ContainerNode::GetLayoutBoxForScrolling() return the delegated box
when it has a ScrollableArea, rather than requiring it to be an actual
scroll container.

Add GetLayoutBoxIfScrollContainer() for internal callers that need
scroll container semantics, and update those call sites accordingly.

Also make PaintLayerScrollableArea min/max scroll offsets return zero
for non-scroll-container boxes so DOM scroll APIs and PLSA scroll
geometry stay in sync.

Add WPT coverage for overflow: clip DOM scrolling behavior.

Change-Id: I710332bc6f7d225b21643cc91f9cbfbc5b9221c0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7737441
Auto-Submit: Free Debreuil <freedebreuil@google.com>
Reviewed-by: Robert Flack <flackr@chromium.org>
Commit-Queue: Robert Flack <flackr@chromium.org>
Commit-Queue: Free Debreuil <freedebreuil@google.com>
Cr-Commit-Position: refs/heads/main@{#1612947}
`Element::IsFocusableStyle` has special code that looks for a canvas
ancestor, and this needs to be updated to cross frame boundaries. This
regressed when https://crrev.com/1597048 changed
`IsCanvasOrInCanvasSubtree` to be true in iframes, but the code in
`Element::IsFocusableStyle` was not updated to find the ancestor
canvas element through iframes.

Fixed: 492245060
Change-Id: Ieb2f294760fb726ffeb56d1382366e08b9dcd8e7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7750651
Auto-Submit: Philip Rogers <pdr@chromium.org>
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Stephen Chenney <schenney@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1613437}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.