From d40366ff91fe38e57a7be0004afada75962ba296 Mon Sep 17 00:00:00 2001 From: "L. David Baron" Date: Mon, 18 May 2026 11:59:17 -0400 Subject: [PATCH 01/69] [css-navigation-1] Improve descriptor interactions in @route and enhance base-url. This improves the interaction of descriptors inside of the @route rule by defining the normal error handling behavior for property- or descriptor-like things. It also allows the base-url descriptor to work with the pattern descriptor rather than only with the init-descriptors. Finally, it gives the base-url descriptor stylesheet (default) and document values. --- css-navigation-1/Overview.bs | 113 ++++++++++++++++++++++------------- 1 file changed, 70 insertions(+), 43 deletions(-) diff --git a/css-navigation-1/Overview.bs b/css-navigation-1/Overview.bs index 93bf0b5c426..635e33099f8 100644 --- a/css-navigation-1/Overview.bs +++ b/css-navigation-1/Overview.bs @@ -44,26 +44,36 @@ is an at-rule that associates a name with a [=URL pattern=]. This name can be referenced in ''@navigation'' rules and in '':active-navigation()'' pseudo-classes. -The syntax of the ''@route'' rule is: +The syntax of the ''@route'' rule is described by the <> production in:
-@route <> {
-  [ <> | <> ]
-}
+<> = @route <> { <> }
 
-based on the following definitions: +This means that the rule accepts a sequence of descriptors +that have the syntax of declarations. +However, in valid style sheets the only descriptors must match +the <> production below. +Any other descriptors are ignored. -
-<> = ;* <> ;*
+
+<> = <> |
+                     <> |
+                     <>
 <> = pattern : <>
-<> = ;* <> [ ;+ <> ]* ;*
 <> = <> : <>
 <> = protocol | hostname | port | pathname |
-                         search | hash | base-url
+                         search | hash
+<> = base-url : stylesheet | document | <>
 
