New issue
Advanced search Search tips

Issue 610589 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: May 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 3
Type: Bug
Team-Accessibility

Blocked on:
issue 687822

Blocking:
issue 462133


Participants' hotlists:
MacViews-Task-Queue


Sign in to add a comment

MacViews(a11y): Hovering over the *text* of a button has role AXStaticString, but the button should take precedence

Project Member Reported by tapted@chromium.org, May 10 2016

Issue description

Chrome Version       : 52.0.2729.3
OS Version: OS X 10.11.4

What steps will reproduce the problem?
1. Cmd+F5 to enable VoiceOver on Mac + chrome://flags/#mac-views-dialogs Enabled
2. Open OSX Accessibility Inspector
3. Open bookmark bubble, hover over buttons [compare to Cocoa bookmark bubble]

What is the expected result?

Should have role AXButton

What happens instead of that?

The text has role AXStaticString inside an AXButton. Hovering over the text should return the same thing as hovering over the padding between the text and the button border. Generally it should be a closer match to a native NSButton.

UserAgentString: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2729.3 Safari/537.36



 

Comment 1 by tapted@chromium.org, May 10 2016

Blocking: 462133

Comment 2 by tapted@chromium.org, May 31 2016

Labels: M-53

Comment 3 by tapted@chromium.org, Jun 23 2016

Another option here might be for the accessibility stuff to only add child nodes if View::IsAccessibilitFocusable() reports 'true' for them.
Project Member

Comment 4 by sheriffbot@chromium.org, Jul 10 2016

Labels: -M-53 M-54 MovedFrom-53
Moving this nonessential bug to the next milestone.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 5 by tapted@chromium.org, Oct 18 2016

Summary: MacViews(a11y): Hovering over the *text* of a button has role AXStaticString, but the button should take precedence (was: MacViewS(a11y): Hovering over the *text* of a button has role AXStaticString, but the button should take precedence)
Project Member

Comment 6 by bugdroid1@chromium.org, Jan 16 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/dc7d397153bcbccbc21e12f2ea3568f594699220

commit dc7d397153bcbccbc21e12f2ea3568f594699220
Author: patricialor <patricialor@chromium.org>
Date: Mon Jan 16 03:10:27 2017

a11y: Add a11y information to views::Tab and manually ignore its a11y children.

Currently, Views tabs have no a11y information specific to their class. The
fallback then is to use the views::Label inside them for a11y information
instead. This means they report their role as text. Fix this by adding a11y
information to views::Tab to report its role as ui::AX_ROLE_TAB, and handle the
ui::AX_ACTION_SET_SELECTED action and plumb through for Mac.

views::Tab is also a special case where only the selected tab is allowed to be
keyboard focusable. Because of this behavior, the views::Label inside is exposed
to the accessibility tree. Since views::Tab now has its own a11y information,
the views::Label should be hidden from users (see  Issue 610589 ). Make a class
views::TabLabel to manually set its a11y role to ui::AX_ROLE_IGNORED.

BUG= 657593 ,  610589 

