New issue
Advanced search Search tips

Issue 672205 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Aug 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 1
Type: Bug
Team-Accessibility

Blocking:
issue 428494
issue 633733
issue 644647



Sign in to add a comment

Add more fine-grained accessibility modes

Project Member Reported by dmazz...@chromium.org, Dec 7 2016

Issue description

Chrome's accessibility support is basically either off or on right now.

Since there's overhead associated with enabling accessibility, this hurts the performance of many Chrome users who only need a fraction of accessibility support.

Based on UMA logging we've confirmed that the vast majority of accessibility clients of Chrome are only basically accessing the role, state, name, value, and location of objects. By only computing those attributes and skipping the rest, we could save a lot of overhead.

As soon as additional attributes are requested we can automatically enable those attributes from then on.

Even screen reader users will potentially benefit from this change, as not all screen readers need all Chrome accessibility features enabled at all times.

The initial breakdown will be:

1. Web accessibility (role, state, name, value, and location)
2. Inline text boxes (enables support for getting the bounds of an arbitrary character range)
3. HTML (expose the HTML tag name and HTML attributes)
4. Screen reader support (things like live regions, table cell attributes, etc. - basically everything else)

 
Project Member

Comment 1 by bugdroid1@chromium.org, Dec 14 2016

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

commit dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a
Author: dmazzoni <dmazzoni@chromium.org>
Date: Wed Dec 14 18:41:01 2016

Add more fine-grained accessibility modes.

This is just a refactoring change, there should be no change in behavior yet.

Currently Chrome accessibility support is basically off of on. This change
adds some additional accessibility mode flags so we will be able to selectively
enable just part of accessibility support. See the linked bug for more details.

The idea of casting the accessibility mode bitmask to an enum of all possible
valid accessibility modes doesn't really make sense anymore as the number of
possible valid permutations is now large, so I'm eliminating
AccessibilityModeHelper and making AccessibilityMode into just an integer
type rather than an enum.

Following changes will implement support for these new modes and enable
tracking and manually toggling their usage.

BUG= 672205 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_site_isolation

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

