*Contact emails*
[email protected]

*Explainer*
*No information provided*

*Specification*
https://github.com/whatwg/html/pull/12345

*Summary*
This change implements a revised and simplified stacking model for the
popover=hint attribute and its interactions with popover=auto. Previously,
the interactions between these two types of popovers could be complex in
some corner case situations (such as nesting auto popovers inside hint
popovers), and could lead to unexpected behavior. Under the new model,
opening a hint popover will no longer inadvertently close unrelated auto
popovers. Hint popovers are now only hidden when their ancestral auto
popover is hidden, or when a new, unrelated auto popover is opened.
Additionally, developers can now safely nest an auto popover inside a hint
popover; instead of throwing an exception or breaking the stack, the nested
auto popover will gracefully "downgrade" and behave as a hint popover. This
allows use cases such as placing a customizable-<select> within a
popover=hint. To further improve predictability and prevent complex state
mutations, we are also tightening the behavior around opening and closing
popovers from within the beforetoggle event. There were guards in place for
some, but not all, of the possible cases before. This change revamps the
mechanism used to detect these cases, so that it should more reliably throw
InvalidStateErrors for all such cases. This ensures that popover state
management remains stable and prevents looping reentrancy bugs. All of
these changes were motivated by standards conversations with Mozilla on the
spec PR here: https://github.com/whatwg/html/pull/12345.

*Blink component*
Blink>DOM
<https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3EDOM%22>

*Web Feature ID*
popover-hint <https://webstatus.dev/features/popover-hint>

*Motivation*
These changes are the result of a conversation in standards that came up as
other browsers started to review the landed specs for the popover=hint
feature. It is unfortunate that this detailed review didn't happen at the
time of the landing of the specs, or the shipping of this feature in
Chrome, but it's good that it eventually did happen. The changes are
positive ones that rationalize the behavior in various corner-case
situations, with multiple nested stacks of popovers.

*Initial public proposal*
https://github.com/whatwg/html/issues/12304

*Search tags*
popover <https://chromestatus.com/features#tags:popover>, hint
<https://chromestatus.com/features#tags:hint>

*TAG review*
*No information provided*

*TAG review status*
Not applicable

*Goals for experimentation*
None

*Risks*


*Interoperability and Compatibility*
These changes are very unlikely to cause behavioral changes on existing
sites. The popover=hint attribute value is a relatively new addition to the
Popover API, and there is minimal usage (0.025%
https://chromestatus.com/metrics/feature/timeline/popularity/4480) in the
wild. For those sites that have already started adopting popover=hint,
these updates address edge cases and structural inconsistencies, meaning
any observed differences will very likely be strict improvements to the
usability of the API in these corner case situations. We will monitor
carefully for any bug reports, and we can address them as they arise.

*Gecko*: Positive (https://github.com/whatwg/html/pull/12345) Proposed
changes came from Mozilla.

*WebKit*: Positive (
https://github.com/whatwg/html/pull/12345#pullrequestreview-4114820129)

*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?
*No information provided*


*Debuggability*
*No information provided*

*Will this feature be supported on all six Blink platforms (Windows, Mac,
Linux, ChromeOS, 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>?*
Yes


*Flag name on about://flags*
*No information provided*

*Finch feature name*
PopoverHintNewBehavior

*Rollout plan*
Will ship enabled for all users

*Requires code in //chrome?*
False

*Tracking bug*
https://crbug.com/499019927

*Estimated milestones*
Shipping on desktop 150
DevTrial on desktop 149
Shipping on Android 150
DevTrial on Android 149
Shipping on WebView 150

*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).
*No information provided*

*Link to entry on the Chrome Platform Status*
https://chromestatus.com/feature/6282804208992256?gate=4782991999107072

This intent message was generated by Chrome Platform Status
<https://chromestatus.com/>.

-- 
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 [email protected].
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAM%3DNeDgRMcWonxYahkruEugas5n5rnbXtO5Unv7CNnj-VunDng%40mail.gmail.com.

Reply via email to