New issue
Advanced search Search tips

Issue 610591 link

Starred by 4 users

Issue metadata

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

Blocked on: View detail
issue 645338
issue 645596

Blocking:
issue 462133


Participants' hotlists:
MacViews-Task-Queue


Sign in to add a comment

MacViews(a11y): Views textfields don't provide accessibilityValue, acessibilitySelectedText, accessibilityNumberOfCharacters, role description, and maybe other important things

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

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 the textfield

What is the expected result?

Should show stuff in Accessibility Inspector similar to what an NSTextField has

What happens instead of that?

Doesn't

 

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

Blocking: 462133

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

Labels: M-53
Project Member

Comment 3 by bugdroid1@chromium.org, Jun 21 2016

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

commit 244fc7d3829a5f62b28c5655badb2df290676e2d
Author: patricialor <patricialor@chromium.org>
Date: Tue Jun 21 01:03:33 2016

Mac a11y: Add RoleDescription, Value, Subrole accessibility attributes & tests.

Populate NSAccessibilityRoleDescriptionAttribute,
NSAccessibilityValueAttribute, and NSAccessibilitySubroleAttribute fields for
views::View elements on Mac, with tests.

Also add unit tests for the attributes currently supported, including a test
specifically for textfields.

BUG= 610591 

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

[modify] https://crrev.com/244fc7d3829a5f62b28c5655badb2df290676e2d/content/browser/accessibility/browser_accessibility_cocoa.mm
[modify] https://crrev.com/244fc7d3829a5f62b28c5655badb2df290676e2d/ui/accessibility/ax_view_state.cc
[modify] https://crrev.com/244fc7d3829a5f62b28c5655badb2df290676e2d/ui/accessibility/ax_view_state.h
[modify] https://crrev.com/244fc7d3829a5f62b28c5655badb2df290676e2d/ui/accessibility/platform/ax_platform_node_mac.mm
[modify] https://crrev.com/244fc7d3829a5f62b28c5655badb2df290676e2d/ui/views/views.gyp
[add] https://crrev.com/244fc7d3829a5f62b28c5655badb2df290676e2d/ui/views/widget/native_widget_mac_accessibility_unittest.mm

Project Member

Comment 4 by bugdroid1@chromium.org, Jul 1 2016

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

commit c32a66d5bf5de90e99d220dafe3fff471419343c
Author: patricialor <patricialor@chromium.org>
Date: Fri Jul 01 00:29:18 2016

Mac: Add accessibility attributes for textfields, and AXEnabled for all views.

This change adds support for the following NSAccessibility attributes:
NSAccessibilityEnabledAttribute
NSAccessibilityFocusedAttribute
NSAccessibilityInsertionPointLineNumberAttribute
NSAccessibilityNumberOfCharactersAttribute
NSAccessibilityPlaceholderValue
NSAccessibilitySelectedTextAttribute
NSAccessibilitySelectedTextrangeAttribute
NSAccessibilityVisibleCharacterRangeAttribute

ui::AX_ATTR_PLACEHOLDER was also not used outside of Blink, so support this
attribute as well.

Add tests for all of these attributes and plumb through textfield change
notifications for ui::AX_EVENT_TEXT_CHANGED, ui::AX_EVENT_VALUE_CHANGED, and
ui::AX_EVENT_TEXT_SELECTION_CHANGED.

BUG= 610591 

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

[modify] https://crrev.com/c32a66d5bf5de90e99d220dafe3fff471419343c/ui/accessibility/ax_node_data.h
[modify] https://crrev.com/c32a66d5bf5de90e99d220dafe3fff471419343c/ui/accessibility/ax_view_state.h
[modify] https://crrev.com/c32a66d5bf5de90e99d220dafe3fff471419343c/ui/accessibility/platform/ax_platform_node_mac.h
[modify] https://crrev.com/c32a66d5bf5de90e99d220dafe3fff471419343c/ui/accessibility/platform/ax_platform_node_mac.mm
[modify] https://crrev.com/c32a66d5bf5de90e99d220dafe3fff471419343c/ui/views/accessibility/native_view_accessibility.cc
[modify] https://crrev.com/c32a66d5bf5de90e99d220dafe3fff471419343c/ui/views/controls/textfield/textfield.cc
[modify] https://crrev.com/c32a66d5bf5de90e99d220dafe3fff471419343c/ui/views/widget/native_widget_mac_accessibility_unittest.mm