Review-Url: https://codereview.chromium.org/2578303003
Cr-Commit-Position: refs/heads/master@{#443837}

[modify] https://crrev.com/dc7d397153bcbccbc21e12f2ea3568f594699220/chrome/app/generated_resources.grd
[modify] https://crrev.com/dc7d397153bcbccbc21e12f2ea3568f594699220/chrome/browser/ui/cocoa/tabs/tab_view.mm
[modify] https://crrev.com/dc7d397153bcbccbc21e12f2ea3568f594699220/ui/accessibility/platform/ax_platform_node_mac.mm
[modify] https://crrev.com/dc7d397153bcbccbc21e12f2ea3568f594699220/ui/strings/ui_strings.grd
[modify] https://crrev.com/dc7d397153bcbccbc21e12f2ea3568f594699220/ui/views/BUILD.gn
[modify] https://crrev.com/dc7d397153bcbccbc21e12f2ea3568f594699220/ui/views/controls/tabbed_pane/tabbed_pane.cc
[modify] https://crrev.com/dc7d397153bcbccbc21e12f2ea3568f594699220/ui/views/controls/tabbed_pane/tabbed_pane.h
[add] https://crrev.com/dc7d397153bcbccbc21e12f2ea3568f594699220/ui/views/controls/tabbed_pane/tabbed_pane_accessibility_mac_unittest.mm
[modify] https://crrev.com/dc7d397153bcbccbc21e12f2ea3568f594699220/ui/views/controls/tabbed_pane/tabbed_pane_unittest.cc

Blockedon: 687822
Project Member

Comment 8 by bugdroid1@chromium.org, Mar 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/28468e05efc7fde6e9201a29a25b2f8904b5b5e4

commit 28468e05efc7fde6e9201a29a25b2f8904b5b5e4
Author: patricialor <patricialor@chromium.org>
Date: Mon Mar 06 01:47:22 2017

Views a11y: Convert View's NativeViewAccessibility to a unique_ptr.

Currently, instances of NativeViewAccessibility depend on
NativeViewAccessibility::Destroy() being called in order to be released. By
converting the Views NativeViewAccessibility member to a unique_ptr, it will be
automatically destroyed with its corresponding View.

BUG= 610589 

Review-Url: https://codereview.chromium.org/2718073003
Cr-Commit-Position: refs/heads/master@{#454808}

[modify] https://crrev.com/28468e05efc7fde6e9201a29a25b2f8904b5b5e4/ui/views/accessibility/native_view_accessibility.cc
[modify] https://crrev.com/28468e05efc7fde6e9201a29a25b2f8904b5b5e4/ui/views/accessibility/native_view_accessibility.h
[modify] https://crrev.com/28468e05efc7fde6e9201a29a25b2f8904b5b5e4/ui/views/accessibility/native_view_accessibility_auralinux.cc
[modify] https://crrev.com/28468e05efc7fde6e9201a29a25b2f8904b5b5e4/ui/views/accessibility/native_view_accessibility_mac.mm
[modify] https://crrev.com/28468e05efc7fde6e9201a29a25b2f8904b5b5e4/ui/views/accessibility/native_view_accessibility_unittest.cc
[modify] https://crrev.com/28468e05efc7fde6e9201a29a25b2f8904b5b5e4/ui/views/accessibility/native_view_accessibility_win.cc
[modify] https://crrev.com/28468e05efc7fde6e9201a29a25b2f8904b5b5e4/ui/views/controls/tabbed_pane/tabbed_pane_unittest.cc
[modify] https://crrev.com/28468e05efc7fde6e9201a29a25b2f8904b5b5e4/ui/views/view.cc
[modify] https://crrev.com/28468e05efc7fde6e9201a29a25b2f8904b5b5e4/ui/views/view.h

Project Member

Comment 9 by bugdroid1@chromium.org, Mar 14 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/df7b70bca50665b8ea628e8012aa1a49c63bd001

commit df7b70bca50665b8ea628e8012aa1a49c63bd001
Author: patricialor <patricialor@chromium.org>
Date: Tue Mar 14 02:51:27 2017

MacViews/a11y: Typedef gfx::NativeViewAccessible to id for all of Mac & iOS.

Currently on Mac and iOS, gfx::NativeViewAccessible is 'typedef'ed to void*
or id depending on whether the file it's used in is an Objective C file or not
(i.e. if __OBJC__ is defined or not). Previously, when it was only ever used as
a return type on these platforms, this was fine. But in order to implement
AXPlatformNode::FromNativeViewAccessible() on Mac where
gfx::NativeViewAccessible is used as an method argument, this no longer works --
.cc and .mm files see different method signatures, and linking these together
fails (since the .mm file will declare an overload that doesn't exist).

To fix, typedef gfx::NativeViewAccessible to id.

BUG= 610589 

Review-Url: https://codereview.chromium.org/2739783002
Cr-Commit-Position: refs/heads/master@{#456594}

[modify] https://crrev.com/df7b70bca50665b8ea628e8012aa1a49c63bd001/testing/platform_test.h
[modify] https://crrev.com/df7b70bca50665b8ea628e8012aa1a49c63bd001/ui/gfx/native_widget_types.h

Project Member

Comment 10 by bugdroid1@chromium.org, Mar 23 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2d1f02c30222c895ba0216f011a627140e2a1318

commit 2d1f02c30222c895ba0216f011a627140e2a1318
Author: tapted <tapted@chromium.org>
Date: Thu Mar 23 02:05:15 2017

Hide AXPlatformNode on ChromeOS.

AXPlatformNode is always null on ChromeOS (and cast_shell) and never
null on other toolkit-views platforms. ChromeOS just uses
AXViewObjWrapper and related classes.

This means that, although NativeViewAccessibility (and AXNodeData) is
needed on all platforms, on ChromeOS, NativeViewAccessibility will never
serve as an AXPlatformNodeDelegate, so doesn't need to implement it.
Currently, it's complicating the implementation of platform integration
since the NativeViewAccessibility always has a null AXPlatformNode.

Split NativeViewAccessibility into two; keeping the abstract interface
that views::View needs in NativeViewAccessibility and move the rest into
NativeViewAccessibilityBase, which is never compiled on ChromeOS.

BUG= 610589 

Review-Url: https://codereview.chromium.org/2746813002
Cr-Commit-Position: refs/heads/master@{#458978}

[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/chrome/browser/ui/views/location_bar/location_icon_view.cc
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/content/browser/accessibility/browser_accessibility.cc
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/accessibility/BUILD.gn
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/accessibility/platform/ax_platform_node.cc
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/accessibility/platform/ax_platform_node.h
[add] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/accessibility/platform/ax_platform_unique_id.cc
[add] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/accessibility/platform/ax_platform_unique_id.h
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/base/BUILD.gn
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/base/ui_features.gni
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/views/BUILD.gn
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/views/accessibility/native_view_accessibility.h
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/views/accessibility/native_view_accessibility_auralinux.cc
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/views/accessibility/native_view_accessibility_auralinux.h
[rename] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/views/accessibility/native_view_accessibility_base.cc
[add] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/views/accessibility/native_view_accessibility_base.h
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/views/accessibility/native_view_accessibility_mac.h
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/views/accessibility/native_view_accessibility_mac.mm
[add] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/views/accessibility/native_view_accessibility_stub.cc
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/views/accessibility/native_view_accessibility_unittest.cc
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/views/accessibility/native_view_accessibility_win.cc
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/views/accessibility/native_view_accessibility_win.h
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/views/accessibility/native_view_accessibility_win_unittest.cc
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/views/controls/tabbed_pane/tabbed_pane_unittest.cc
[modify] https://crrev.com/2d1f02c30222c895ba0216f011a627140e2a1318/ui/views/controls/webview/webview.h

Labels: NewComponent-Accessibility NewComponent-Accessibility-Compatibility
Project Member

Comment 12 by bugdroid1@chromium.org, Mar 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/54bfa63a7eedc669fc481aa985d1f5979e695a1a

commit 54bfa63a7eedc669fc481aa985d1f5979e695a1a
Author: patricialor <patricialor@chromium.org>
Date: Fri Mar 31 04:22:01 2017

Views a11y: Implement AXPlatformNode::FromNativeViewAccessible() for Mac/Linux.

In order to implement the ability to exclude unnecessary accessibility elements
from the accessibility tree cross-platform, a method to retrieve the
NativeViewAccessibility instance for a given View is required. While this is
possible using AXPlatformNode::FromNativeViewAccessible() on Windows, it is not
implemented on any other platform.

This patch implements AXPlatformNode::FromNativeViewAccessible() for Linux and
Mac, which makes it possible to retrieve a NativeViewAccessibility instance for
any given View.

BUG= 610589 

Review-Url: https://codereview.chromium.org/2715543003
Cr-Commit-Position: refs/heads/master@{#461026}

[modify] https://crrev.com/54bfa63a7eedc669fc481aa985d1f5979e695a1a/ui/accessibility/platform/ax_platform_node.cc
[modify] https://crrev.com/54bfa63a7eedc669fc481aa985d1f5979e695a1a/ui/accessibility/platform/ax_platform_node_auralinux.cc
[modify] https://crrev.com/54bfa63a7eedc669fc481aa985d1f5979e695a1a/ui/accessibility/platform/ax_platform_node_mac.h
[modify] https://crrev.com/54bfa63a7eedc669fc481aa985d1f5979e695a1a/ui/accessibility/platform/ax_platform_node_mac.mm

Components: UI>Accessibility>Compatibility
Components: -UI>Accessibility
Labels: -newcomponent-accessibility-compatibility -newcomponent-accessibility
Project Member

Comment 15 by bugdroid1@chromium.org, May 26 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ce2e11f2565db306765cc6f6412cf5bfb158fb70

commit ce2e11f2565db306765cc6f6412cf5bfb158fb70
Author: patricialor <patricialor@chromium.org>
Date: Fri May 26 01:25:32 2017

a11y: Exclude children of nested keyboard accessible controls from a11y tree.

Currently, children of keyboard accessible controls, such as the Labels inside
LabelButtons, are not hidden from the accessibility tree. This is not useful
because the user only cares about the element that has focus, not any children
inside it, which are implementation details. Set any children of keyboard
accessible controls to have ignored roles, which indicates to the OS (works for
Windows, Mac, and Linux) that the ignored element should be excluded from the
accessibility tree.

BUG= 610589 , 723574 
TEST=On Mac: Open the XCode Accessibility Inspector. On Windows: Open the
Windows SDK 'Inspect.exe' and make sure the icon for 'Watch Focus' is selected.
Then (on Mac, hover over; on Windows, focus) a views::LabelButton (e.g. on the
HTTP Authentication dialog). It should report an empty set of children and its
role ("Type"/"accessibilityRole" on Mac; "Role"/"ControlType" on Windows) should
say it is a button.

Review-Url: https://codereview.chromium.org/2119413004
Cr-Commit-Position: refs/heads/master@{#474867}

[modify] https://crrev.com/ce2e11f2565db306765cc6f6412cf5bfb158fb70/ui/accessibility/platform/ax_platform_node_auralinux.cc
[modify] https://crrev.com/ce2e11f2565db306765cc6f6412cf5bfb158fb70/ui/accessibility/platform/ax_platform_node_mac.mm
[modify] https://crrev.com/ce2e11f2565db306765cc6f6412cf5bfb158fb70/ui/accessibility/platform/ax_platform_node_win.cc
[modify] https://crrev.com/ce2e11f2565db306765cc6f6412cf5bfb158fb70/ui/views/accessibility/native_view_accessibility_base.cc
[modify] https://crrev.com/ce2e11f2565db306765cc6f6412cf5bfb158fb70/ui/views/accessibility/native_view_accessibility_unittest.cc
[modify] https://crrev.com/ce2e11f2565db306765cc6f6412cf5bfb158fb70/ui/views/view.h
[modify] https://crrev.com/ce2e11f2565db306765cc6f6412cf5bfb158fb70/ui/views/widget/native_widget_mac_accessibility_unittest.mm

Status: Fixed (was: Assigned)

Sign in to add a comment