Thanks to the UseCounter + UKM + M112 hitting Stable, more results are
starting to come in. I’ll be collecting public examples of potential
incompatibilities here:
https://bugs.chromium.org/p/chromium/issues/detail?id=1412729#c11 So far 0
out of the 2 examples cause any actual breakage — fingers crossed that
trend continues.

On Mon, Apr 3, 2023 at 10:26 AM Philip Jägenstedt <foo...@chromium.org>
wrote:

> I took a look at https://github.com/whatwg/html/pull/7908 and it looks
> like there's agreement to merge it, but it's waiting on this intent to be
> approved. Normally we block in the other direction, but that's fine, as
> long as the spec change is merged.
>
> Looks like there's broad support for this change, and it's just a question
> of the site compat risk. ~0.04% as an upper bound is quite high. Can we
> wait until the use counter is in stable and look at a random set of sites
> hitting the use counter to determine what the real-world breakage looks
> like?
>
> On Fri, Mar 31, 2023 at 5:07 PM 'Mathias Bynens' via blink-dev <
> blink-dev@chromium.org> wrote:
>
>>
>>
>> On Fri, Mar 31, 2023 at 4:35 PM Mike Taylor <miketa...@chromium.org>
>> wrote:
>>
>>> Hey Mathias,
>>> On 3/31/23 5:56 AM, Mathias Bynens wrote:
>>>
>>> Contact emails
>>>
>>> math...@chromium.org
>>>
>>> Specification
>>>
>>> https://github.com/whatwg/html/pull/7908
>>>
>>> Summary
>>>
>>> The <input pattern> attribute allows developers to specify a regular
>>> expression pattern against which the input’s values are checked for
>>> validity.
>>>
>>> <label>
>>>
>>>   Part number:
>>>
>>>   <input pattern="[0-9][A-Z]{3}" name="part"
>>>
>>>          title="A part number is a digit followed by three uppercase
>>> letters.">
>>>
>>> </label>
>>>
>>> When the pattern attribute was first implemented, these regular
>>> expressions were compiled without any RegExp flags. In 2014, the HTML
>>> Standard changed this by implicitly enabling the u flag for the pattern
>>> attribute, enabling better Unicode support (including support for Unicode
>>> character properties like \p{Letter}). This change shipped in Chrome 53.
>>> <https://chromestatus.com/feature/4753420745441280>
>>>
>>> Now, we’re taking this to the next level by enabling the new RegExp v
>>> flag <https://v8.dev/features/regexp-v-flag> instead of u, enabling the
>>> use of set notation, string literal syntax, and Unicode properties of
>>> strings.
>>>
>>> (Context: The RegExp v flag is a JavaScript language feature which
>>> previously went through the Blink Intents process and shipped in Chrome
>>> 112 <https://chromestatus.com/feature/5144156542861312>. This new
>>> ChromeStatus entry is specifically about integrating it with the HTML
>>> pattern attribute.)
>>>
>>> Blink component
>>>
>>> Blink>Forms
>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EForms>
>>>
>>> Search tags
>>>
>>> unicode <https://chromestatus.com/features#tags:unicode>, regexp
>>> <https://chromestatus.com/features#tags:regexp>, pattern
>>> <https://chromestatus.com/features#tags:pattern>, validation
>>> <https://chromestatus.com/features#tags:validation>
>>>
>>> TAG review
>>> TAG review status
>>>
>>> Not applicable
>>>
>>> Risks
>>> Interoperability and Compatibility
>>>
>>> The spec patch at https://github.com/whatwg/html/pull/7908 lists the
>>> potentially breaking changes. Some patterns that previously would compile,
>>> now throw an early error with the v flag — specifically those with a
>>> character class including either an unescaped special character or a double
>>> punctuator.
>>>
>>> We expect such patterns to be rare. To validate this assumption we’ve
>>> added a UseCounter called
>>> HTMLPatternRegExpUnicodeSetIncompatibilitiesWithUnicodeMode
>>> <https://chromestatus.com/metrics/feature/popularity#HTMLPatternRegExpUnicodeSetIncompatibilitiesWithUnicodeMode>
>>> in M112, which tracks patterns in any JavaScript u RegExps generated
>>> via the HTML pattern attribute that would throw if they were used with
>>> the v flag.
>>>
>>> Importantly, note that any throwing pattern gracefully degrades — it
>>> simply behaves as if the pattern attribute wasn’t present, resulting in 
>>> inputElement.validity.valid
>>> === true for any input value. Consequently, the only compatibility risk
>>> is that some value/pattern combinations that would previously result in
>>> inputElement.validity.valid being false now result in it being true. Thus,
>>> for every UseCounter hit, it could still be that there is no actual
>>> breakage — the UseCounter just gives us the upper bound. The currently
>>> available data from Beta suggests the UseCounter hits for 0.0393% of
>>> Chrome page loads.
>>>
>>> I'm somewhat curious to see how much that UseCounter will grow (if at
>>> all) when 112 goes to stable next week...
>>>
>> Me too, and FWIW I'd understand if you and the other API owners prefer to
>> wait until there’s some data for Stable before responding to this Intent.
>>
>>> Do you have any concerns about certain inputs being sent to a server
>>> that might not have any backend validation, that would previously be
>>> prevented by the u-vintage validation?
>>>
>> That’s indeed the only scenario in which there would be breakage. So far
>> we haven’t heard of such cases in the wild. (Arguably, such web pages are
>> already broken, since DevTools could easily be used to remove the `pattern`
>> attribute, or requests could be made with tools like `curl`.) FWIW, there
>> was a similar discussion in this old blink-dev thread:
>> https://groups.google.com/a/chromium.org/g/blink-dev/c/XUNMtri0tI4/m/mjPkwXKNAQAJ
>>
>> I forgot to mention that we explicitly added a console warning in M112
>> for any `pattern` attribute values that would be affected by this change,
>> to help developers prepare for the potential change. One developer reported
>> seeing the warning and adjusting their `pattern` attribute values
>> accordingly, but it’s unclear whether inaction would have really broken
>> their web page:
>> https://bugs.chromium.org/p/chromium/issues/detail?id=1412729#c7
>>
>>
>>>
>>> Gecko: Positive (Mozilla standards position request
>>> <https://github.com/mozilla/standards-positions/issues/745>, implementation
>>> tracking issue <https://bugzilla.mozilla.org/show_bug.cgi?id=pattern-v>)
>>>
>>> WebKit: Positive (WebKit standards position request
>>> <https://github.com/WebKit/standards-positions/issues/132>, implementation
>>> tracking issue <https://bugs.webkit.org/show_bug.cgi?id=pattern-v>)
>>>
>>> Web developers: No signals
>>>
>>> Other signals:
>>>
>>> Debuggability
>>>
>>> The pattern attribute is already well-supported in DevTools and other
>>> tooling; no changes are necessary.
>>>
>>> Will this feature be supported on all six Blink platforms (Windows, Mac,
>>> Linux, Chrome OS, Android, and Android WebView)?
>>>
>>> Yes
>>>
>>> Is this feature fully tested by web-platform-tests
>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
>>> ?
>>>
>>> Pull Request: https://github.com/web-platform-tests/wpt/pull/38547
>>>
>>> Flag name
>>>
>>> N/A
>>>
>>> Requires code in //chrome?
>>>
>>> False
>>>
>>> Tracking bug
>>>
>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1412729
>>>
>>> Sample links
>>>
>>> https://mathiasbynens.be/demo/pattern-u-vs-v
>>>
>>> Estimated milestones
>>>
>>> M114
>>>
>>> Link to entry on the Chrome Platform Status
>>>
>>> https://chromestatus.com/feature/5149507107422208
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "blink-dev" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to blink-dev+unsubscr...@chromium.org.
>>> To view this discussion on the web visit
>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADizRgaAq4FwzJbUqLQVo%2BQdd_V0PT7rBr510OGe8fenHA%3D3HQ%40mail.gmail.com
>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADizRgaAq4FwzJbUqLQVo%2BQdd_V0PT7rBr510OGe8fenHA%3D3HQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "blink-dev" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to blink-dev+unsubscr...@chromium.org.
>>> To view this discussion on the web visit
>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/c9571b2a-a35b-3824-0f37-c93a9bb522fc%40chromium.org
>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/c9571b2a-a35b-3824-0f37-c93a9bb522fc%40chromium.org?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "blink-dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to blink-dev+unsubscr...@chromium.org.
>> To view this discussion on the web visit
>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADizRgYxU2v2ANQgzNiLD%2B4P-qJHxzTYJfRDsKNCtY0Yb_0bdg%40mail.gmail.com
>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADizRgYxU2v2ANQgzNiLD%2B4P-qJHxzTYJfRDsKNCtY0Yb_0bdg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADizRgbT0ZwZJ91qJYj3%3D%2B38FjortMzmpoWE5VPn7eOGu%2BejxQ%40mail.gmail.com.

Reply via email to