tapted@, Could you please confirm the fix has been completely landed? So that test team can try to verify this on ToT.

Thank you!
Labels: Needs-Feedback
Labels: -Needs-Feedback
I think there's more to come, but Patti can confirm. Also note the flag has been renamed. It's now necessary to set the following to `Enabled` to get the correct bookmark bubble
 - chrome://flags/#mac-views-native-dialogs
TLDR; Yes, there are probably more coming.

Long answer (please read this bit tapted@!):

There are a couple attributes that are missing, but I think they are probably the less useful ones, specifically

accessibilityIdentifier - looks like this is only really used for automated testing purposes according to both Cocoa documentation and the equivalent AXViewState.id field that exists in Chrome, so this might not be particularly useful since we have a cross-platform way to access this id already (no need to make it visible to Mac accessibility clients).
accessibilityTopLevelUIElement - not sure if this should be the widget or the root view or something else. Maybe you have some ideas tapted@?
accessibilityWindow - the window with the element (or the window the dialog containing the element is attached to).

One that does seem a bit useful is accessibilityHelp, but am not sure about the best way to implement that as there is no equivalent that currently exists in Chrome, so even if this were implemented, there wouldn't be much use for it until it was populated.

Other big differences are the "Actions" and "Parameterized Attributes" sections picked up by the Mac Accessibility Inspector, both of which are missing quite a few fields from them (see attached screenshots), but I haven't explored much into these yet. And finally there are some fields that are meant to be writable (notice the "(W)" next to some accessibility attributes), but again am not sure how much of a priority this is, nor have I been able to look into it much yet.
Cocoa Textfield Attributes.png
77.2 KB View Download
MacViews Textfield Attributes.png
41.8 KB View Download
Would it make sense for a tooltip to go into accessibilityHelp?

accessibilityTopLevelUIElement - I'd say it's acceptable just to report the same thing as accessibilityWindow

actions/paramaterized attributes - does the WebContent area do anything with these? (on Chrome? On Safari?). Same with the writable stuff. If it's hard, we can defer it to a separate feature reqest, so long as there is no regression.

Note there's also http://crbug.com/386671 -- some of these may have only come about in 10.10
1. Yes, I would say that tooltip should go into help.
2. topLevelUIElement: That sounds correct. I believe that Safari does the same thing. You can check using the Accessibility Inspector in Xcode Tools.
3. Actions and parameterized attributes: We support all of those in the web view. Most of them are web specific but a great number need to be supported for views as well.
Better file a new feature request. My ultimate dream would be to share code between web view and views, so that we won't need to keep implementing accessibility.

Project Member

Comment 11 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
Project Member

Comment 12 by bugdroid1@chromium.org, Jul 27 2016

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

commit 37f9fc7c83fd0386d554fb93213287b698b037c0
Author: patricialor <patricialor@chromium.org>
Date: Wed Jul 27 03:02:27 2016

Mac a11y: Add Help, TopLevelUIElement, and Window accessibility attributes.

Add the accessibilityHelp (derived from the tooltip text),
accessibilityTopLevelUIElement, and accessibilityWindow accessibility attributes
for Mac, with tests.

BUG= 610591 

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

