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

Unified Diff: trunk/src/content/browser/accessibility/accessibility_tree_formatter_mac.mm

Issue 14354004: Revert 194775 "Modify AccessibilityTreeFormatter to build up an ..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 8 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: trunk/src/content/browser/accessibility/accessibility_tree_formatter_mac.mm
===================================================================
--- trunk/src/content/browser/accessibility/accessibility_tree_formatter_mac.mm (revision 194894)
+++ trunk/src/content/browser/accessibility/accessibility_tree_formatter_mac.mm (working copy)
@@ -7,173 +7,129 @@
#import <Cocoa/Cocoa.h>
#include "base/files/file_path.h"
-#include "base/stringprintf.h"
-#include "base/strings/sys_string_conversions.h"
#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"
-using base::StringPrintf;
-using base::SysNSStringToUTF8;
-using base::SysNSStringToUTF16;
-using std::string;
-
namespace content {
namespace {
-NSArray* ALL_ATTRIBUTES = [NSArray arrayWithObjects:
- NSAccessibilityRoleDescriptionAttribute,
- NSAccessibilityTitleAttribute,
- NSAccessibilityValueAttribute,
- NSAccessibilityMinValueAttribute,
- NSAccessibilityMaxValueAttribute,
- NSAccessibilityValueDescriptionAttribute,
- NSAccessibilityDescriptionAttribute,
- NSAccessibilityHelpAttribute,
- @"AXInvalid",
- NSAccessibilityDisclosingAttribute,
- NSAccessibilityDisclosureLevelAttribute,
- @"AXAccessKey",
- @"AXARIAAtomic",
- @"AXARIABusy",
- @"AXARIALive",
- @"AXARIARelevant",
- NSAccessibilityEnabledAttribute,
- NSAccessibilityFocusedAttribute,
- @"AXLoaded",
- @"AXLoadingProcess",
- NSAccessibilityNumberOfCharactersAttribute,
- NSAccessibilityOrientationAttribute,
- @"AXRequired",
- NSAccessibilityURLAttribute,
- NSAccessibilityVisibleCharacterRangeAttribute,
- @"AXVisited",
- nil];
-
-const char* kPositionDictAttr = "position";
-const char* kXCoordDictAttr = "x";
-const char* kYCoordDictAttr = "y";
-const char* kSizeDictAttr = "size";
-const char* kWidthDictAttr = "width";
-const char* kHeightDictAttr = "height";
+string16 Format(const char *prefix,
+ id value,
+ const char *suffix) {
+ if (value == nil)
+ return UTF8ToUTF16("");
+ NSString* format_str =
+ [NSString stringWithFormat:@"%s%%@%s", prefix, suffix];
+ NSString* tmp = [NSString stringWithFormat:format_str, value];
+ return UTF8ToUTF16([tmp cStringUsingEncoding:NSUTF8StringEncoding]);
+}
-scoped_ptr<DictionaryValue> PopulatePosition(const BrowserAccessibility& node) {
- scoped_ptr<DictionaryValue> position(new DictionaryValue);
+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();
+ 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 =
- const_cast<BrowserAccessibility*>(&node)->ToBrowserAccessibilityCocoa();
+ BrowserAccessibilityCocoa* cocoa_node = node->ToBrowserAccessibilityCocoa();
NSPoint node_position = [[cocoa_node position] pointValue];
NSSize node_size = [[cocoa_node size] sizeValue];
- position->SetInteger(kXCoordDictAttr,
- static_cast<int>(node_position.x - root_left));
- position->SetInteger(kYCoordDictAttr,
- static_cast<int>(-node_position.y - node_size.height - root_top));
- return position.Pass();
+ 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]);
}
-scoped_ptr<DictionaryValue>
-PopulateSize(const BrowserAccessibilityCocoa* cocoa_node) {
- scoped_ptr<DictionaryValue> size(new DictionaryValue);
+string16 FormatSize(BrowserAccessibility* node) {
+ BrowserAccessibilityCocoa* cocoa_node = node->ToBrowserAccessibilityCocoa();
NSSize node_size = [[cocoa_node size] sizeValue];
- size->SetInteger(kHeightDictAttr, static_cast<int>(node_size.height));
- size->SetInteger(kWidthDictAttr, static_cast<int>(node_size.width));
- return size.Pass();
+ 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 AccessibilityTreeFormatter::Initialize() {}
-void AccessibilityTreeFormatter::AddProperties(const BrowserAccessibility& node,
- DictionaryValue* dict) {
- BrowserAccessibilityCocoa* cocoa_node =
- const_cast<BrowserAccessibility*>(&node)->ToBrowserAccessibilityCocoa();
- NSArray* supportedAttributes = [cocoa_node accessibilityAttributeNames];
+string16 AccessibilityTreeFormatter::ToString(BrowserAccessibility* node,
+ char* prefix) {
+ StartLine();
+ NSArray* requestedAttributes = [NSArray arrayWithObjects:
+ NSAccessibilityRoleDescriptionAttribute,
+ NSAccessibilityTitleAttribute,
+ NSAccessibilityValueAttribute,
+ NSAccessibilityMinValueAttribute,
+ NSAccessibilityMaxValueAttribute,
+ NSAccessibilityValueDescriptionAttribute,
+ NSAccessibilityDescriptionAttribute,
+ NSAccessibilityHelpAttribute,
+ @"AXInvalid",
+ NSAccessibilityDisclosingAttribute,
+ NSAccessibilityDisclosureLevelAttribute,
+ @"AXAccessKey",
+ @"AXARIAAtomic",
+ @"AXARIABusy",
+ @"AXARIALive",
+ @"AXARIARelevant",
+ NSAccessibilityEnabledAttribute,
+ NSAccessibilityFocusedAttribute,
+ @"AXLoaded",
+ @"AXLoadingProcess",
+ NSAccessibilityNumberOfCharactersAttribute,
+ NSAccessibilityOrientationAttribute,
+ @"AXRequired",
+ NSAccessibilityURLAttribute,
+ NSAccessibilityVisibleCharacterRangeAttribute,
+ @"AXVisited",
+ nil];
+
+ NSArray* defaultAttributes = [NSArray arrayWithObjects:
+ NSAccessibilityTitleAttribute,
+ NSAccessibilityValueAttribute,
+ nil];
- string role = SysNSStringToUTF8(
- [cocoa_node accessibilityAttributeValue:NSAccessibilityRoleAttribute]);
- dict->SetString(SysNSStringToUTF8(NSAccessibilityRoleAttribute), role);
-
- NSString* subrole =
- [cocoa_node accessibilityAttributeValue:NSAccessibilitySubroleAttribute];
- if (subrole != nil) {
- dict->SetString(SysNSStringToUTF8(NSAccessibilitySubroleAttribute),
- SysNSStringToUTF8(subrole));
- }
+ BrowserAccessibilityCocoa* cocoa_node = node->ToBrowserAccessibilityCocoa();
+ NSArray* supportedAttributes = [cocoa_node accessibilityAttributeNames];
- for (NSString* requestedAttribute in ALL_ATTRIBUTES) {
+ Add(true,
+ Format("", [cocoa_node accessibilityAttributeValue:
+ NSAccessibilityRoleAttribute],
+ ""));
+ Add(false,
+ Format("subrole=", [cocoa_node accessibilityAttributeValue:
+ NSAccessibilitySubroleAttribute],
+ ""));
+ for (NSString* requestedAttribute in requestedAttributes) {
if (![supportedAttributes containsObject:requestedAttribute]) {
continue;
}
- id value = [cocoa_node accessibilityAttributeValue:requestedAttribute];
- if (value != nil) {
- dict->SetString(
- SysNSStringToUTF8(requestedAttribute),
- SysNSStringToUTF16([NSString stringWithFormat:@"%@", value]));
- }
- }
- dict->Set(kPositionDictAttr, PopulatePosition(node).release());
- dict->Set(kSizeDictAttr, PopulateSize(cocoa_node).release());
-}
-
-string16 AccessibilityTreeFormatter::ToString(const DictionaryValue& dict,
- const string16& indent) {
- string16 line;
- NSArray* defaultAttributes =
- [NSArray arrayWithObjects:NSAccessibilityTitleAttribute,
- NSAccessibilityValueAttribute,
- nil];
- string s_value;
- dict.GetString(SysNSStringToUTF8(NSAccessibilityRoleAttribute), &s_value);
- WriteAttribute(true, UTF8ToUTF16(s_value), &line);
-
- string subroleAttribute = SysNSStringToUTF8(NSAccessibilitySubroleAttribute);
- if (dict.GetString(subroleAttribute, &s_value)) {
- WriteAttribute(false,
- StringPrintf("%s=%s",
- subroleAttribute.c_str(), s_value.c_str()),
- &line);
- }
-
- for (NSString* requestedAttribute in ALL_ATTRIBUTES) {
- string requestedAttributeUTF8 = SysNSStringToUTF8(requestedAttribute);
- if (!dict.GetString(requestedAttributeUTF8, &s_value))
- continue;
- WriteAttribute([defaultAttributes containsObject:requestedAttribute],
- StringPrintf("%s='%s'",
- requestedAttributeUTF8.c_str(),
- s_value.c_str()),
- &line);
- }
- const DictionaryValue* d_value = NULL;
- if (dict.GetDictionary(kPositionDictAttr, &d_value)) {
- WriteAttribute(false,
- FormatCoordinates(kPositionDictAttr,
- kXCoordDictAttr, kYCoordDictAttr,
- *d_value),
- &line);
- }
- if (dict.GetDictionary(kSizeDictAttr, &d_value)) {
- WriteAttribute(false,
- FormatCoordinates(kSizeDictAttr,
- kWidthDictAttr, kHeightDictAttr, *d_value),
- &line);
+ NSString* methodName =
+ [cocoa_node methodNameForAttribute:requestedAttribute];
+ Add([defaultAttributes containsObject:requestedAttribute],
+ Format([[NSString stringWithFormat:@"%@='", methodName]
+ cStringUsingEncoding:NSUTF8StringEncoding],
+ [cocoa_node accessibilityAttributeValue:
+ requestedAttribute],
+ "'"));
}
+ Add(false, FormatPosition(node));
+ Add(false, FormatSize(node));
- return indent + line + ASCIIToUTF16("\n");
+ return ASCIIToUTF16(prefix) + FinishLine() + ASCIIToUTF16("\n");
}
// static
@@ -189,17 +145,17 @@
}
// static
-const string AccessibilityTreeFormatter::GetAllowEmptyString() {
+const std::string AccessibilityTreeFormatter::GetAllowEmptyString() {
return "@MAC-ALLOW-EMPTY:";
}
// static
-const string AccessibilityTreeFormatter::GetAllowString() {
+const std::string AccessibilityTreeFormatter::GetAllowString() {
return "@MAC-ALLOW:";
}
// static
-const string AccessibilityTreeFormatter::GetDenyString() {
+const std::string AccessibilityTreeFormatter::GetDenyString() {
return "@MAC-DENY:";
}

Powered by Google App Engine
This is Rietveld 408576698