| 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..f5ba910845f78ae51085f52665df460c890e43b1 100644
|
| --- a/content/browser/accessibility/dump_accessibility_tree_helper_mac.mm
|
| +++ b/content/browser/accessibility/dump_accessibility_tree_helper_mac.mm
|
| @@ -10,9 +10,12 @@
|
| #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 {
|
| +
|
| string16 Format(BrowserAccessibility* node,
|
| const char *prefix,
|
| SEL selector,
|
| @@ -26,8 +29,43 @@ string16 Format(BrowserAccessibility* node,
|
| NSString* tmp = [NSString stringWithFormat:format_str, value];
|
| return UTF8ToUTF16([tmp cStringUsingEncoding:NSUTF8StringEncoding]);
|
| }
|
| +
|
| +string16 FormatPosition(BrowserAccessibility* node) {
|
| + // The NSAccessibility position of an object 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 =
|
| + [NSString stringWithFormat:@"position=(%d, %d)",
|
| + static_cast<int>(node_position.x - root_left),
|
| + static_cast<int>(
|
| + -node_position.y - node_size.height - root_top)];
|
| + return UTF8ToUTF16([position_str cStringUsingEncoding:NSUTF8StringEncoding]);
|
| }
|
|
|
| +string16 FormatSize(BrowserAccessibility* node) {
|
| + BrowserAccessibilityCocoa* cocoa_node = node->ToBrowserAccessibilityCocoa();
|
| + NSSize node_size = [[cocoa_node size] sizeValue];
|
| + NSString* size_str =
|
| + [NSString stringWithFormat:@"size=(%d, %d)",
|
| + static_cast<int>(node_size.width),
|
| + static_cast<int>(node_size.height)];
|
| + return UTF8ToUTF16([size_str cStringUsingEncoding:NSUTF8StringEncoding]);
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| void DumpAccessibilityTreeHelper::Initialize() {}
|
|
|
| string16 DumpAccessibilityTreeHelper::ToString(BrowserAccessibility* node,
|
| @@ -63,13 +101,14 @@ 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), "'"));
|
| + Add(false, FormatPosition(node));
|
| + Add(false, FormatSize(node));
|
| +
|
| return ASCIIToUTF16(prefix) + FinishLine() + ASCIIToUTF16("\n");
|
| }
|
|
|
|
|