-This associates an author-defined keyword with a URL pattern, +If two valid descriptors in a single rule have the same name, +the last one is used and the others are ignored. +If a rule has both a valid <> +and a valid <> +then it is ignored. + +This rule associates an author-defined keyword with a URL pattern, so that any URL that matches one of the URL patterns matches the route named by the keyword. @@ -71,8 +81,11 @@ The ''@route'' rule can be defined in one of two ways: : with the pattern descriptor :: in this case the URL pattern represented is - the one represented by the <> function - given as the descriptor's value. + the result of invoking + [=create a URL pattern for url-pattern()=] given + arg as the argument to the ''url-pattern()'' function + and baseURLSpecifier as + the (optional) value of the rule's <>. : with the other descriptors named by <> :: In this case the URL pattern represented is the result of invoking [=URL pattern/create|create a URL pattern=] given @@ -80,16 +93,15 @@ The ''@route'' rule can be defined in one of two ways: constructed from the descriptors and their values. Each dictionary member is given the value of the descriptor with the same name, - except the baseURL member is given the value of - the base-url descriptor. - If a base-url descriptor is not given then one is created from - the [=style resource base URL=] of the rule. + except the baseURL member is given the result of + [=create a URL for a base descriptor=] + given baseURLSpecifier as + the (optional) value of the rule's <>. ISSUE: Should this use <>, <>, or <> for the route names? -ISSUE: Is there value in being able to provide a list of <> -rather than just one? +ISSUE: Should we use base-url or just base as the descriptor name? NOTE: The list of allowed init descriptors does not include username or password since they seem unlikely to be useful. @@ -147,33 +159,16 @@ which can be used to match URLs. <> = url-pattern( <> )
-This function represents a [=URL pattern=] that can be created -using the steps of the create a URL pattern for url-pattern() algorithm: - -1. Let arg be the <> argument to the ''url-pattern()'' function. +This function represents the [=URL pattern=] resulting from +invoking [=create a URL pattern for url-pattern()=] with its string argument. -1. Let baseURL be the [=style resource base URL=] of - the rule or declaration block containing the ''url-pattern()'' function. +The steps of the create a URL pattern for url-pattern() algorithm, +given a string arg and +an optional baseURLSpecifier +which can be ''document'', ''stylesheet'', or a URL, are: -
- Do we want this to be the base URL all the time? - For use of ''url-pattern()'' in ''@navigation'', - it's likely more useful for the base URL - to be the document URL rather than the style sheet URL. - However, it would be very awkward for ''url-pattern()'' - to be inconsistent with ''url()''. - - Should we allow the base URL of ''url-pattern()'' - to be defined by the consumer? - Should we introduce document-url-pattern()? - Should we do something similar to - [[css-images-3#ambiguous-urls]] - (see )? - - Also see other proposed uses of {{URLPattern}} in CSS - in , - for '':local-link''. -
+1. Let baseURL be the result of + [=create a URL for a base descriptor=] given baseURLSpecifier. 1. Return the result of [=URL pattern/create|create a URL pattern=] given arg, baseURL, and an empty [=map=]. @@ -182,6 +177,38 @@ NOTE: This function requires that its argument is quoted. This differs from the ''url()'' function, which allows its argument to be quoted or unquoted. +The create a URL for a base descriptor algorithm, given +an optional baseURLSpecifier +which can be ''document'', ''stylesheet'', or a URL, is: + +
+ +: if baseURLSpecifier is not present or is ''stylesheet'' +:: the [=style resource base URL=] of + the rule or declaration block containing the ''url-pattern()'' function. + +: if baseURLSpecifier is ''document'' +:: the [=document base URL=] of the document + +: if baseURLSpecifier is a URL +:: baseURLSpecifier + +
+ +
+Should the default always be ''stylesheet''? +For use of ''url-pattern()'' in ''@navigation'', +it's likely more useful for the base URL +to be the document URL rather than the style sheet URL. +However, it would be very awkward for ''url-pattern()'' +to be inconsistent with ''url()''. + +Also see other proposed uses of {{URLPattern}} in CSS +in , +for '':local-link''. +
+ + To serialize a ''url-pattern()'' function f, [=serialize a function=] f, using [=serialize a string=] on the single argument From 2078e8ffadfae5b6c8f413bc10fa1a4f75704386 Mon Sep 17 00:00:00 2001 From: Chris Lilley Date: Wed, 20 May 2026 17:35:04 -0400 Subject: [PATCH 02/69] [selectors-5][editorial] Back to ED, start post-FPWD changes --- selectors-5/Overview.bs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/selectors-5/Overview.bs b/selectors-5/Overview.bs index 228d15b9916..a684d20385f 100644 --- a/selectors-5/Overview.bs +++ b/selectors-5/Overview.bs @@ -3,9 +3,8 @@ Title: Selectors Level 5 Group: CSSWG Shortname: selectors Level: 5 -Status: FPWD -Date: 2026-02-17 -Prepare for TR: yes +Status: ED +Prepare for TR: no !Delta Spec: yes Work Status: Exploring ED: https://drafts.csswg.org/selectors-5/ @@ -494,6 +493,16 @@ Grammar

Changes

+

+Changes Since the + First Public Working Draft of 17 February 2026

+ +
    +
  • Moved the column combinator to Selectors 5 + PR 13424 +
  • +
+

Changes Since Level 4

From 4a151f350b150117f5b5d75a60a018c6195dadcc Mon Sep 17 00:00:00 2001 From: Chris Lilley Date: Wed, 20 May 2026 17:44:33 -0400 Subject: [PATCH 03/69] [selectors-5][editorial] Update WPT --- selectors-5/Overview.bs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/selectors-5/Overview.bs b/selectors-5/Overview.bs index a684d20385f..76a88160d39 100644 --- a/selectors-5/Overview.bs +++ b/selectors-5/Overview.bs @@ -945,7 +945,6 @@ Acknowledgements has-style-sharing-pseudo-007.html has-style-sharing-pseudo-008.html has-visited.html - invalidation/attribute-or-elemental-selectors-in-has.html invalidation/child-indexed-pseudo-classes-in-has.html invalidation/crashtests/has-pseudoclass-only-crash.html invalidation/defined-in-has.html @@ -1259,7 +1258,6 @@ Acknowledgements @@ -1484,6 +1482,25 @@ Acknowledgements webkit-pseudo-element.html + +

