Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Issue 1761633002: One accessibility tree per frame. (Closed)

Created:
4 years, 9 months ago by dmazzoni
Modified:
4 years, 9 months ago
Reviewers:
David Tseng, dcheng, nasko
CC:
aboxhall, aboxhall+watch_chromium.org, blink-reviews, blink-reviews-dom_chromium.org, chromium-reviews, creis+watch_chromium.org, darin-cc_chromium.org, dglazkov+blink, dmazzoni+watch_chromium.org, dtseng+watch_chromium.org, eae+blinkwatch, jam, je_julie, mkwst+moarreviews-renderer_chromium.org, mlamouri+watch-content_chromium.org, nasko+codewatch_chromium.org, nektar+watch_chromium.org, nektarios, rwlbuis, sof, yuzo+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

One accessibility tree per frame. Historically WebKit had a single accessibility tree that spanned all frames. That simplified a lot of things like focus tracking. The introduction of local and remote frames to support out-of-process iframes and <webview> have added back a lot of that complexity. Having accessibility trees span some frames, but not necessarily all of them, means there were a lot of special cases to test. To simplify things, this patch makes it so that we now have exactly one accessibility tree per frame. On the Blink side that means one AXObjectCache per document, rather than trying to attach it to the topDocument. The only exception is a page popup, we'll continue to use the accessibility tree of the pagePopupOwner since it will always be local. On the Chromium side we'll have one BrowserAccessibilityManager per frame. The focused frame is now retrieved directly from the FrameTree, which solves several tricky issues that were previously race conditions when moving focus between a frame and a cross-process frame. Depends on: https://codereview.chromium.org/1762143002/ BUG=532249 CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_site_isolation Committed: https://crrev.com/f27bf8991392753e2a53d9869bffaeb827b5a4eb Cr-Commit-Position: refs/heads/master@{#380416}

Patch Set 1 #

Patch Set 2 : Implement automation API support #

Patch Set 3 : Update AXTreeData when the focused frame changes #

Patch Set 4 : Get rid of iframe-related layout tests #

Patch Set 5 : Update layout test expectations #

Patch Set 6 : Add automation API test #

Patch Set 7 : Fix focus events on Windows #

Patch Set 8 : Fix focus events on Windows #

Patch Set 9 : Rebase #

Patch Set 10 : Fix Android #

Total comments: 32

Patch Set 11 : Rebase, Address most feedback #

Patch Set 12 : Add ChromeVox test traversing iframes #

Total comments: 4

Patch Set 13 : Rebase, clean up usage of topDocument / axObjectCacheOwner #

Patch Set 14 : Fix one Mac test expectation #

Total comments: 2

Patch Set 15 : Rebase, DCHECK(focused_frame) #

Patch Set 16 : Fix is-richly-editable test #