[modify] https://crrev.com/37f9fc7c83fd0386d554fb93213287b698b037c0/ui/accessibility/ax_view_state.h
[modify] https://crrev.com/37f9fc7c83fd0386d554fb93213287b698b037c0/ui/accessibility/platform/ax_platform_node_delegate.h
[modify] https://crrev.com/37f9fc7c83fd0386d554fb93213287b698b037c0/ui/accessibility/platform/ax_platform_node_mac.mm
[modify] https://crrev.com/37f9fc7c83fd0386d554fb93213287b698b037c0/ui/accessibility/platform/test_ax_node_wrapper.cc
[modify] https://crrev.com/37f9fc7c83fd0386d554fb93213287b698b037c0/ui/accessibility/platform/test_ax_node_wrapper.h
[modify] https://crrev.com/37f9fc7c83fd0386d554fb93213287b698b037c0/ui/views/accessibility/native_view_accessibility.cc
[modify] https://crrev.com/37f9fc7c83fd0386d554fb93213287b698b037c0/ui/views/accessibility/native_view_accessibility.h
[modify] https://crrev.com/37f9fc7c83fd0386d554fb93213287b698b037c0/ui/views/accessibility/native_view_accessibility_auralinux.cc
[modify] https://crrev.com/37f9fc7c83fd0386d554fb93213287b698b037c0/ui/views/widget/native_widget_mac_accessibility_unittest.mm

Project Member

Comment 13 by bugdroid1@chromium.org, Aug 16 2016

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

commit 0fa98f7891c47f1f942e3e584fc64227ebf65500
Author: patricialor <patricialor@chromium.org>
Date: Tue Aug 16 01:08:15 2016

MacViews a11y: Allow accessibility clients to set the AXValue on some controls.

Cocoa controls allow accessibility clients to set specific values on user input
controls via accessibility clients. This doesn't yet work for MacViews controls.
This CL adds support for writable ui::AX_VALUE attributes on MacViews.

