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

Issue 1713723002: Implement accessibility support for CSS-transformed iframes. (Closed)

Created:
4 years, 10 months ago by dmazzoni
Modified:
4 years, 8 months ago
CC:
aboxhall, aboxhall+watch_chromium.org, blink-reviews, blink-reviews-api_chromium.org, cc-bugs_chromium.org, chromium-apps-reviews_chromium.org, chromium-reviews, creis+watch_chromium.org, darin-cc_chromium.org, dglazkov+blink, dmazzoni+watch_chromium.org, dtseng+watch_chromium.org, extensions-reviews_chromium.org, je_julie, mkwst+moarreviews-renderer_chromium.org, mlamouri+watch-content_chromium.org, nasko+codewatch_chromium.org, nektarios, nektar+watch_chromium.org, 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

Implement accessibility support for CSS-transformed iframes. This patch adds a gfx::Transform to ui::AXNodeData so that any accessibility node could potentially use a matrix transform to represent its offset relative to its parent window, rather than a simple translation. Currently, we only use this field to represent the transform between a frame's local coordinates and the coordinates of its local frame root. In the future we may use transformations elsewhere in the accessibility tree, this may be a lot more efficient than storing frame-relative coordinates for everything. In addition, this change also handles cross-process iframes by calling a delegate function implemented by RenderFrameHostImpl to convert a point in a remote frame's coordinate space to the global coordinate space. BUG=551601 CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_site_isolation Committed: https://crrev.com/0aec386227a2a2ea357ccea031b8d91dc4a853b1 Cr-Commit-Position: refs/heads/master@{#383534}

Patch Set 1 #

Patch Set 2 : Works now, but requires timeout hack #

Patch Set 3 : Add missing dependency #

Patch Set 4 : Fix skia header file compile issues #

Patch Set 5 : Fixed another skia dependency #

Total comments: 8

Patch Set 6 : Make gfx::Transform into a scoped_ptr to reduce dependencies #

Patch Set 7 : Adds test for scrolled and transformed iframe too #

Patch Set 8 : localToAbsoluteTransform #

Patch Set 9 : Rebase #

Patch Set 10 : Rebase #

Total comments: 10

Patch Set 11 : Simplify coordinate transformation code, add test for double-nested frame #

Patch Set 12 : Return gfx::Rect from AccessibilityTransformToRootCoordSpace, get rid of ifdefed-out code accidenta… #

Total comments: 8

Patch Set 13 : Added test for nested cross-process frames too #

Patch Set 14 : Rebase #

Total comments: 11

Patch Set 15 : Remove unneeded null checks #

Patch Set 16 : Fix unittest #

Patch Set 17 : Fix gn build #

