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" |
11 #include "base/strings/string_number_conversions.h" | 11 #include "base/strings/string_number_conversions.h" |
12 #include "base/strings/stringprintf.h" | 12 #include "base/strings/stringprintf.h" |
13 #include "base/strings/sys_string_conversions.h" | 13 #include "base/strings/sys_string_conversions.h" |
14 #include "base/strings/utf_string_conversions.h" | 14 #include "base/strings/utf_string_conversions.h" |
| 15 #include "base/values.h" |
15 #include "content/browser/accessibility/browser_accessibility_cocoa.h" | 16 #include "content/browser/accessibility/browser_accessibility_cocoa.h" |
16 #include "content/browser/accessibility/browser_accessibility_mac.h" | 17 #include "content/browser/accessibility/browser_accessibility_mac.h" |
17 #include "content/browser/accessibility/browser_accessibility_manager.h" | 18 #include "content/browser/accessibility/browser_accessibility_manager.h" |
18 | 19 |
19 using base::StringPrintf; | 20 using base::StringPrintf; |
20 using base::SysNSStringToUTF8; | 21 using base::SysNSStringToUTF8; |
21 using base::SysNSStringToUTF16; | 22 using base::SysNSStringToUTF16; |
22 using std::string; | 23 using std::string; |
23 | 24 |
24 namespace content { | 25 namespace content { |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 if (![value isKindOfClass:[NSValue class]]) | 82 if (![value isKindOfClass:[NSValue class]]) |
82 return false; | 83 return false; |
83 return 0 == strcmp([value objCType], @encode(NSRange)); | 84 return 0 == strcmp([value objCType], @encode(NSRange)); |
84 } | 85 } |
85 | 86 |
86 std::unique_ptr<base::Value> PopulateObject(id value); | 87 std::unique_ptr<base::Value> PopulateObject(id value); |
87 | 88 |
88 std::unique_ptr<base::ListValue> PopulateArray(NSArray* array) { | 89 std::unique_ptr<base::ListValue> PopulateArray(NSArray* array) { |
89 std::unique_ptr<base::ListValue> list(new base::ListValue); | 90 std::unique_ptr<base::ListValue> list(new base::ListValue); |
90 for (NSUInteger i = 0; i < [array count]; i++) | 91 for (NSUInteger i = 0; i < [array count]; i++) |
91 list->Append(PopulateObject([array objectAtIndex:i]).release()); | 92 list->Append(PopulateObject([array objectAtIndex:i])); |
92 return list; | 93 return list; |
93 } | 94 } |
94 | 95 |
95 std::unique_ptr<base::Value> StringForBrowserAccessibility( | 96 std::unique_ptr<base::Value> StringForBrowserAccessibility( |
96 BrowserAccessibilityCocoa* obj) { | 97 BrowserAccessibilityCocoa* obj) { |
97 NSMutableArray* tokens = [[NSMutableArray alloc] init]; | 98 NSMutableArray* tokens = [[NSMutableArray alloc] init]; |
98 | 99 |
99 // Always include the role | 100 // Always include the role |
100 id role = [obj role]; | 101 id role = [obj role]; |
101 [tokens addObject:role]; | 102 [tokens addObject:role]; |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 } | 247 } |
247 | 248 |
248 CR_DEFINE_STATIC_LOCAL(NSArray*, all_attributes, (BuildAllAttributesArray())); | 249 CR_DEFINE_STATIC_LOCAL(NSArray*, all_attributes, (BuildAllAttributesArray())); |
249 for (NSString* requestedAttribute in all_attributes) { | 250 for (NSString* requestedAttribute in all_attributes) { |
250 if (![supportedAttributes containsObject:requestedAttribute]) | 251 if (![supportedAttributes containsObject:requestedAttribute]) |
251 continue; | 252 continue; |
252 id value = [cocoa_node accessibilityAttributeValue:requestedAttribute]; | 253 id value = [cocoa_node accessibilityAttributeValue:requestedAttribute]; |
253 if (value != nil) { | 254 if (value != nil) { |
254 dict->Set( | 255 dict->Set( |
255 SysNSStringToUTF8(requestedAttribute), | 256 SysNSStringToUTF8(requestedAttribute), |
256 PopulateObject(value).release()); | 257 PopulateObject(value)); |
257 } | 258 } |
258 } | 259 } |
259 dict->Set(kPositionDictAttr, PopulatePosition(node).release()); | 260 dict->Set(kPositionDictAttr, PopulatePosition(node)); |
260 dict->Set(kSizeDictAttr, PopulateSize(cocoa_node).release()); | 261 dict->Set(kSizeDictAttr, PopulateSize(cocoa_node)); |
261 } | 262 } |
262 | 263 |
263 base::string16 AccessibilityTreeFormatterMac::ToString( | 264 base::string16 AccessibilityTreeFormatterMac::ToString( |
264 const base::DictionaryValue& dict) { | 265 const base::DictionaryValue& dict) { |
265 base::string16 line; | 266 base::string16 line; |
266 if (show_ids()) { | 267 if (show_ids()) { |
267 int id_value; | 268 int id_value; |
268 dict.GetInteger("id", &id_value); | 269 dict.GetInteger("id", &id_value); |
269 WriteAttribute(true, base::IntToString16(id_value), &line); | 270 WriteAttribute(true, base::IntToString16(id_value), &line); |
270 } | 271 } |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
340 | 341 |
341 const string AccessibilityTreeFormatterMac::GetAllowString() { | 342 const string AccessibilityTreeFormatterMac::GetAllowString() { |
342 return "@MAC-ALLOW:"; | 343 return "@MAC-ALLOW:"; |
343 } | 344 } |
344 | 345 |
345 const string AccessibilityTreeFormatterMac::GetDenyString() { | 346 const string AccessibilityTreeFormatterMac::GetDenyString() { |
346 return "@MAC-DENY:"; | 347 return "@MAC-DENY:"; |
347 } | 348 } |
348 | 349 |
349 } // namespace content | 350 } // namespace content |
OLD | NEW |