commit | 7700322c0107f030aafeeb4704efc5e2b4a15fca | [log] [tgz] |
---|---|---|
author | Anders Hartvoll Ruud <andruud@chromium.org> | Thu Jan 25 10:23:20 2024 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Thu Jan 25 10:23:20 2024 |
tree | c9115be671da96d1addc3dd90b915194158d26d0 | |
parent | bca23ef1dfccb25ace64d5afd6307645108e1a8f [diff] |
[css-nesting] Add signaling rules to aid use-counting The CSSWG wants to change a few things about how "bare declarations" work. Instead of "shifting up" those declarations to the rule's main declaration block, we want to treat them as wrapped by an &-rule, except with parse-time expansion of selectors instead of the normal behavior for '&' [1][2]. The parse-time expansion part also affects our existing implicit wrappers generated by bare declarations within nested grouping rules (e.g. nested @media). Those wrappers rules may get their specificity lowered. Actually making these changes is easier said than done, since we now have to worry about the compat risk. A naive use-counter added previously [3] shows that ~0.16% of page loads at some point parse bare declarations after a nested rule. This is too high, and we need a more advanced use-counter. Also, it doesn't cover the specificity change for the (existing) implicit wrapper rule. This CL is the first in a chain which (hopefully) gives us the tools needed to use-count for these changes. The "signaling rules" added by this CL, are simply normal style rules which carry a "signal" that is converted to a use-count (or not) later (see CSSSelector::Signal for more detail). This alone is not enough to cover the cases we care about for [1] and [2], so for now this new capability is not used outside of tests. [1] https://github.com/w3c/csswg-drafts/issues/8738 [2] https://github.com/w3c/csswg-drafts/issues/9492 [3] https://chromestatus.com/metrics/feature/timeline/popularity/4709 Bug: 1517290 Change-Id: Iad193ff1da07039b9876fadd413f5c9654be08ff Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5201402 Commit-Queue: Anders Hartvoll Ruud <andruud@chromium.org> Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org> Reviewed-by: Steinar H Gunderson <sesse@chromium.org> Cr-Commit-Position: refs/heads/main@{#1251993}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure.
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.