BUG= 610591 
TEST=Open the XCode 'Accessibility Inspector' and hover the mouse over the
omnibox (for example). Press Cmd+F7 to lock onto the omnibox. Find the
'accessibilityValue' entry in the inspector (it should have a '(W)' next to
it to indicate it's writable). Click it and at the bottom of the inspector has a
textbox to edit the value. Edit and confirm, the text in the omnibox should be
updated.

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

[modify] https://crrev.com/0fa98f7891c47f1f942e3e584fc64227ebf65500/ui/accessibility/platform/ax_platform_node_delegate.h
[modify] https://crrev.com/0fa98f7891c47f1f942e3e584fc64227ebf65500/ui/accessibility/platform/ax_platform_node_mac.mm
[modify] https://crrev.com/0fa98f7891c47f1f942e3e584fc64227ebf65500/ui/accessibility/platform/test_ax_node_wrapper.cc
[modify] https://crrev.com/0fa98f7891c47f1f942e3e584fc64227ebf65500/ui/accessibility/platform/test_ax_node_wrapper.h
[modify] https://crrev.com/0fa98f7891c47f1f942e3e584fc64227ebf65500/ui/views/accessibility/native_view_accessibility.cc
[modify] https://crrev.com/0fa98f7891c47f1f942e3e584fc64227ebf65500/ui/views/accessibility/native_view_accessibility.h
[modify] https://crrev.com/0fa98f7891c47f1f942e3e584fc64227ebf65500/ui/views/accessibility/native_view_accessibility_auralinux.cc
[modify] https://crrev.com/0fa98f7891c47f1f942e3e584fc64227ebf65500/ui/views/widget/native_widget_mac_accessibility_unittest.mm

Blockedon: 645338
Project Member

Comment 15 by bugdroid1@chromium.org, Oct 31 2016

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

commit 0aa1406119dc85097efebbb282895b543e4b0c26
Author: patricialor <patricialor@chromium.org>
Date: Mon Oct 31 03:15:36 2016

MacViews/a11y: Allow accessibility clients to update the selected text.

Currently, the `selected text` a11y attribute of views::Textfields is reported
as unmodifiable, which differs from native NSTextFields on Mac.

Add a callback to views::Textfield and OmniboxViewViews to allow accessibility
clients to replace the currently selected text, and plumb through for Mac. When
no text is selected, new text is inserted at the current cursor position. This
also fixes a problem where selection information provided to accessibility
clients was incorrect for the Omnibox when it still had selected text, but focus
was not on the window the Omnibox was currently attached to.

BUG= 610591 
TEST=With #mac-views-webui-dialogs turned on in chrome:flags, open the XCode
Accessibility Inspector and bring up the HTTP Authentication dialog. Type some
text into the username Textfield, then select some text in it. Click on the
Accessibility Inspector to move focus off the Chrome window and hover over the
Omnibox with the mouse. The Accessibility Inspector should report the correct
"accessibilitySelectedTextRange" and "accessibilitySelectedText" attributes.
Then press Cmd+F7 to lock onto the Textfield, click on
"accessibilitySelectedText" and enter a value at the bottom. The selected text
in the Textfield should be replaced with the new string with no text selected.

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

[modify] https://crrev.com/0aa1406119dc85097efebbb282895b543e4b0c26/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
[modify] https://crrev.com/0aa1406119dc85097efebbb282895b543e4b0c26/chrome/browser/ui/views/omnibox/omnibox_view_views.h
[modify] https://crrev.com/0aa1406119dc85097efebbb282895b543e4b0c26/ui/accessibility/ax_view_state.h
[modify] https://crrev.com/0aa1406119dc85097efebbb282895b543e4b0c26/ui/accessibility/platform/ax_platform_node_delegate.h
[modify] https://crrev.com/0aa1406119dc85097efebbb282895b543e4b0c26/ui/accessibility/platform/ax_platform_node_mac.mm
[modify] https://crrev.com/0aa1406119dc85097efebbb282895b543e4b0c26/ui/accessibility/platform/ax_platform_node_win.cc
[modify] https://crrev.com/0aa1406119dc85097efebbb282895b543e4b0c26/ui/accessibility/platform/test_ax_node_wrapper.cc
[modify] https://crrev.com/0aa1406119dc85097efebbb282895b543e4b0c26/ui/accessibility/platform/test_ax_node_wrapper.h
[modify] https://crrev.com/0aa1406119dc85097efebbb282895b543e4b0c26/ui/views/accessibility/native_view_accessibility.cc
[modify] https://crrev.com/0aa1406119dc85097efebbb282895b543e4b0c26/ui/views/accessibility/native_view_accessibility.h
[modify] https://crrev.com/0aa1406119dc85097efebbb282895b543e4b0c26/ui/views/accessibility/native_view_accessibility_auralinux.cc
[modify] https://crrev.com/0aa1406119dc85097efebbb282895b543e4b0c26/ui/views/controls/textfield/textfield.cc
[modify] https://crrev.com/0aa1406119dc85097efebbb282895b543e4b0c26/ui/views/controls/textfield/textfield.h
[modify] https://crrev.com/0aa1406119dc85097efebbb282895b543e4b0c26/ui/views/widget/native_widget_mac_accessibility_unittest.mm

Project Member

Comment 16 by bugdroid1@chromium.org, Nov 15 2016

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

commit f6a5dc8e9e2b639d9d4ce96f8bf1bce88aeef3f2
Author: patricialor <patricialor@chromium.org>
Date: Tue Nov 15 07:47:46 2016

MacViews/a11y: Allow accessibility clients to focus and unfocus focusable Views.

Currently, the `isAccessibilityFocused` a11y attribute on Views is reported as
unmodifiable, which differs from native UI elements on Mac.

This change will support allowing accessibility clients to focus and unfocus
Views controls which are reported as focusable using a new
NativeViewAccessibility::SetFocused() method and a new
ui::AX_ACTION_FLAGS_SET_UNFOCUSED. SetFocused() will not call
View::HandleAccessibilityAction() because all Views are potentially focusable.

BUG= 610591 
TEST=With #mac-views-webui-dialogs turned on in chrome:flags, open the XCode
Accessibility Inspector and bring up the HTTP Authentication dialog. Hover over
a control on it (e.g. the username Textfield) and press Cmd+F7 to lock onto it.
In the Accessibility Inspector, click on `isAccessibilityFocused` and check it
has a '(W)' next to it to indicate it's writable. A checkbox should appear at
the bottom which reflects its current focused state. Check it and click
Set Value to focus the control, then uncheck it and click Set Value to unfocus
the control.

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

[modify] https://crrev.com/f6a5dc8e9e2b639d9d4ce96f8bf1bce88aeef3f2/ui/accessibility/platform/ax_platform_node_delegate.h
[modify] https://crrev.com/f6a5dc8e9e2b639d9d4ce96f8bf1bce88aeef3f2/ui/accessibility/platform/ax_platform_node_mac.mm
[modify] https://crrev.com/f6a5dc8e9e2b639d9d4ce96f8bf1bce88aeef3f2/ui/accessibility/platform/test_ax_node_wrapper.cc
[modify] https://crrev.com/f6a5dc8e9e2b639d9d4ce96f8bf1bce88aeef3f2/ui/accessibility/platform/test_ax_node_wrapper.h
[modify] https://crrev.com/f6a5dc8e9e2b639d9d4ce96f8bf1bce88aeef3f2/ui/views/accessibility/native_view_accessibility.cc
[modify] https://crrev.com/f6a5dc8e9e2b639d9d4ce96f8bf1bce88aeef3f2/ui/views/accessibility/native_view_accessibility.h
[modify] https://crrev.com/f6a5dc8e9e2b639d9d4ce96f8bf1bce88aeef3f2/ui/views/accessibility/native_view_accessibility_auralinux.cc
[modify] https://crrev.com/f6a5dc8e9e2b639d9d4ce96f8bf1bce88aeef3f2/ui/views/accessibility/native_view_accessibility_unittest.cc
[modify] https://crrev.com/f6a5dc8e9e2b639d9d4ce96f8bf1bce88aeef3f2/ui/views/widget/native_widget_mac_accessibility_unittest.mm

Blockedon: 645596
Project Member

Comment 18 by bugdroid1@chromium.org, Feb 17 2017

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

commit 0a8d26e24fbf3e0a262f2e0fe72100c979a77428
Author: patricialor <patricialor@chromium.org>
Date: Fri Feb 17 00:11:36 2017

MacViews/a11y: Allow accessibility clients to set new selections in Textfields.

Currently, the `SelectedTextRange` a11y attribute on Views is reported as
unmodifiable, which differs from native text field elements on Mac.

This change will support allowing accessibility clients to change the text
selection (including moving the cursor position) for views::Textfields.

BUG= 610591 , 645596
TEST=With #secondary-ui-md turned on in chrome:flags, open the XCode
Accessibility Inspector and bring up the HTTP Authentication dialog. Type some
text into the username dialog, select some text, and inspect it with Alt+Space
on macOS 10.12 or Cmd+F7 otherwise. In the Accessibility Inspector, scroll down
to SelectedTextRange and check it's editable. Setting the location and length of
the control then changes the text selection made earlier.

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

[modify] https://crrev.com/0a8d26e24fbf3e0a262f2e0fe72100c979a77428/ui/accessibility/platform/ax_platform_node_mac.mm
[modify] https://crrev.com/0a8d26e24fbf3e0a262f2e0fe72100c979a77428/ui/views/widget/native_widget_mac_accessibility_unittest.mm

Labels: NewComponent-Accessibility NewComponent-Accessibility-Compatibility
Components: UI>Accessibility>Compatibility
Components: -UI>Accessibility
Labels: -newcomponent-accessibility-compatibility -newcomponent-accessibility
Status: Fixed (was: Assigned)
I think this is all fixed except for the show menu action. Filed  Issue 732655  for that.
views.png
142 KB View Download
cocoa.png
137 KB View Download

Sign in to add a comment