|
|
Keep track of fixed positioning in accessibility tree.
For efficiency, the accessibility tree keeps track of the relative
coordinates of nodes. That makes things like scrolling and other
layer transformations more efficient; only the container needs to
be updated, and all of the coordinates of objects within that
container will be updated on-the-fly.
We weren't handling fixed-positioned elements correctly, though.
Fixed-positioned elements don't move when the root element scrolls,
so there's no way they could be properly encoded.
Fix this by explicitly identifying fixed-positioned elements. The
algorithm change is really simple - fixed-positioned elements ignore
scroll offsets of their containers. That's it. Everything else just
works.
This bug wasn't caught for a while because it only manifests when
layout doesn't change. Any time there's a layout, existing code
detects the new location of the fixed-positioned element and updates
it. So the only case that was broken was when you scroll a page and
then navigate assistive technology to a fixed-position element without
triggering layout first.
Note that it's not really appropriate to unit-test within Blink because
the Blink functions were essentially returning correct coordinates; the
bug was due to the fact that when the page scrolled, the previously
computed relative coordinates of the fixed-positioned element are now
wrong. So this change is covered by a browser test only, plus by
dozens of other existing tests that this patch doesn't break.
BUG= 732346
Total comments: 4
|
Unified diffs |
Side-by-side diffs |
Delta from patch set |
Stats (+290 lines, -78 lines) |
Patch |
 |
M |
chrome/common/extensions/chrome_extension_messages.h
|
View
|
1
|
2 chunks |
+1 line, -1 line |
0 comments
|
Download
|
 |
M |
chrome/renderer/extensions/automation_internal_custom_bindings.cc
|
View
|
1
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
content/browser/accessibility/browser_accessibility_manager.cc
|
View
|
1
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
content/browser/accessibility/dump_accessibility_tree_browsertest.cc
|
View
|
1
|
1 chunk |
+10 lines, -0 lines |
0 comments
|
Download
|
 |
M |
content/common/accessibility_messages.h
|
View
|
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
content/public/common/common_param_traits_macros.h
|
View
|
1
|
1 chunk |
+1 line, -0 lines |
0 comments
|
Download
|
 |
M |
content/renderer/accessibility/blink_ax_tree_source.cc
|
View
|
|
1 chunk |
+3 lines, -1 line |
0 comments
|
Download
|
 |
M |
content/renderer/accessibility/render_accessibility_impl.cc
|
View
|
1
|
2 chunks |
+4 lines, -1 line |
0 comments
|
Download
|
 |
M |
content/shell/test_runner/web_ax_object_proxy.cc
|
View
|
|
7 chunks |
+25 lines, -10 lines |
0 comments
|
Download
|
 |
A |
content/test/data/accessibility/css/fixed-transformed-with-scrolling.html
|
View
|
1
|
1 chunk |
+47 lines, -0 lines |
0 comments
|
Download
|
 |
A |
content/test/data/accessibility/css/fixed-transformed-with-scrolling-expected-blink.txt
|
View
|
1
|
1 chunk |
+9 lines, -0 lines |
0 comments
|
Download
|
 |
A |
content/test/data/accessibility/css/fixed-with-scrolling.html
|
View
|
|
1 chunk |
+46 lines, -0 lines |
0 comments
|
Download
|
 |
A |
content/test/data/accessibility/css/fixed-with-scrolling-expected-blink.txt
|
View
|
|
1 chunk |
+8 lines, -0 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/modules/accessibility/AXImageMapLink.h
|
View
|
1
|
1 chunk |
+3 lines, -3 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/modules/accessibility/AXImageMapLink.cpp
|
View
|
1
|
2 chunks |
+5 lines, -6 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/modules/accessibility/AXInlineTextBox.h
|
View
|
1
|
1 chunk |
+3 lines, -3 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/modules/accessibility/AXInlineTextBox.cpp
|
View
|
1
|
2 chunks |
+4 lines, -5 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/modules/accessibility/AXMenuListOption.h
|
View
|
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/modules/accessibility/AXMenuListOption.cpp
|
View
|
|
2 chunks |
+6 lines, -5 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/modules/accessibility/AXNodeObject.h
|
View
|
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp
|
View
|
1
|
3 chunks |
+10 lines, -7 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/modules/accessibility/AXObject.h
|
View
|
1
|
2 chunks |
+13 lines, -1 line |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/modules/accessibility/AXObject.cpp
|
View
|
1
|
5 chunks |
+22 lines, -5 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/modules/accessibility/AXSpinButton.h
|
View
|
1
|
1 chunk |
+3 lines, -3 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/modules/accessibility/AXSpinButton.cpp
|
View
|
1
|
2 chunks |
+7 lines, -6 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/Source/modules/exported/WebAXObject.cpp
|
View
|
|
2 chunks |
+4 lines, -2 lines |
0 comments
|
Download
|
 |
M |
third_party/WebKit/public/web/WebAXObject.h
|
View
|
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
ui/accessibility/ax_node.h
|
View
|
|
1 chunk |
+2 lines, -1 line |
0 comments
|
Download
|
 |
M |
ui/accessibility/ax_node.cc
|
View
|
|
1 chunk |
+3 lines, -1 line |
0 comments
|
Download
|
 |
M |
ui/accessibility/ax_node_data.h
|
View
|
1
|
2 chunks |
+4 lines, -1 line |
0 comments
|
Download
|
 |
M |
ui/accessibility/ax_node_data.cc
|
View
|
1
|
4 chunks |
+7 lines, -1 line |
0 comments
|
Download
|
 |
M |
ui/accessibility/ax_relative_bounds.h
|
View
|
|
3 chunks |
+12 lines, -2 lines |
0 comments
|
Download
|
 |
M |
ui/accessibility/ax_relative_bounds.cc
|
View
|
|
5 chunks |
+8 lines, -2 lines |
0 comments
|
Download
|
 |
M |
ui/accessibility/ax_tree.cc
|
View
|
1
|
1 chunk |
+9 lines, -6 lines |
0 comments
|
Download
|
Total messages: 22 (12 generated)
|