Unified diffs Side-by-side diffs Delta from patch set Stats (+452 lines, -940 lines) Patch
M chrome/browser/extensions/api/automation/automation_apitest.cc View 1 2 3 4 5 1 chunk +7 lines, -0 lines 0 comments Download
M chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_predicate.js View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +3 lines, -1 line 0 comments Download
M chrome/browser/resources/chromeos/chromevox/cvox2/background/background_test.extjs View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 chunks +45 lines, -1 line 0 comments Download
M chrome/common/extensions/chrome_extension_messages.h View 1 1 chunk +1 line, -0 lines 0 comments Download
M chrome/renderer/extensions/automation_internal_custom_bindings.h View 1 2 3 4 5 6 7 8 9 10 3 chunks +5 lines, -0 lines 0 comments Download
M chrome/renderer/extensions/automation_internal_custom_bindings.cc View 1 2 3 4 5 6 7 8 9 10 5 chunks +69 lines, -1 line 0 comments Download
A chrome/test/data/extensions/api_test/automation/sites/iframe_inner.html View 1 2 3 4 5 1 chunk +3 lines, -0 lines 0 comments Download
A chrome/test/data/extensions/api_test/automation/sites/iframe_outer.html View 1 2 3 4 5 6 7 8 9 10 1 chunk +3 lines, -0 lines 0 comments Download
A + chrome/test/data/extensions/api_test/automation/tests/desktop/focus_iframe.html View 1 2 3 4 5 1 chunk +1 line, -1 line 0 comments Download
A chrome/test/data/extensions/api_test/automation/tests/desktop/focus_iframe.js View 1 2 3 4 5 1 chunk +37 lines, -0 lines 0 comments Download
M content/browser/accessibility/accessibility_tree_formatter_blink.cc View 2 chunks +2 lines, -2 lines 0 comments Download
M content/browser/accessibility/browser_accessibility_android.cc View 1 2 3 4 5 6 7 8 9 10 2 chunks +6 lines, -3 lines 0 comments Download
M content/browser/accessibility/browser_accessibility_manager.h View 1 2 3 4 5 6 7 8 2 chunks +22 lines, -0 lines 0 comments Download
M content/browser/accessibility/browser_accessibility_manager.cc View 1 2 3 4 5 6 7 8 6 chunks +73 lines, -14 lines 0 comments Download
M content/browser/accessibility/browser_accessibility_manager_android.h View 1 2 3 4 5 6 7 8 9 2 chunks +4 lines, -0 lines 0 comments Download
M content/browser/accessibility/browser_accessibility_manager_android.cc View 1 2 3 4 5 6 7 8 9 6 chunks +20 lines, -5 lines 0 comments Download
M content/browser/accessibility/browser_accessibility_manager_win.h View 1 2 3 4 5 6 7 8 9 2 chunks +2 lines, -9 lines 0 comments Download
M content/browser/accessibility/browser_accessibility_manager_win.cc View 1 2 3 4 5 6 7 8 9 10 5 chunks +21 lines, -74 lines 0 comments Download
M content/browser/frame_host/frame_tree.cc View 1 2 7 8 1 chunk +5 lines, -0 lines 0 comments Download
M content/browser/frame_host/render_frame_host_impl.h View 1 2 7 8 3 chunks +9 lines, -2 lines 0 comments Download
M content/browser/frame_host/render_frame_host_impl.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5 chunks +40 lines, -5 lines 0 comments Download
M content/browser/renderer_host/render_widget_host_view_android.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +4 lines, -11 lines 0 comments Download
M content/common/accessibility_messages.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +1 line, -0 lines 0 comments Download
M content/renderer/accessibility/blink_ax_tree_source.cc View 1 2 3 4 5 6 7 8 9 10 3 chunks +13 lines, -5 lines 0 comments Download
M content/renderer/accessibility/renderer_accessibility_browsertest.cc View 1 chunk +0 lines, -55 lines 0 comments Download
M content/test/data/accessibility/event/listbox-focus-expected-mac.txt View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +0 lines, -2 lines 0 comments Download
M content/test/data/accessibility/html/iframe-coordinates-expected-android.txt View 1 2 3 4 5 6 7 8 9 1 chunk +3 lines, -3 lines 0 comments Download
M content/test/data/accessibility/html/iframe-coordinates-expected-blink.txt View 1 chunk +3 lines, -3 lines 0 comments Download
M content/test/data/accessibility/html/iframe-expected-android.txt View 1 2 3 4 5 6 7 8 9 1 chunk +1 line, -1 line 0 comments Download
M content/test/data/accessibility/html/iframe-expected-blink.txt View 1 chunk +2 lines, -2 lines 0 comments Download
M content/test/data/accessibility/html/iframe-presentational-expected-android.txt View 1 2 3 4 5 6 7 8 9 1 chunk +1 line, -1 line 0 comments Download
M content/test/data/accessibility/html/modal-dialog-in-iframe-closed-expected-android.txt View 1 2 3 4 5 6 7 8 9 1 chunk +2 lines, -2 lines 0 comments Download
M third_party/WebKit/LayoutTests/TestExpectations View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +0 lines, -1 line 0 comments Download
D third_party/WebKit/LayoutTests/accessibility/deleting-iframe-destroys-axcache.html View 1 2 3 1 chunk +0 lines, -77 lines 0 comments Download
D third_party/WebKit/LayoutTests/accessibility/deleting-iframe-destroys-axcache-expected.txt View 1 2 3 1 chunk +0 lines, -50 lines 0 comments Download
M third_party/WebKit/LayoutTests/accessibility/element-role-mapping-normal.html View 1 2 3 1 chunk +2 lines, -4 lines 0 comments Download
M third_party/WebKit/LayoutTests/accessibility/element-role-mapping-normal-expected.txt View 1 2 3 4 2 chunks +0 lines, -6 lines 0 comments Download
D third_party/WebKit/LayoutTests/accessibility/event-on-deleted-iframe-causes-crash.html View 1 2 3 1 chunk +0 lines, -35 lines 0 comments Download
D third_party/WebKit/LayoutTests/accessibility/event-on-deleted-iframe-causes-crash-expected.txt View 1 2 3 1 chunk +0 lines, -4 lines 0 comments Download
M third_party/WebKit/LayoutTests/accessibility/is-richly-editable.html View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +14 lines, -33 lines 0 comments Download
M third_party/WebKit/LayoutTests/accessibility/is-richly-editable-expected.txt View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 chunks +4 lines, -7 lines 0 comments Download
D third_party/WebKit/LayoutTests/accessibility/loading-iframe-sends-notification.html View 1 2 3 1 chunk +0 lines, -65 lines 0 comments Download
D third_party/WebKit/LayoutTests/accessibility/loading-iframe-sends-notification-expected.txt View 1 2 3 1 chunk +0 lines, -18 lines 0 comments Download
D third_party/WebKit/LayoutTests/accessibility/loading-iframe-updates-axtree.html View 1 2 3 1 chunk +0 lines, -61 lines 0 comments Download
D third_party/WebKit/LayoutTests/accessibility/loading-iframe-updates-axtree-expected.txt View 1 2 3 1 chunk +0 lines, -21 lines 0 comments Download
D third_party/WebKit/LayoutTests/accessibility/scroll-to-global-point-iframe.html View 1 2 3 1 chunk +0 lines, -63 lines 0 comments Download
D third_party/WebKit/LayoutTests/accessibility/scroll-to-global-point-iframe-expected.txt View 1 2 3 1 chunk +0 lines, -17 lines 0 comments Download
D third_party/WebKit/LayoutTests/accessibility/scroll-to-global-point-iframe-nested.html View 1 2 3 1 chunk +0 lines, -82 lines 0 comments Download
D third_party/WebKit/LayoutTests/accessibility/scroll-to-global-point-iframe-nested-expected.txt View 1 2 3 1 chunk +0 lines, -18 lines 0 comments Download
D third_party/WebKit/LayoutTests/accessibility/scroll-to-make-visible-iframe.html View 1 2 3 1 chunk +0 lines, -66 lines 0 comments Download
D third_party/WebKit/LayoutTests/accessibility/scroll-to-make-visible-iframe-expected.txt View 1 2 3 1 chunk +0 lines, -15 lines 0 comments Download
M third_party/WebKit/Source/core/dom/Document.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +7 lines, -24 lines 0 comments Download
M third_party/WebKit/Source/core/frame/FrameView.h View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +0 lines, -1 line 0 comments Download
M third_party/WebKit/Source/core/frame/FrameView.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 2 chunks +0 lines, -10 lines 0 comments Download
M third_party/WebKit/Source/core/frame/LocalFrame.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +0 lines, -1 line 0 comments Download
M third_party/WebKit/Source/core/frame/LocalFrame.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +0 lines, -9 lines 0 comments Download
M third_party/WebKit/Source/core/html/HTMLDialogElement.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +3 lines, -4 lines 0 comments Download
M third_party/WebKit/Source/modules/accessibility/AXLayoutObject.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +0 lines, -1 line 0 comments Download
M third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 4 chunks +2 lines, -31 lines 0 comments Download
M third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +3 lines, -12 lines 0 comments Download
M third_party/WebKit/Source/web/WebAXObject.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +1 line, -1 line 0 comments Download
M ui/accessibility/ax_tree_data.h View 7 8 1 chunk +4 lines, -0 lines 0 comments Download
M ui/accessibility/ax_tree_data.cc View 7 8 3 chunks +4 lines, -0 lines 0 comments Download

