New issue
Advanced search Search tips

Issue 808061 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner: ----
Closed: Feb 2018
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug
Team-Accessibility



Sign in to add a comment

Related nodes not up to date when processing events for their related by sources

Project Member Reported by dtseng@chromium.org, Feb 1 2018

Issue description


Suppose we have event a, which updates node a, fololowed by event b, which updates node b.
Furthermore, let node a have a relationship with node b. For example, node a has an active descendant node b.
Event a and event b occur within the same event loop message.

Currently, if a client, such as BrowserAccessibility or automation, examine the tree after event a gets applied and fired, but before event b, node b will be out of date. In the above example, if the active descendant b changes an attribute via event b, the client won't see it when event a triggers.

As a consequence, events like active descendant changed cause problems if the page author happens to set attributes after setting active descendant. This isn't limited to just active descendants, but to all relations (including relations of relations).
 
Summary: Related nodes not up to date when processing events for their related by sources (was: Blink does not fire events for dependent relations)
Project Member

Comment 2 by bugdroid1@chromium.org, Feb 7 2018

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

commit e3b187672dd0ba2aeda38b5226992e8411ef3304
Author: David Tseng <dtseng@chromium.org>
Date: Wed Feb 07 02:25:01 2018

Add hooks for AXTreeDelegate when a relation target changes


Problem
Suppose a node a has an active descendant b. A page author might change |b| to aria-selected="true" immediately after setting |b| to be the active descendant.
As a result, we have the events and actions:
active descendant changed on |a|
client gets event on |a| and emits output
attribute changed on |b|
client gets attribute changed on |b| but focus remains over |a|

Solution

Let the client know about changes in its related nodes.
For example, changes to |b| would cause an event on |a|.

Bug:  808061 
Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation
Change-Id: I58a3d99d3187db348320223f0bde588015ab6f55
Reviewed-on: https://chromium-review.googlesource.com/899862
Commit-Queue: David Tseng <dtseng@chromium.org>
Reviewed-by: Dominic Mazzoni <dmazzoni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#534885}
[modify] https://crrev.com/e3b187672dd0ba2aeda38b5226992e8411ef3304/chrome/browser/resources/chromeos/chromevox/cvox2/background/background_test.extjs
[modify] https://crrev.com/e3b187672dd0ba2aeda38b5226992e8411ef3304/chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js
[modify] https://crrev.com/e3b187672dd0ba2aeda38b5226992e8411ef3304/chrome/renderer/extensions/automation_ax_tree_wrapper.cc
[modify] https://crrev.com/e3b187672dd0ba2aeda38b5226992e8411ef3304/content/browser/accessibility/browser_accessibility_manager_android.cc
[modify] https://crrev.com/e3b187672dd0ba2aeda38b5226992e8411ef3304/content/browser/accessibility/browser_accessibility_manager_mac.mm
[modify] https://crrev.com/e3b187672dd0ba2aeda38b5226992e8411ef3304/content/browser/accessibility/browser_accessibility_manager_win.cc
[modify] https://crrev.com/e3b187672dd0ba2aeda38b5226992e8411ef3304/ui/accessibility/ax_event_generator.cc
[modify] https://crrev.com/e3b187672dd0ba2aeda38b5226992e8411ef3304/ui/accessibility/ax_event_generator.h
[modify] https://crrev.com/e3b187672dd0ba2aeda38b5226992e8411ef3304/ui/accessibility/ax_event_generator_unittest.cc
[modify] https://crrev.com/e3b187672dd0ba2aeda38b5226992e8411ef3304/ui/accessibility/ax_tree.cc
[modify] https://crrev.com/e3b187672dd0ba2aeda38b5226992e8411ef3304/ui/accessibility/ax_tree.h

Project Member

Comment 3 by bugdroid1@chromium.org, Feb 7 2018

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

commit a9e3124b7b00bcce07edf062b27dc107d5f4b401
Author: Andrey Kosyakov <caseq@chromium.org>
Date: Wed Feb 07 21:39:08 2018

Revert "Add hooks for AXTreeDelegate when a relation target changes"

This reverts commit e3b187672dd0ba2aeda38b5226992e8411ef3304.

Reason for revert: this likely broke telemetry_perf_unittests on Linux debug bots: 
https://ci.chromium.org/buildbot/chromium.linux/Linux%20Tests%20%28dbg%29%281%29/70144

To reproduce, run ./tools/perf/run_tests --browser=debug benchmarks.system_health_smoke_test.SystemHealthBenchmarkSmokeTest.system_health.memory_desktop.browse_accessibility:tech:codesearch

Original change's description:
> Add hooks for AXTreeDelegate when a relation target changes
> 
> 
> Problem
> Suppose a node a has an active descendant b. A page author might change |b| to aria-selected="true" immediately after setting |b| to be the active descendant.
> As a result, we have the events and actions:
> active descendant changed on |a|
> client gets event on |a| and emits output
> attribute changed on |b|
> client gets attribute changed on |b| but focus remains over |a|
> 
> Solution
> 
> Let the client know about changes in its related nodes.
> For example, changes to |b| would cause an event on |a|.
> 
> Bug:  808061 
> Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation
> Change-Id: I58a3d99d3187db348320223f0bde588015ab6f55
> Reviewed-on: https://chromium-review.googlesource.com/899862
> Commit-Queue: David Tseng <dtseng@chromium.org>
> Reviewed-by: Dominic Mazzoni <dmazzoni@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#534885}

TBR=dmazzoni@chromium.org,dtseng@chromium.org,nektar@chromium.org,aleventhal@chromium.org