Unified diffs Side-by-side diffs Delta from patch set Stats (+393 lines, -87 lines) Patch
M chrome/common/extensions/chrome_extension_messages.h View 1 2 3 4 5 6 7 8 9 10 2 chunks +2 lines, -0 lines 0 comments Download
M content/browser/accessibility/accessibility_tree_formatter_blink.cc View 1 2 3 4 5 6 7 8 9 10 11 12 3 chunks +29 lines, -4 lines 0 comments Download
M content/browser/accessibility/browser_accessibility.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +39 lines, -28 lines 0 comments Download
M content/browser/accessibility/browser_accessibility_manager.h View 1 2 3 4 5 6 7 8 9 10 11 2 chunks +5 lines, -0 lines 0 comments Download
M content/browser/accessibility/browser_accessibility_manager_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 1 chunk +3 lines, -0 lines 0 comments Download
M content/browser/accessibility/dump_accessibility_browsertest_base.cc View 1 2 3 4 5 6 2 chunks +17 lines, -0 lines 0 comments Download
M content/browser/accessibility/dump_accessibility_tree_browsertest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +25 lines, -0 lines 0 comments Download
M content/browser/frame_host/render_frame_host_impl.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +3 lines, -0 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 15 2 chunks +20 lines, -0 lines 0 comments Download
M content/browser/frame_host/render_widget_host_view_child_frame.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +1 line, -0 lines 0 comments Download
M content/browser/frame_host/render_widget_host_view_child_frame.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +4 lines, -0 lines 0 comments Download
M content/browser/renderer_host/render_widget_host_view_base.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +1 line, -0 lines 0 comments Download
M content/browser/renderer_host/render_widget_host_view_base.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +4 lines, -0 lines 0 comments Download
M content/common/accessibility_messages.h View 1 2 3 4 5 6 7 8 9 10 2 chunks +2 lines, -0 lines 0 comments Download
M content/common/cc_messages.h View 1 2 3 4 5 6 7 8 9 1 chunk +0 lines, -10 lines 0 comments Download
M content/common/cc_messages.cc View 2 chunks +0 lines, -41 lines 0 comments Download
M content/public/common/BUILD.gn View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 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 11 12 13 1 chunk +4 lines, -1 line 0 comments Download
A content/test/data/accessibility/html/frame/box.html View 1 chunk +6 lines, -0 lines 0 comments Download
A content/test/data/accessibility/html/frame/nested-cross-process-frame.html View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +6 lines, -0 lines 0 comments Download
A content/test/data/accessibility/html/frame/nested-frame.html View 1 2 3 4 5 6 7 8 9 10 1 chunk +6 lines, -0 lines 0 comments Download
A content/test/data/accessibility/html/iframe-transform.html View 1 1 chunk +13 lines, -0 lines 0 comments Download
A content/test/data/accessibility/html/iframe-transform-cross-process.html View 1 2 3 4 5 6 1 chunk +13 lines, -0 lines 0 comments Download
A content/test/data/accessibility/html/iframe-transform-cross-process-expected-blink.txt View 1 2 3 4 5 6 7 8 9 10 1 chunk +7 lines, -0 lines 0 comments Download
A content/test/data/accessibility/html/iframe-transform-expected-blink.txt View 1 2 3 4 5 6 7 8 9 10 1 chunk +7 lines, -0 lines 0 comments Download
A content/test/data/accessibility/html/iframe-transform-nested.html View 1 2 3 4 5 6 7 8 9 10 1 chunk +11 lines, -0 lines 0 comments Download
A content/test/data/accessibility/html/iframe-transform-nested-cross-process.html View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +11 lines, -0 lines 0 comments Download
A content/test/data/accessibility/html/iframe-transform-nested-cross-process-expected-blink.txt View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +6 lines, -0 lines 0 comments Download
A content/test/data/accessibility/html/iframe-transform-nested-expected-blink.txt View 1 2 3 4 5 6 7 8 9 10 1 chunk +6 lines, -0 lines 0 comments Download
A content/test/data/accessibility/html/iframe-transform-scrolled.html View 1 2 3 4 5 6 1 chunk +13 lines, -0 lines 0 comments Download
A content/test/data/accessibility/html/iframe-transform-scrolled-expected-blink.txt View 1 2 3 4 5 6 7 8 9 10 1 chunk +6 lines, -0 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 1 chunk +1 line, -0 lines 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 15 2 chunks +18 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/modules/accessibility/AXObject.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 2 chunks +5 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/modules/accessibility/AXObject.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +5 lines, -0 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 2 chunks +9 lines, -0 lines 0 comments Download
M third_party/WebKit/public/web/WebAXObject.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 2 chunks +5 lines, -0 lines 0 comments Download
M ui/accessibility/BUILD.gn View 1 2 3 4 5 6 7 8 9 10 1 chunk +1 line, -0 lines 0 comments Download
M ui/accessibility/accessibility.gyp View 1 2 3 4 5 6 7 8 9 10 1 chunk +1 line, -0 lines 0 comments Download
M ui/accessibility/ax_node_data.h View 1 2 3 4 5 6 3 chunks +14 lines, -1 line 0 comments Download
M ui/accessibility/ax_node_data.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 5 chunks +10 lines, -2 lines 0 comments Download
M ui/gfx/ipc/gfx_param_traits.h View 1 2 3 4 5 6 7 8 9 2 chunks +11 lines, -0 lines 0 comments Download
M ui/gfx/ipc/gfx_param_traits.cc View 1 2 3 4 5 6 7 8 9 10 11 2 chunks +42 lines, -0 lines 0 comments Download

Messages