Depends on Patchset:

Messages

Total messages: 41 (18 generated)
dmazzoni
4 years, 9 months ago (2016-03-04 00:46:37 UTC) #3
David Tseng
I reviewed mostly the chrome browser changes. https://codereview.chromium.org/1761633002/diff/180001/chrome/renderer/extensions/automation_internal_custom_bindings.cc File chrome/renderer/extensions/automation_internal_custom_bindings.cc (right): https://codereview.chromium.org/1761633002/diff/180001/chrome/renderer/extensions/automation_internal_custom_bindings.cc#newcode145 chrome/renderer/extensions/automation_internal_custom_bindings.cc:145: ui::AXNode* FindNodeWithChildTreeId(ui::AXNode* ...
4 years, 9 months ago (2016-03-04 16:50:21 UTC) #6
dmazzoni
I owe you a test of walking in and out of an iframe, but otherwise ...
4 years, 9 months ago (2016-03-07 21:35:32 UTC) #7
dmazzoni
https://codereview.chromium.org/1761633002/diff/180001/chrome/test/data/extensions/api_test/automation/tests/desktop/focus_iframe.js File chrome/test/data/extensions/api_test/automation/tests/desktop/focus_iframe.js (right): https://codereview.chromium.org/1761633002/diff/180001/chrome/test/data/extensions/api_test/automation/tests/desktop/focus_iframe.js#newcode35 chrome/test/data/extensions/api_test/automation/tests/desktop/focus_iframe.js:35: ]; On 2016/03/04 16:50:20, David Tseng wrote: > Could ...
4 years, 9 months ago (2016-03-07 23:12:39 UTC) #8
David Tseng
lgtm
4 years, 9 months ago (2016-03-08 00:20:06 UTC) #9
dcheng
1) Does this mean we can get rid of things like https://code.google.com/p/chromium/codesearch#chromium/src/third_party/WebKit/Source/core/frame/LocalFrame.cpp&l=395&cl=GROK? Or do we ...
4 years, 9 months ago (2016-03-08 01:14:27 UTC) #10
dmazzoni
On 2016/03/08 01:14:27, dcheng wrote: > 1) Does this mean we can get rid of ...
4 years, 9 months ago (2016-03-08 18:13:19 UTC) #11
dmazzoni
https://codereview.chromium.org/1761633002/diff/220001/third_party/WebKit/Source/core/dom/Document.cpp File third_party/WebKit/Source/core/dom/Document.cpp (right): https://codereview.chromium.org/1761633002/diff/220001/third_party/WebKit/Source/core/dom/Document.cpp#newcode2323 third_party/WebKit/Source/core/dom/Document.cpp:2323: Document* top = const_cast<Document*>(this); On 2016/03/08 01:14:27, dcheng wrote: ...
4 years, 9 months ago (2016-03-08 18:51:04 UTC) #12
dcheng
LGTM! \(^o^)/
4 years, 9 months ago (2016-03-08 20:08:29 UTC) #13
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1761633002/260001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1761633002/260001
4 years, 9 months ago (2016-03-08 20:31:32 UTC) #16
commit-bot: I haz the power
Try jobs failed on following builders: chromium_presubmit on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/chromium_presubmit/builds/154513)
4 years, 9 months ago (2016-03-08 20:43:43 UTC) #18
dmazzoni
+nasko for owners review of: content/browser/frame_host content/browser/renderer_host
4 years, 9 months ago (2016-03-08 20:47:41 UTC) #20
nasko
content/browser/*_host LGTM with a nit. https://codereview.chromium.org/1761633002/diff/260001/content/browser/frame_host/render_frame_host_impl.cc File content/browser/frame_host/render_frame_host_impl.cc (right): https://codereview.chromium.org/1761633002/diff/260001/content/browser/frame_host/render_frame_host_impl.cc#newcode2671 content/browser/frame_host/render_frame_host_impl.cc:2671: if (!focused_frame) Is this ...
4 years, 9 months ago (2016-03-09 22:44:37 UTC) #21
dmazzoni
https://codereview.chromium.org/1761633002/diff/260001/content/browser/frame_host/render_frame_host_impl.cc File content/browser/frame_host/render_frame_host_impl.cc (right): https://codereview.chromium.org/1761633002/diff/260001/content/browser/frame_host/render_frame_host_impl.cc#newcode2671 content/browser/frame_host/render_frame_host_impl.cc:2671: if (!focused_frame) On 2016/03/09 22:44:37, nasko (slow) wrote: > ...
4 years, 9 months ago (2016-03-09 22:55:29 UTC) #22
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1761633002/300001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1761633002/300001
4 years, 9 months ago (2016-03-10 04:52:34 UTC) #25
commit-bot: I haz the power
Try jobs failed on following builders: linux_android_rel_ng on tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/linux_android_rel_ng/builds/36359)
4 years, 9 months ago (2016-03-10 05:45:24 UTC) #27
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1761633002/300001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1761633002/300001
4 years, 9 months ago (2016-03-10 06:36:58 UTC) #29
commit-bot: I haz the power
Try jobs failed on following builders: linux_chromium_rel_ng on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_rel_ng/builds/194476)
4 years, 9 months ago (2016-03-10 09:06:46 UTC) #31
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1761633002/300001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1761633002/300001
4 years, 9 months ago (2016-03-10 09:26:50 UTC) #33
commit-bot: I haz the power
Try jobs failed on following builders: linux_chromium_rel_ng on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_rel_ng/builds/194516)
4 years, 9 months ago (2016-03-10 11:29:02 UTC) #35
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1761633002/300001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1761633002/300001
4 years, 9 months ago (2016-03-10 14:44:28 UTC) #37
commit-bot: I haz the power
Committed patchset #16 (id:300001)
4 years, 9 months ago (2016-03-10 15:52:11 UTC) #39
commit-bot: I haz the power
4 years, 9 months ago (2016-03-10 15:53:52 UTC) #41
Message was sent while issue was closed.
Patchset 16 (id:??) landed as
https://crrev.com/f27bf8991392753e2a53d9869bffaeb827b5a4eb
Cr-Commit-Position: refs/heads/master@{#380416}

Powered by Google App Engine
This is Rietveld 408576698