WDYT about a console error in developer tools when there is no focus rule
applied?

On Tue, Jan 9, 2024 at 2:56 PM David Baron <dba...@chromium.org> wrote:

> I think in theory it might make sense for focus outlines to use something
> like an aggregation of child bounds.  (The specifications even allow focus
> outlines on regular elements to expand to contain the bounds of children.)
>
> However, in the case of display:contents, it would be hard to implement in
> all browser engines (need to figure out responsibility for painting and
> invalidating it), hard to specify (need to describe how it interacts with
> visual effects... and also implement that interaction), hard to explain to
> developers (doesn't fit with the normal model around how outlines are drawn
> and how display:contents works), and probably hard to get standards
> consensus around (for those same reasons).
>
> So my current preference is to allow display:contents elements to be
> focusable and to make visual indication of the outline the developer's
> problem (but perhaps still somewhat discourage having to go down that path).
>
> -David
>
> On Tue, Jan 9, 2024 at 12:49 PM Aaron Leventhal <alevent...@chromium.org>
> wrote:
>
>> Would an option for focus outlines to be to use the same idea we're
>> discussing for AT bounding boxes? Namely, to use an aggregation of child
>> outlines?
>>
>> On Tue, Jan 9, 2024 at 12:33 PM David Baron <dba...@chromium.org> wrote:
>>
>>> I think accumulating the rectangles of children seems like a good option
>>> if we need to report a bounding box.  It sounds like that's something else
>>> where I need to test, and possibly change, our current behavior for
>>> elements with display:contents.
>>>
>>> Regarding focus outlines:  these elements won't draw focus outlines.
>>> This is definitely a tradeoff.  As I wrote in
>>> https://github.com/WebKit/standards-positions/issues/164#issuecomment-1708822339
>>> :
>>>
>>> So I think my preference for outline is that we say that if a developer
>>> is going to depend on focusability of something with display: contents,
>>> they need to add appropriate styles to draw the focus outline (for example,
>>> by drawing it on an appropriate descendant or descendants).
>>>
>>> I admit that developers aren't going to get that right all the time. But
>>> the same is true of the current situation. That is, I think developers will
>>> sometimes not do what we want if we say either of:
>>>
>>>
>>>    - developers shouldn't use display: contents if they need an element
>>>    to be focusable, or
>>>    - developers should add appropriate focus styles if they use
>>>    display: contents on something that is focusable.
>>>
>>> (Note that needing an element to be focusable is often a need for users
>>> using keyboard navigation or similar, that may not apply to users using a
>>> mouse. So developers may well miss it.)
>>>
>>> Then the question is which problem is worse: is it worse to have an
>>> element that the user needs to get to but that can't be focused at all, or
>>> worse to have it be focusable but without a good indication that it's
>>> focused. The latter at least gives a keyboard user a chance to figure out
>>> what's going on, whereas with the former they're out of luck. So my
>>> inclination is that having the element be focusable but without an
>>> indication of focus is less bad than having it not be focusable at all when
>>> it should be. I admit that this is just my instinct and I haven't attempted
>>> to confirm this. And there's also the confounding factor that the two
>>> problems might occur at different rates.
>>>
>>> -David
>>>
>>> On Tue, Jan 9, 2024 at 11:46 AM Aaron Leventhal <alevent...@chromium.org>
>>> wrote:
>>>
>>>> And (duh to myself), we need to compute a bounding box for our own
>>>> focus outline.
>>>>
>>>> Apologies if this is answered elsewhere.
>>>>
>>>> On Tue, Jan 9, 2024 at 11:45 AM Aaron Leventhal <
>>>> alevent...@chromium.org> wrote:
>>>>
>>>>> Interesting. How will the bounding box be reported via a11y APIs?
>>>>>
>>>>> Examples of where this is used:
>>>>> 1. ATs for low vision users that draw a box around the focus and/or
>>>>> move the focus onscreen (especially for a magnifier that is only showing
>>>>> part of the actual screen's contents in a virtual viewport).
>>>>> 2. Voice Input: used to show numbers next to the item when several
>>>>> things have the same name, e.g. a bunch of links labelled "click here".
>>>>> 3. Single switch ATs: for highlighting an item that the user can select
>>>>>
>>>>> One answer might be to accumulate the rectangles of all children and
>>>>> to use that. Not sure what the algorithm would do for out-of-flow 
>>>>> children.
>>>>>
>>>>> Aaron
>>>>>
>>>>> On Tue, Jan 9, 2024 at 11:39 AM David Baron <dba...@chromium.org>
>>>>> wrote:
>>>>>
>>>>>> Contact emailsdba...@chromium.org
>>>>>>
>>>>>> ExplainerNone
>>>>>>
>>>>>> Specification
>>>>>> https://github.com/w3c/csswg-drafts/issues/2632#issuecomment-438851770
>>>>>>
>>>>>> Summary
>>>>>>
>>>>>> This change means that elements that have CSS display:contents can be
>>>>>> focusable. In other words, if they would have been focusable without
>>>>>> display:contents, display:contents will no longer change that. Before 
>>>>>> this
>>>>>> change, elements with display:contents could never be focused. Developers
>>>>>> making elements with display:contents that can be focused need to ensure
>>>>>> that such elements have appropriate styles to make the focus visually
>>>>>> apparent, since they will not have a default focus outline.
>>>>>>
>>>>>>
>>>>>> Blink componentBlink>HTML>Focus
>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EHTML%3EFocus>
>>>>>>
>>>>>> Motivation
>>>>>>
>>>>>> Elements with display:contents are exposed to assistive technology as
>>>>>> having their normal roles (as though they had their default display). The
>>>>>> contract for the meaning of accessibility roles includes support for
>>>>>> certain role-specific keyboard interactions which often include
>>>>>> focusability. So it's important that the exposure to AT match the
>>>>>> focusability. The CSS Working Group has concluded that both AT exposure 
>>>>>> and
>>>>>> focusability should be as-normal. Prior to this change, AT exposure was
>>>>>> interoperably as specified, but such elements were interoperably not
>>>>>> focusable.
>>>>>>
>>>>>>
>>>>>> Search tagsCSS <https://chromestatus.com/features#tags:CSS>, a11y
>>>>>> <https://chromestatus.com/features#tags:a11y>, accessibility
>>>>>> <https://chromestatus.com/features#tags:accessibility>, focus
>>>>>> <https://chromestatus.com/features#tags:focus>
>>>>>>
>>>>>> TAG reviewNone
>>>>>>
>>>>>> TAG review statusNot applicable
>>>>>>
>>>>>> Risks
>>>>>>
>>>>>>
>>>>>> Interoperability and Compatibility
>>>>>>
>>>>>> This is proposing to change a currently interoperable behavior. This
>>>>>> has some risk that other engines won't match the change and we'll end up
>>>>>> with less interoperability. However, I think there is probably enough
>>>>>> support from other engines at this point that we should take the lead and
>>>>>> hope that other engines will soon follow.
>>>>>>
>>>>>>
>>>>>> *Gecko*: Positive (
>>>>>> https://github.com/mozilla/standards-positions/issues/772)
>>>>>>
>>>>>> *WebKit*: No signal (
>>>>>> https://github.com/WebKit/standards-positions/issues/164) No
>>>>>> official position but
>>>>>> https://github.com/web-platform-tests/interop/issues/568 does show
>>>>>> Safari interest in the topic.
>>>>>>
>>>>>> *Web developers*: No signals
>>>>>>
>>>>>> *Other signals*: Positive advocacy from users / user advocates such
>>>>>> as in https://bugs.chromium.org/p/chromium/issues/detail?id=1366037
>>>>>>  and https://github.com/web-platform-tests/interop/issues/568
>>>>>>
>>>>>> Activation
>>>>>>
>>>>>> This fixes what appears to be one of the obstacles for developers to
>>>>>> use display:contents in a way that is accessible. While in the short term
>>>>>> it reduces interoperability (since engines agree on the current "bad"
>>>>>> behavior), the long term goal is that engines will converge on the new
>>>>>> behavior, and this will lead to increased developer confidence in and
>>>>>> increased usability of CSS display:contents.
>>>>>>
>>>>>>
>>>>>> 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
>>>>>>
>>>>>> Is this feature fully tested by web-platform-tests
>>>>>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>
>>>>>> ?Yes
>>>>>>
>>>>>> https://github.com/web-platform-tests/wpt/pull/39247
>>>>>>
>>>>>>
>>>>>> Flag name on chrome://flagsNone
>>>>>>
>>>>>> Finch feature namekDisplayContentsFocusable
>>>>>>
>>>>>> Requires code in //chrome?False
>>>>>>
>>>>>> Tracking bug
>>>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1366037
>>>>>>
>>>>>> Estimated milestones
>>>>>>
>>>>>> No milestones specified
>>>>>>
>>>>>>
>>>>>> 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/6237396851228672
>>>>>>
>>>>>> This intent message was generated by Chrome Platform Status
>>>>>> <https://chromestatus.com/> and edited by hand.
>>>>>>
>>>>>> --
>>>>>> 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/CAG0MU3irORkF9G%3Dkr-KJF0hvoYbTpdpmYordQ1qi6w3s2jd5Fw%40mail.gmail.com
>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAG0MU3irORkF9G%3Dkr-KJF0hvoYbTpdpmYordQ1qi6w3s2jd5Fw%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/CAG0MU3gOw1Bmzv0mVsA-PeYRyJDRWYEgShedyErcktooY0jovw%40mail.gmail.com
>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAG0MU3gOw1Bmzv0mVsA-PeYRyJDRWYEgShedyErcktooY0jovw%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/CAC2P9Wnhmv4t2Ewwsoj2WEBaqvRV0jUN4atP550O1Y6pUoTx6w%40mail.gmail.com.

Reply via email to