[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/chrome/browser/extensions/api/automation/automation_apitest.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/chrome/browser/extensions/api/automation_internal/automation_internal_api.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/BUILD.gn
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/accessibility/accessibility_action_browsertest.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/accessibility/accessibility_ipc_error_browsertest.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/accessibility/accessibility_mode_browsertest.cc
[delete] https://crrev.com/64ebaec4a09a6d214d566ce5fc59d61e55540253/content/browser/accessibility/accessibility_mode_helper.cc
[delete] https://crrev.com/64ebaec4a09a6d214d566ce5fc59d61e55540253/content/browser/accessibility/accessibility_mode_helper.h
[delete] https://crrev.com/64ebaec4a09a6d214d566ce5fc59d61e55540253/content/browser/accessibility/accessibility_mode_helper_unittest.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/accessibility/accessibility_ui.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/accessibility/accessibility_win_browsertest.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/accessibility/android_granularity_movement_browsertest.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/accessibility/browser_accessibility_state_impl.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/accessibility/browser_accessibility_state_impl.h
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/accessibility/cross_platform_accessibility_browsertest.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/accessibility/dump_accessibility_browsertest_base.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/accessibility/dump_accessibility_events_browsertest.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/accessibility/hit_testing_browsertest.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/accessibility/touch_accessibility_aura_browsertest.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/android/content_view_core_impl.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/frame_host/render_frame_host_delegate.h
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/frame_host/render_frame_host_impl.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/renderer_host/render_widget_host_impl.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/web_contents/web_contents_impl.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/browser/web_contents/web_contents_impl.h
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/common/accessibility_mode_enums.h
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/common/frame_messages.h
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/public/browser/web_contents.h
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/public/browser/web_contents_observer.h
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/public/test/browser_test_utils.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/renderer/render_frame_impl.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/renderer/render_view_browsertest.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/renderer/render_view_impl.cc
[modify] https://crrev.com/dd3d51a7c8fb4e09d3c3bc0057408a5e1f43899a/content/test/BUILD.gn

Project Member

Comment 2 by bugdroid1@chromium.org, Dec 14 2016

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

commit 5adc955230fdddec66eb327d8cdbe5004a3c34c3
Author: dmazzoni <dmazzoni@chromium.org>
Date: Wed Dec 14 20:24:25 2016

Enable toggling of new accessibility modes in chrome://accessibility

Replaces links that toggled a single accessibility mode with a set of
checkboxes representing more fine-grained control over accessibility
support.

Adds some more help text to the UI to explain to users what this is for.

There's more to be done but I don't want to completely overhaul the UI in
this change, I'd like to just make a good incremental step and most
importantly add support for all of the possible accessibility modes.

Depends on: https://codereview.chromium.org/2558933002/

BUG= 672205 

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

[modify] https://crrev.com/5adc955230fdddec66eb327d8cdbe5004a3c34c3/content/browser/accessibility/accessibility_ui.cc
[modify] https://crrev.com/5adc955230fdddec66eb327d8cdbe5004a3c34c3/content/browser/accessibility/accessibility_ui.h
[modify] https://crrev.com/5adc955230fdddec66eb327d8cdbe5004a3c34c3/content/browser/resources/accessibility/accessibility.css
[modify] https://crrev.com/5adc955230fdddec66eb327d8cdbe5004a3c34c3/content/browser/resources/accessibility/accessibility.html
[modify] https://crrev.com/5adc955230fdddec66eb327d8cdbe5004a3c34c3/content/browser/resources/accessibility/accessibility.js

Project Member

Comment 3 by bugdroid1@chromium.org, Dec 20 2016

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

commit 368ea13e43a18dec62a7f72610398a2f9757b1c9
Author: dmazzoni <dmazzoni@chromium.org>
Date: Tue Dec 20 08:22:42 2016

Add support for faster, more limited accessibility modes.

See bug for context. This patch begins the implementation of
more limited accessibility modes by only fetching a subset of
accessibility attributes from Blink unless more are explicitly
needed.

Only Windows is affected initially. By default now when
accessibility support is enabled on Windows, only a few
key accessibility attributes are fetched, like role, state, name,
value, and location. As individual APIs are accessed that go
beyond these, Chrome's accessibility mode is automatically
changed to start fetching more.

Screen readers are unaffected by this change. I manually
tested JAWS and NVDA.

Password managers and single-sign-on software should
continue to work fine, but users should experience a
performance boost.

BUG= 672205 

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

[modify] https://crrev.com/368ea13e43a18dec62a7f72610398a2f9757b1c9/content/browser/accessibility/accessibility_mode_browsertest.cc
[modify] https://crrev.com/368ea13e43a18dec62a7f72610398a2f9757b1c9/content/browser/accessibility/browser_accessibility_state_impl.cc
[modify] https://crrev.com/368ea13e43a18dec62a7f72610398a2f9757b1c9/content/browser/accessibility/browser_accessibility_win.cc
[modify] https://crrev.com/368ea13e43a18dec62a7f72610398a2f9757b1c9/content/browser/renderer_host/legacy_render_widget_host_win.cc
[modify] https://crrev.com/368ea13e43a18dec62a7f72610398a2f9757b1c9/content/renderer/accessibility/blink_ax_tree_source.cc
[modify] https://crrev.com/368ea13e43a18dec62a7f72610398a2f9757b1c9/content/renderer/accessibility/blink_ax_tree_source.h
[modify] https://crrev.com/368ea13e43a18dec62a7f72610398a2f9757b1c9/content/renderer/accessibility/render_accessibility_impl.cc
[modify] https://crrev.com/368ea13e43a18dec62a7f72610398a2f9757b1c9/content/renderer/accessibility/render_accessibility_impl.h
[modify] https://crrev.com/368ea13e43a18dec62a7f72610398a2f9757b1c9/content/renderer/accessibility/render_accessibility_impl_browsertest.cc
[modify] https://crrev.com/368ea13e43a18dec62a7f72610398a2f9757b1c9/content/renderer/render_frame_impl.cc
[modify] https://crrev.com/368ea13e43a18dec62a7f72610398a2f9757b1c9/tools/metrics/histograms/histograms.xml

Project Member

Comment 4 by bugdroid1@chromium.org, Jan 11 2017

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

commit 451daad4f60a3ca0f7508097309d11a15da480fe
Author: dmazzoni <dmazzoni@chromium.org>
Date: Wed Jan 11 01:26:22 2017

Don't enable accessibility just because IAccessible2 APIs are queried.

Chrome now has support for more fine-grained accessibility modes.
Individual accessibility APIs now enable parts of accessibility support
as needed, but log data is suggesting that lots of clients are calling
QueryService with IAccessible2 as the IID argument even though they
don't need full accessibility support, so let's delete this particular
trigger.

BUG= 672205 ,644647

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

[modify] https://crrev.com/451daad4f60a3ca0f7508097309d11a15da480fe/content/browser/accessibility/browser_accessibility_win.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Jan 18 2017

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

commit a83d31c69942f949f7970e607f8394e060444ecd
Author: dmazzoni <dmazzoni@chromium.org>
Date: Wed Jan 18 16:26:02 2017

Relax another case where screen reader support was enabled.

See previous changes on this bug for context. Take another
case where we were enabling full accessibility support, and
only enable limited web accessibility support instead.
Full screen reader support will be enabled automatically
as more advanced APIs are accessed.

This change only affects Windows.

BUG= 672205 , 644647

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

[modify] https://crrev.com/a83d31c69942f949f7970e607f8394e060444ecd/content/browser/accessibility/browser_accessibility_manager_win.cc

Logs are looking good, this is working on Windows.

We need to do Android next.

Blocking: 633733
Labels: NewComponent-Accessibility NewComponent-Accessibility-Compatibility
Components: UI>Accessibility>Compatibility
Components: -UI>Accessibility
Labels: -newcomponent-accessibility-compatibility -newcomponent-accessibility
Blocking: 428494
Labels: -M-57
Status: Fixed (was: Started)
Closing bug as it served its purpose on Windows. We may need to do something else on Android.

Sign in to add a comment