Total messages: 57 (16 generated)
dmazzoni
@kenrb: could you look at my use of TransformPointToRootCoordSpace? I'm not sure why it's not ...
4 years, 10 months ago (2016-02-18 21:12:14 UTC) #3
kenrb
On 2016/02/18 21:12:14, dmazzoni wrote: > @kenrb: could you look at my use of TransformPointToRootCoordSpace? ...
4 years, 10 months ago (2016-02-18 21:39:18 UTC) #4
dmazzoni
On 2016/02/18 21:39:18, kenrb wrote: > On 2016/02/18 21:12:14, dmazzoni wrote: > > @kenrb: could ...
4 years, 10 months ago (2016-02-18 23:44:08 UTC) #5
dmazzoni
+aboxhall (primary reviewer) +dcheng (messages files, WebKit/public) +jochen (components/)
4 years, 10 months ago (2016-02-18 23:46:53 UTC) #7
kenrb
On 2016/02/18 23:44:08, dmazzoni wrote: > On 2016/02/18 21:39:18, kenrb wrote: > > On 2016/02/18 ...
4 years, 10 months ago (2016-02-19 02:12:40 UTC) #8
aboxhall
https://codereview.chromium.org/1713723002/diff/80001/content/browser/accessibility/browser_accessibility.cc File content/browser/accessibility/browser_accessibility.cc (right): https://codereview.chromium.org/1713723002/diff/80001/content/browser/accessibility/browser_accessibility.cc#newcode885 content/browser/accessibility/browser_accessibility.cc:885: manager()->delegate()) { When would this be false? https://codereview.chromium.org/1713723002/diff/80001/content/test/data/accessibility/html/frame/box.html File ...
4 years, 10 months ago (2016-02-24 18:46:07 UTC) #9
dmazzoni
https://codereview.chromium.org/1713723002/diff/80001/content/browser/accessibility/browser_accessibility.cc File content/browser/accessibility/browser_accessibility.cc (right): https://codereview.chromium.org/1713723002/diff/80001/content/browser/accessibility/browser_accessibility.cc#newcode885 content/browser/accessibility/browser_accessibility.cc:885: manager()->delegate()) { On 2016/02/24 18:46:07, aboxhall wrote: > When ...
4 years, 10 months ago (2016-02-24 18:53:26 UTC) #10
danakj
https://codereview.chromium.org/1713723002/diff/80001/ui/accessibility/ax_node_data.h File ui/accessibility/ax_node_data.h (right): https://codereview.chromium.org/1713723002/diff/80001/ui/accessibility/ax_node_data.h#newcode116 ui/accessibility/ax_node_data.h:116: gfx::Transform transform; On 2016/02/24 18:53:26, dmazzoni wrote: > Any ...
4 years, 10 months ago (2016-02-24 19:31:45 UTC) #12
dmazzoni
On 2016/02/24 19:31:45, danakj wrote: > > It's too bad we don't have an optional<T> ...
4 years, 10 months ago (2016-02-24 19:37:41 UTC) #13
aboxhall
Leaving the memory discussion in Dana's much more capable hands - just one more question ...
4 years, 10 months ago (2016-02-24 19:38:21 UTC) #14
danakj
On 2016/02/24 19:37:41, dmazzoni wrote: > On 2016/02/24 19:31:45, danakj wrote: > > > It's ...
4 years, 10 months ago (2016-02-24 19:48:10 UTC) #15
kenrb
FYI: I recently added a helper class to content_browser_test_utils_internal.h to avoid the need for timeouts ...
4 years, 9 months ago (2016-02-29 14:54:46 UTC) #16
dmazzoni
On 2016/02/29 14:54:46, kenrb wrote: > FYI: I recently added a helper class to content_browser_test_utils_internal.h ...
4 years, 9 months ago (2016-02-29 23:19:59 UTC) #17
dmazzoni
https://codereview.chromium.org/1713723002/diff/80001/content/test/data/accessibility/html/frame/box.html File content/test/data/accessibility/html/frame/box.html (right): https://codereview.chromium.org/1713723002/diff/80001/content/test/data/accessibility/html/frame/box.html#newcode4 content/test/data/accessibility/html/frame/box.html:4: <div role="img" style="width: 200px; height: 200px; background-color: #fef;"></div> On ...
4 years, 9 months ago (2016-02-29 23:20:07 UTC) #18
dmazzoni
+chrishtr for core/layout/
4 years, 9 months ago (2016-03-01 23:28:12 UTC) #20
dmazzoni
Friendly ping
4 years, 9 months ago (2016-03-04 07:04:30 UTC) #21
jochen (gone - plz use gerrit)
you added me for components/ but there are no files touched in components/ anymore :)
4 years, 9 months ago (2016-03-04 12:57:46 UTC) #22
dmazzoni
On 2016/03/04 12:57:46, jochen wrote: > you added me for components/ but there are no ...
4 years, 9 months ago (2016-03-04 20:23:02 UTC) #25
dmazzoni
From discussion with dcheng: I need to add a test case for a remote frame ...
4 years, 9 months ago (2016-03-08 00:39:19 UTC) #26
dcheng
https://codereview.chromium.org/1713723002/diff/180001/content/browser/frame_host/render_frame_host_impl.cc File content/browser/frame_host/render_frame_host_impl.cc (right): https://codereview.chromium.org/1713723002/diff/180001/content/browser/frame_host/render_frame_host_impl.cc#newcode665 content/browser/frame_host/render_frame_host_impl.cc:665: *bounds = gfx::Rect(new_bounds.x(), new_bounds.y(), Unless there's something that requires ...
4 years, 9 months ago (2016-03-08 00:39:42 UTC) #27
dmazzoni
Ready for another look. https://codereview.chromium.org/1713723002/diff/180001/content/browser/frame_host/render_frame_host_impl.cc File content/browser/frame_host/render_frame_host_impl.cc (right): https://codereview.chromium.org/1713723002/diff/180001/content/browser/frame_host/render_frame_host_impl.cc#newcode665 content/browser/frame_host/render_frame_host_impl.cc:665: *bounds = gfx::Rect(new_bounds.x(), new_bounds.y(), On ...
4 years, 9 months ago (2016-03-16 21:38:14 UTC) #29
dcheng
https://codereview.chromium.org/1713723002/diff/180001/content/browser/frame_host/render_frame_host_impl.cc File content/browser/frame_host/render_frame_host_impl.cc (right): https://codereview.chromium.org/1713723002/diff/180001/content/browser/frame_host/render_frame_host_impl.cc#newcode665 content/browser/frame_host/render_frame_host_impl.cc:665: *bounds = gfx::Rect(new_bounds.x(), new_bounds.y(), On 2016/03/16 at 21:38:13, dmazzoni ...
4 years, 9 months ago (2016-03-16 21:48:31 UTC) #30
dmazzoni
https://codereview.chromium.org/1713723002/diff/180001/content/browser/frame_host/render_frame_host_impl.cc File content/browser/frame_host/render_frame_host_impl.cc (right): https://codereview.chromium.org/1713723002/diff/180001/content/browser/frame_host/render_frame_host_impl.cc#newcode665 content/browser/frame_host/render_frame_host_impl.cc:665: *bounds = gfx::Rect(new_bounds.x(), new_bounds.y(), On 2016/03/16 21:48:31, dcheng wrote: ...
4 years, 9 months ago (2016-03-16 21:53:34 UTC) #31
dcheng
https://codereview.chromium.org/1713723002/diff/220001/content/browser/accessibility/accessibility_tree_formatter_blink.cc File content/browser/accessibility/accessibility_tree_formatter_blink.cc (right): https://codereview.chromium.org/1713723002/diff/220001/content/browser/accessibility/accessibility_tree_formatter_blink.cc#newcode58 content/browser/accessibility/accessibility_tree_formatter_blink.cc:58: node.GetData().transform.get() && Nit: no .get() https://codereview.chromium.org/1713723002/diff/220001/content/test/data/accessibility/html/frame/nested-frame.html File content/test/data/accessibility/html/frame/nested-frame.html (right): ...
4 years, 9 months ago (2016-03-17 19:53:19 UTC) #32
dcheng
https://codereview.chromium.org/1713723002/diff/220001/content/test/data/accessibility/html/frame/nested-frame.html File content/test/data/accessibility/html/frame/nested-frame.html (right): https://codereview.chromium.org/1713723002/diff/220001/content/test/data/accessibility/html/frame/nested-frame.html#newcode4 content/test/data/accessibility/html/frame/nested-frame.html:4: <iframe width=250 height=250 src="box.html" style="border: 0; position: absolute; top: ...
4 years, 9 months ago (2016-03-17 19:54:39 UTC) #33
dcheng
On 2016/03/17 at 19:54:39, dcheng wrote: > https://codereview.chromium.org/1713723002/diff/220001/content/test/data/accessibility/html/frame/nested-frame.html > File content/test/data/accessibility/html/frame/nested-frame.html (right): > > https://codereview.chromium.org/1713723002/diff/220001/content/test/data/accessibility/html/frame/nested-frame.html#newcode4 ...
4 years, 9 months ago (2016-03-17 19:55:41 UTC) #34
dmazzoni
Added test for nested cross-process frames too! https://codereview.chromium.org/1713723002/diff/220001/content/browser/accessibility/accessibility_tree_formatter_blink.cc File content/browser/accessibility/accessibility_tree_formatter_blink.cc (right): https://codereview.chromium.org/1713723002/diff/220001/content/browser/accessibility/accessibility_tree_formatter_blink.cc#newcode58 content/browser/accessibility/accessibility_tree_formatter_blink.cc:58: node.GetData().transform.get() && ...
4 years, 9 months ago (2016-03-18 17:10:59 UTC) #35
dcheng
Sorry for the delay on the review. Just a few small questions, but overall, the ...
4 years, 9 months ago (2016-03-23 05:26:00 UTC) #36
dmazzoni
https://codereview.chromium.org/1713723002/diff/260001/content/browser/accessibility/browser_accessibility_manager.h File content/browser/accessibility/browser_accessibility_manager.h (right): https://codereview.chromium.org/1713723002/diff/260001/content/browser/accessibility/browser_accessibility_manager.h#newcode85 content/browser/accessibility/browser_accessibility_manager.h:85: const gfx::Rect& bounds) = 0; On 2016/03/23 05:26:00, dcheng ...
4 years, 9 months ago (2016-03-24 04:26:53 UTC) #37
dcheng
https://codereview.chromium.org/1713723002/diff/260001/content/browser/accessibility/browser_accessibility_manager.h File content/browser/accessibility/browser_accessibility_manager.h (right): https://codereview.chromium.org/1713723002/diff/260001/content/browser/accessibility/browser_accessibility_manager.h#newcode85 content/browser/accessibility/browser_accessibility_manager.h:85: const gfx::Rect& bounds) = 0; On 2016/03/24 at 04:26:53, ...
4 years, 9 months ago (2016-03-24 04:33:14 UTC) #38
dmazzoni
Feedback addressed. https://codereview.chromium.org/1713723002/diff/260001/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp File third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp (right): https://codereview.chromium.org/1713723002/diff/260001/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp#newcode224 third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp:224: if (!m_layoutObject || !documentFrameView() || !documentFrameView()->layoutView()) On ...
4 years, 9 months ago (2016-03-24 04:50:07 UTC) #39
dmazzoni
+jam for content/browser/renderer_host
4 years, 9 months ago (2016-03-24 04:51:09 UTC) #41
jam
On 2016/03/24 04:51:09, dmazzoni wrote: > +jam for content/browser/renderer_host lgtm
4 years, 9 months ago (2016-03-24 15:40:07 UTC) #42
dcheng
lgtm
4 years, 9 months ago (2016-03-24 17:07:52 UTC) #43
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1713723002/320001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1713723002/320001
4 years, 8 months ago (2016-03-28 17:15:01 UTC) #46
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/161157)
4 years, 8 months ago (2016-03-28 17:24:46 UTC) #48
dmazzoni
4 years, 8 months ago (2016-03-28 17:33:18 UTC) #50
Tom Sepez
messages LGTM.
4 years, 8 months ago (2016-03-28 17:37:02 UTC) #51
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1713723002/320001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1713723002/320001
4 years, 8 months ago (2016-03-28 17:37:59 UTC) #53
commit-bot: I haz the power
Committed patchset #17 (id:320001)
4 years, 8 months ago (2016-03-28 19:07:31 UTC) #55
commit-bot: I haz the power
4 years, 8 months ago (2016-03-28 19:09:17 UTC) #57
Message was sent while issue was closed.
Patchset 17 (id:??) landed as
https://crrev.com/0aec386227a2a2ea357ccea031b8d91dc4a853b1
Cr-Commit-Position: refs/heads/master@{#383534}

Powered by Google App Engine
This is Rietveld 408576698