From 33de10f1de526c572619abf7f16eea99d55ac5a5 Mon Sep 17 00:00:00 2001 From: Chris Lilley Date: Wed, 27 May 2026 16:09:26 -0400 Subject: [PATCH 12/69] [selectors-4][editorial] WPT --- selectors-4/Overview.bs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/selectors-4/Overview.bs b/selectors-4/Overview.bs index 16519be8215..6d1d764b2a8 100644 --- a/selectors-4/Overview.bs +++ b/selectors-4/Overview.bs @@ -1679,12 +1679,14 @@ The Relational Pseudo-class: '':has()''

invalidation/defined-in-has.html invalidation/dir-pseudo-class-in-has.html invalidation/empty-pseudo-in-has.html + invalidation/empty-pseudo-in-has-display-none.html invalidation/fullscreen-pseudo-class-in-has.html invalidation/has-append-first-node.html invalidation/has-complexity.html invalidation/has-css-nesting-shared.html invalidation/has-in-adjacent-position.html invalidation/has-in-ancestor-position.html + invalidation/has-in-is-non-subject-compound.html invalidation/has-in-parent-position.html invalidation/has-in-sibling-position.html invalidation/has-invalidation-after-removing-non-first-element.html @@ -2956,6 +2958,7 @@ User Action Pseudo-classes active-toplayer-001.html + active-after-relayouts.html focus-within-toplayer-001.html hover-toplayer-001.html toplayer-transition-001.html @@ -3230,6 +3233,7 @@ Media Playback State: the '':playing'', '':paused'', and '':seeking'' pseudo-cla media/media-playback-state.html media/media-loading-state.sub.html + media/media-playing-paused-style-invalidation.html The :playing pseudo-class represents an element @@ -3416,6 +3420,7 @@ The '':enabled'' and '':disabled'' Pseudo-classes invalidation/enabled-disabled.html + invalidation/option-disabled-when-ancestor-changes.html pseudo-enabled-disabled.html @@ -3725,6 +3730,7 @@ Tree-Structural pseudo-classes selectors-empty-001.xml + invalidation/empty-pseudo-in-has-display-none.html The :empty pseudo-class represents From d4cdbfe4913cbddd8ac603245651c19d0c2ccb3a Mon Sep 17 00:00:00 2001 From: Chris Lilley Date: Wed, 27 May 2026 16:19:02 -0400 Subject: [PATCH 13/69] [selectors-4][editorial] Removed At Risk: the column combinator as it is now in Selectors 5. --- selectors-4/Overview.bs | 1 - 1 file changed, 1 deletion(-) diff --git a/selectors-4/Overview.bs b/selectors-4/Overview.bs index 6d1d764b2a8..1c5b5d28ced 100644 --- a/selectors-4/Overview.bs +++ b/selectors-4/Overview.bs @@ -23,7 +23,6 @@ Former Editor: Peter Linss Former Editor: John Williams Abstract: Selectors are patterns that match against elements in a tree, and as such form one of several technologies that can be used to select nodes in a document. Selectors have been optimized for use with HTML and XML, and are designed to be usable in performance-critical code. They are a core component of CSS (Cascading Style Sheets), which uses Selectors to bind style properties to elements in the document. Abstract: Selectors Level 4 describes the selectors that already exist in [[!SELECT]], and further introduces new selectors for CSS and other languages that may need them. -At Risk: the column combinator At Risk: [=user action pseudo-classes=] applying to non-[=tree-abiding pseudo-elements=] Ignored Terms: function token, Document, DocumentFragment, math, h1, shadow tree, querySelector(), quirks mode, button, a, span, object, p, div, q, area, link, label, input, html, em, li, ol, pre, CSS Value Definition Syntax Ignored Vars: identifier, i From c41c832335f2580d656831d27a2d18394106c470 Mon Sep 17 00:00:00 2001 From: Chris Lilley Date: Wed, 27 May 2026 16:37:07 -0400 Subject: [PATCH 14/69] [selectors-4][editorial] Update changes since Jan 2026 WD --- selectors-4/Overview.bs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/selectors-4/Overview.bs b/selectors-4/Overview.bs index 1c5b5d28ced..5326c40b937 100644 --- a/selectors-4/Overview.bs +++ b/selectors-4/Overview.bs @@ -5153,6 +5153,32 @@ while still preserving as much of the usefulness of '':visited'' as pos

