Chromium Code Reviews| Index: content/browser/accessibility/dump_accessibility_tree_helper_mac.mm |
| diff --git a/content/browser/accessibility/dump_accessibility_tree_helper_mac.mm b/content/browser/accessibility/dump_accessibility_tree_helper_mac.mm |
| index 08ec4da6886e1c093bad1c74578b2ff93f51d03b..1434092d590797ec46e8a00a4c0c3eb132ff4640 100644 |
| --- a/content/browser/accessibility/dump_accessibility_tree_helper_mac.mm |
| +++ b/content/browser/accessibility/dump_accessibility_tree_helper_mac.mm |
| @@ -10,6 +10,7 @@ |
| #include "base/utf_string_conversions.h" |
| #include "content/browser/accessibility/browser_accessibility_cocoa.h" |
| #include "content/browser/accessibility/browser_accessibility_mac.h" |
| +#include "content/browser/accessibility/browser_accessibility_manager.h" |
| namespace content { |
| namespace { |
| @@ -63,13 +64,41 @@ string16 DumpAccessibilityTreeHelper::ToString(BrowserAccessibility* node, |
| Add(false, Format(node, "numberOfCharacters='", |
| @selector(numberOfCharacters), "'")); |
| Add(false, Format(node, "orientation='", @selector(orientation), "'")); |
| - Add(false, Format(node, "position='", @selector(position), "'")); |
| Add(false, Format(node, "required='", @selector(required), "'")); |
| - Add(false, Format(node, "size='", @selector(size), "'")); |
| Add(false, Format(node, "url='", @selector(url), "'")); |
| Add(false, Format(node, "visibleCharacterRange='", |
| @selector(visibleCharacterRange), "'")); |
| Add(false, Format(node, "visited='", @selector(visited), "'")); |
| + |
| + // The NSAccessibility position of an ojbect is in global coordinates and |
| + // based on the lower-left corner of the object. To make this easier and less |
| + // confusing, convert it to local window coordinates using the top-left corner |
| + // when dumping the position. |
| + BrowserAccessibility* root = node->manager()->GetRoot(); |
| + BrowserAccessibilityCocoa* cocoa_root = root->ToBrowserAccessibilityCocoa(); |
| + NSPoint root_position = [[cocoa_root position] pointValue]; |
| + NSSize root_size = [[cocoa_root size] sizeValue]; |
| + int root_top = -static_cast<int>(root_position.y + root_size.height); |
| + int root_left = static_cast<int>(root_position.x); |
| + |
| + BrowserAccessibilityCocoa* cocoa_node = node->ToBrowserAccessibilityCocoa(); |
| + NSPoint node_position = [[cocoa_node position] pointValue]; |
| + NSSize node_size = [[cocoa_node size] sizeValue]; |
| + |
| + NSString* position_str = |
|
aboxhall
2013/01/29 01:52:40
It might be more readable to pull the calculation
dmazzoni
2013/01/29 16:51:50
Done.
|
| + [NSString stringWithFormat:@"position=(%d, %d)", |
| + static_cast<int>(node_position.x - root_left), |
| + static_cast<int>( |
| + -node_position.y - node_size.height - root_top)]; |
| + Add(false, UTF8ToUTF16( |
| + [position_str cStringUsingEncoding:NSUTF8StringEncoding])); |
| + NSString* size_str = |
| + [NSString stringWithFormat:@"size=(%d, %d)", |
| + static_cast<int>(node_size.width), |
| + static_cast<int>(node_size.height)]; |
| + Add(false, UTF8ToUTF16( |
| + [size_str cStringUsingEncoding:NSUTF8StringEncoding])); |
| + |
| return ASCIIToUTF16(prefix) + FinishLine() + ASCIIToUTF16("\n"); |
| } |