Change-Id: Icc230ef0afa0f8b0828c573ec18c5a2eb13eeed9
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug:  808061 
Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation
Reviewed-on: https://chromium-review.googlesource.com/906844
Reviewed-by: Andrey Kosyakov <caseq@chromium.org>
Commit-Queue: Andrey Kosyakov <caseq@chromium.org>
Cr-Commit-Position: refs/heads/master@{#535154}
[modify] https://crrev.com/a9e3124b7b00bcce07edf062b27dc107d5f4b401/chrome/browser/resources/chromeos/chromevox/cvox2/background/background_test.extjs
[modify] https://crrev.com/a9e3124b7b00bcce07edf062b27dc107d5f4b401/chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js
[modify] https://crrev.com/a9e3124b7b00bcce07edf062b27dc107d5f4b401/chrome/renderer/extensions/automation_ax_tree_wrapper.cc
[modify] https://crrev.com/a9e3124b7b00bcce07edf062b27dc107d5f4b401/content/browser/accessibility/browser_accessibility_manager_android.cc
[modify] https://crrev.com/a9e3124b7b00bcce07edf062b27dc107d5f4b401/content/browser/accessibility/browser_accessibility_manager_mac.mm
[modify] https://crrev.com/a9e3124b7b00bcce07edf062b27dc107d5f4b401/content/browser/accessibility/browser_accessibility_manager_win.cc
[modify] https://crrev.com/a9e3124b7b00bcce07edf062b27dc107d5f4b401/ui/accessibility/ax_event_generator.cc
[modify] https://crrev.com/a9e3124b7b00bcce07edf062b27dc107d5f4b401/ui/accessibility/ax_event_generator.h
[modify] https://crrev.com/a9e3124b7b00bcce07edf062b27dc107d5f4b401/ui/accessibility/ax_event_generator_unittest.cc
[modify] https://crrev.com/a9e3124b7b00bcce07edf062b27dc107d5f4b401/ui/accessibility/ax_tree.cc
[modify] https://crrev.com/a9e3124b7b00bcce07edf062b27dc107d5f4b401/ui/accessibility/ax_tree.h

Project Member

Comment 4 by bugdroid1@chromium.org, Feb 19 2018

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

commit ef6b480df5da00a479da222bb801596168a9c510
Author: David Tseng <dtseng@chromium.org>
Date: Mon Feb 19 12:48:42 2018

Reland: Fire events on relation sources

Fixes performance regression by only sending event for non *created* tree changes.

 Bug:  808061 
Original change's description:
> Add hooks for AXTreeDelegate when a relation target changes
>
>
> Problem
> Suppose a node a has an active descendant b. A page author might change |b| to aria-selected="true" immediately after setting |b| to be the active descendant.
> As a result, we have the events and actions:
> active descendant changed on |a|
> client gets event on |a| and emits output
> attribute changed on |b|
> client gets attribute changed on |b| but focus remains over |a|
>
> Solution
>
> Let the client know about changes in its related nodes.
> For example, changes to |b| would cause an event on |a|.
>
> Bug:  808061 
> Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation
> Change-Id: I58a3d99d3187db348320223f0bde588015ab6f55
> Reviewed-on: https://chromium-review.googlesource.com/899862
> Commit-Queue: David Tseng <dtseng@chromium.org>
> Reviewed-by: Dominic Mazzoni <dmazzoni@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#534885}

TBR=dmazzoni@chromium.org,dtseng@chromium.org,nektar@chromium.org,aleventhal@chromium.org

Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation
Change-Id: Iaf04a51602e091f9bb9767a6bb56e4a5177540d3
Reviewed-on: https://chromium-review.googlesource.com/924769
Reviewed-by: David Tseng <dtseng@chromium.org>
Commit-Queue: David Tseng <dtseng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#537636}
[modify] https://crrev.com/ef6b480df5da00a479da222bb801596168a9c510/chrome/browser/resources/chromeos/chromevox/cvox2/background/background_test.extjs
[modify] https://crrev.com/ef6b480df5da00a479da222bb801596168a9c510/chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js
[modify] https://crrev.com/ef6b480df5da00a479da222bb801596168a9c510/chrome/renderer/extensions/automation_ax_tree_wrapper.cc
[modify] https://crrev.com/ef6b480df5da00a479da222bb801596168a9c510/content/browser/accessibility/browser_accessibility_manager_android.cc
[modify] https://crrev.com/ef6b480df5da00a479da222bb801596168a9c510/content/browser/accessibility/browser_accessibility_manager_mac.mm
[modify] https://crrev.com/ef6b480df5da00a479da222bb801596168a9c510/content/browser/accessibility/browser_accessibility_manager_win.cc
[modify] https://crrev.com/ef6b480df5da00a479da222bb801596168a9c510/ui/accessibility/ax_event_generator.cc
[modify] https://crrev.com/ef6b480df5da00a479da222bb801596168a9c510/ui/accessibility/ax_event_generator.h
[modify] https://crrev.com/ef6b480df5da00a479da222bb801596168a9c510/ui/accessibility/ax_event_generator_unittest.cc
[modify] https://crrev.com/ef6b480df5da00a479da222bb801596168a9c510/ui/accessibility/ax_tree.cc
[modify] https://crrev.com/ef6b480df5da00a479da222bb801596168a9c510/ui/accessibility/ax_tree.h

Comment 5 by dtseng@chromium.org, Feb 20 2018

Status: fixed (was: Available)

Sign in to add a comment