I think such a console error sounds like a reasonable idea, but I'd need to
dig in to see how hard it would be to do.

-David

On Tue, Jan 9, 2024 at 2:59 PM Aaron Leventhal <alevent...@chromium.org>
wrote:

> 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/CAG0MU3iCxUjKipVmEttqAMF1ZHvc%2BfK734cK5jg9zHeoqW8EMg%40mail.gmail.com.

Reply via email to