Changes

+

+Changes since the 22 January 2026 Working Draft +

+ + Significant changes since the + 22 January 2026 + Working Draft: + + * Used infra terminology for ascii case insentivity + ( Issue13427) + * Responded to review feedback on BCP 47 language codes + (Issue 13647) + * Added example showing the difference between general case-insensitivity + and strict ASCII case insensitivity + (Issue 13645) + * Defined language range as BCP 47 extended language range + (Issue 13646) + * Changed introductory :lang example from (zh, "*-hant") to (sr, "*-Cyrl") + (Issue 13644) + * Moved the column combinator to Selectors 5 + * Clarified that language codes must be well-formed to match + (Issue 8720) + * Reworded constraints on language ranges + (Issue 8720) + +

Changes since the 11 November 2022 Working Draft

From a346e6dc30f9cbd053515eac2944337921728c2a Mon Sep 17 00:00:00 2001 From: Chris Lilley Date: Wed, 27 May 2026 16:45:40 -0400 Subject: [PATCH 15/69] typo --- selectors-4/Overview.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectors-4/Overview.bs b/selectors-4/Overview.bs index 5326c40b937..b7ebb62786a 100644 --- a/selectors-4/Overview.bs +++ b/selectors-4/Overview.bs @@ -5185,7 +5185,7 @@ Changes since the 11 November 2022 Working Draft Significant changes since the 11 November 2022 Working Draft: * Defined language range as BCP 47 extended language range - (Issue 13646>) + (Issue 13646) * Removed the at-risk status from '':read-write'' and '':has()'' * Added '':popover-open'' pseudo-class. (Issue 8637) From 4f2b1f13312d48dc362e4c37f3ce29cb7183c093 Mon Sep 17 00:00:00 2001 From: Chris Lilley Date: Wed, 27 May 2026 16:47:41 -0400 Subject: [PATCH 16/69] spelling --- selectors-4/Overview.bs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/selectors-4/Overview.bs b/selectors-4/Overview.bs index b7ebb62786a..3c66770acee 100644 --- a/selectors-4/Overview.bs +++ b/selectors-4/Overview.bs @@ -5161,7 +5161,7 @@ Changes since the 22 January 2026 Working Draft 22 January 2026 Working Draft: - * Used infra terminology for ascii case insentivity + * Used infra terminology for ascii case insensitivity ( Issue13427) * Responded to review feedback on BCP 47 language codes (Issue 13647) From bb56a2074f3c36661fe82c15e0afb0453ccef86c Mon Sep 17 00:00:00 2001 From: Koji Ishii Date: Thu, 28 May 2026 17:23:41 +0900 Subject: [PATCH 17/69] [css-sizing-4] Update responsive-iframes-explainer.md (#13961) Replaced `X-Frame-Options` with `Content-Security-Policy` for the [feedback]. Also updated the CSS property to the resolved one. [feedback]: https://groups.google.com/a/chromium.org/g/blink-dev/c/zBx_uoW7jRQ/m/Ilm304IyBQAJ --- css-sizing-4/responsive-iframes-explainer.md | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/css-sizing-4/responsive-iframes-explainer.md b/css-sizing-4/responsive-iframes-explainer.md index a1c0912328f..464487f10cb 100644 --- a/css-sizing-4/responsive-iframes-explainer.md +++ b/css-sizing-4/responsive-iframes-explainer.md @@ -29,9 +29,9 @@ In general, there is a lot of demand for this feature, as evidenced by: ## Solution -The embedding document opts in via the `contain-intrinsic-size: from-element` CSS property on the `