OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/accessibility/accessibility_tree_formatter.h" | 5 #include "content/browser/accessibility/accessibility_tree_formatter.h" |
6 | 6 |
7 #import <Cocoa/Cocoa.h> | 7 #import <Cocoa/Cocoa.h> |
8 | 8 |
9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
(...skipping 24 matching lines...) Expand all Loading... |
35 const char* kRangeLenDictAttr = "len"; | 35 const char* kRangeLenDictAttr = "len"; |
36 | 36 |
37 scoped_ptr<base::DictionaryValue> PopulatePosition( | 37 scoped_ptr<base::DictionaryValue> PopulatePosition( |
38 const BrowserAccessibility& node) { | 38 const BrowserAccessibility& node) { |
39 scoped_ptr<base::DictionaryValue> position(new base::DictionaryValue); | 39 scoped_ptr<base::DictionaryValue> position(new base::DictionaryValue); |
40 // The NSAccessibility position of an object is in global coordinates and | 40 // The NSAccessibility position of an object is in global coordinates and |
41 // based on the lower-left corner of the object. To make this easier and less | 41 // based on the lower-left corner of the object. To make this easier and less |
42 // confusing, convert it to local window coordinates using the top-left | 42 // confusing, convert it to local window coordinates using the top-left |
43 // corner when dumping the position. | 43 // corner when dumping the position. |
44 BrowserAccessibility* root = node.manager()->GetRootManager()->GetRoot(); | 44 BrowserAccessibility* root = node.manager()->GetRootManager()->GetRoot(); |
45 BrowserAccessibilityCocoa* cocoa_root = root->ToBrowserAccessibilityCocoa(); | 45 BrowserAccessibilityCocoa* cocoa_root = ToBrowserAccessibilityCocoa(root); |
46 NSPoint root_position = [[cocoa_root position] pointValue]; | 46 NSPoint root_position = [[cocoa_root position] pointValue]; |
47 NSSize root_size = [[cocoa_root size] sizeValue]; | 47 NSSize root_size = [[cocoa_root size] sizeValue]; |
48 int root_top = -static_cast<int>(root_position.y + root_size.height); | 48 int root_top = -static_cast<int>(root_position.y + root_size.height); |
49 int root_left = static_cast<int>(root_position.x); | 49 int root_left = static_cast<int>(root_position.x); |
50 | 50 |
51 BrowserAccessibilityCocoa* cocoa_node = | 51 BrowserAccessibilityCocoa* cocoa_node = |
52 const_cast<BrowserAccessibility*>(&node)->ToBrowserAccessibilityCocoa(); | 52 ToBrowserAccessibilityCocoa(const_cast<BrowserAccessibility*>(&node)); |
53 NSPoint node_position = [[cocoa_node position] pointValue]; | 53 NSPoint node_position = [[cocoa_node position] pointValue]; |
54 NSSize node_size = [[cocoa_node size] sizeValue]; | 54 NSSize node_size = [[cocoa_node size] sizeValue]; |
55 | 55 |
56 position->SetInteger(kXCoordDictAttr, | 56 position->SetInteger(kXCoordDictAttr, |
57 static_cast<int>(node_position.x - root_left)); | 57 static_cast<int>(node_position.x - root_left)); |
58 position->SetInteger(kYCoordDictAttr, | 58 position->SetInteger(kYCoordDictAttr, |
59 static_cast<int>(-node_position.y - node_size.height - root_top)); | 59 static_cast<int>(-node_position.y - node_size.height - root_top)); |
60 return position; | 60 return position; |
61 } | 61 } |
62 | 62 |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 } | 214 } |
215 | 215 |
216 AccessibilityTreeFormatterMac::~AccessibilityTreeFormatterMac() { | 216 AccessibilityTreeFormatterMac::~AccessibilityTreeFormatterMac() { |
217 } | 217 } |
218 | 218 |
219 void AccessibilityTreeFormatterMac::AddProperties( | 219 void AccessibilityTreeFormatterMac::AddProperties( |
220 const BrowserAccessibility& node, | 220 const BrowserAccessibility& node, |
221 base::DictionaryValue* dict) { | 221 base::DictionaryValue* dict) { |
222 dict->SetInteger("id", node.GetId()); | 222 dict->SetInteger("id", node.GetId()); |
223 BrowserAccessibilityCocoa* cocoa_node = | 223 BrowserAccessibilityCocoa* cocoa_node = |
224 const_cast<BrowserAccessibility*>(&node)->ToBrowserAccessibilityCocoa(); | 224 ToBrowserAccessibilityCocoa(const_cast<BrowserAccessibility*>(&node)); |
225 NSArray* supportedAttributes = [cocoa_node accessibilityAttributeNames]; | 225 NSArray* supportedAttributes = [cocoa_node accessibilityAttributeNames]; |
226 | 226 |
227 string role = SysNSStringToUTF8( | 227 string role = SysNSStringToUTF8( |
228 [cocoa_node accessibilityAttributeValue:NSAccessibilityRoleAttribute]); | 228 [cocoa_node accessibilityAttributeValue:NSAccessibilityRoleAttribute]); |
229 dict->SetString(SysNSStringToUTF8(NSAccessibilityRoleAttribute), role); | 229 dict->SetString(SysNSStringToUTF8(NSAccessibilityRoleAttribute), role); |
230 | 230 |
231 NSString* subrole = | 231 NSString* subrole = |
232 [cocoa_node accessibilityAttributeValue:NSAccessibilitySubroleAttribute]; | 232 [cocoa_node accessibilityAttributeValue:NSAccessibilitySubroleAttribute]; |
233 if (subrole != nil) { | 233 if (subrole != nil) { |
234 dict->SetString(SysNSStringToUTF8(NSAccessibilitySubroleAttribute), | 234 dict->SetString(SysNSStringToUTF8(NSAccessibilitySubroleAttribute), |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
330 | 330 |
331 const string AccessibilityTreeFormatterMac::GetAllowString() { | 331 const string AccessibilityTreeFormatterMac::GetAllowString() { |
332 return "@MAC-ALLOW:"; | 332 return "@MAC-ALLOW:"; |
333 } | 333 } |
334 | 334 |
335 const string AccessibilityTreeFormatterMac::GetDenyString() { | 335 const string AccessibilityTreeFormatterMac::GetDenyString() { |
336 return "@MAC-DENY:"; | 336 return "@MAC-DENY:"; |
337 } | 337 } |
338 | 338 |
339 } // namespace content | 339 } // namespace content |
OLD | NEW |