Contact emails
foo...@chromium.org
Specification
https://url.spec.whatwg.org/#idna
Summary
IDNA is the mechanism for non-ASCII characters in domain names, encoding a URL like http://네이버.한국/ as
http://xn--950bt9s8xi.xn--3e0b707e/ (a redirect to
naver.com).
The processing is defined by
https://www.unicode.org/reports/tr46/#Processing and is invoked by
https://url.spec.whatwg.org/#idna.
The URL spec sets the CheckJoiners flag, which enables the ContextJ rules in IDNA2008:
https://www.rfc-editor.org/rfc/rfc5892.html#appendix-A.1
https://www.rfc-editor.org/rfc/rfc5892.html#appendix-A.2
This disallows ZWNJ (U+200C ZERO WIDTH NON-JOINER) and ZWJ (U+200D ZERO WIDTH JOINER) in most places in URLs.
The implementation is to simply pass the UIDNA_CHECK_CONTEXTJ option to ICU, where this rule is implemented:
https://source.chromium.org/chromium/chromium/src/+/main:third_party/icu/source/common/uts46.cpp;l=1137-1204;drc=8a1988938d4298fbe8fb499b1a59fe4b04a21b15
This would fix over 200 subtests in WPT relating to IDNA, which already pass in Firefox and Safari:
https://chromium-review.googlesource.com/c/chromium/src/+/6990929
https://wpt.fyi/results/url/IdnaTestV2.window.html
All of the IdnaTestV2 cases that would regress from shipping ICU 77 (
https://chromestatus.com/feature/5143313833000960) would also be fixed again by this change.
Blink component
Blink>Network
Web Feature ID
url
Search tags
idna
TAG review
None
TAG review status
Not applicable
Risks
Interoperability and Compatibility
Interoperability is improved by bringing URL parsing closer to Firefox and Safari.
The web compat risk is most likely very low because the URLs that will be rejected don't work at all in Firefox or Safari. On the other hand, any breakage would be very severe for the same reason. To make this change safely I would suggest a gradual Finch rollout.
Gecko: Shipped/Shipping Shipped for a long time, exact version not found
WebKit: Shipped/Shipping Shipped for a long time, exact version not found
Web developers: No signals
Other signals:
WebView application risks
Does this intent deprecate or change behavior of existing APIs,
such that it has potentially high risk for Android WebView-based
applications?
None
Debuggability
None
Will this feature be supported on all six Blink platforms
(Windows, Mac, Linux, ChromeOS, Android, and Android WebView)?
Yes
Yes
https://wpt.fyi/results/url/IdnaTestV2.window.html
Flag name on about://flags
None
Finch feature name
UseIDNAContextJRules
Rollout plan
(RARE) Experiment users ramp up over time
Requires code in //chrome?
False
Tracking bug
https://crbug.com/40765949
Measurement
Cannot be measured with use counters because the URL parser is used in many places in Chrome, and not all of them have access to an ExecutionContext or similar.
UMA could be used and give a proportion of URL parses affected metric, but given how many URLs are parsed and how rare even valid IDNA URLs seem to be, the number is probably vanishingly small and not informative of risk.
Estimated milestones
Shipping on desktop | 143 |
Shipping on Android | 143 |
Shipping on WebView | 143 |
Anticipated spec changes
Open questions about a feature may be a source of future web compat or
interop issues. Please list open issues (e.g. links to known github
issues in the project for the feature specification) whose resolution
may introduce web compat/interop risk (e.g., changing to naming or
structure of the API in a non-backward-compatible way).
None
Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/6295810820145152?gate=5173132017139712