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

Unified Diff: content/browser/accessibility/dump_accessibility_tree_helper_mac.mm

Issue 12084028: Fix accessibility coordinates within iframes. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Update win expectations Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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");
}

Powered by Google App Engine
This is Rietveld 408576698