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

Unified Diff: content/browser/accessibility/browser_accessibility.cc

Issue 21269002: Make AccessibilityNodeData more compact. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix windows compile Created 7 years, 5 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/browser_accessibility.cc
diff --git a/content/browser/accessibility/browser_accessibility.cc b/content/browser/accessibility/browser_accessibility.cc
index ae7efe2f6607b26643776ea7d85d2edd7a015ac7..7cfc729a6fd6b518e06f66180f6e3adc7b11fbc2 100644
--- a/content/browser/accessibility/browser_accessibility.cc
+++ b/content/browser/accessibility/browser_accessibility.cc
@@ -7,6 +7,7 @@
#include "base/logging.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
+#include "base/strings/utf_string_conversions.h"
#include "content/browser/accessibility/browser_accessibility_manager.h"
#include "content/common/accessibility_messages.h"
@@ -64,22 +65,20 @@ void BrowserAccessibility::InitializeTreeStructure(
void BrowserAccessibility::InitializeData(const AccessibilityNodeData& src) {
DCHECK_EQ(renderer_id_, src.id);
- name_ = src.name;
- value_ = src.value;
role_ = src.role;
state_ = src.state;
string_attributes_ = src.string_attributes;
int_attributes_ = src.int_attributes;
float_attributes_ = src.float_attributes;
bool_attributes_ = src.bool_attributes;
+ intlist_attributes_ = src.intlist_attributes;
html_attributes_ = src.html_attributes;
location_ = src.location;
- indirect_child_ids_ = src.indirect_child_ids;
- line_breaks_ = src.line_breaks;
- cell_ids_ = src.cell_ids;
- unique_cell_ids_ = src.unique_cell_ids;
instance_active_ = true;
+ GetStringAttribute(AccessibilityNodeData::ATTR_NAME, &name_);
+ GetStringAttribute(AccessibilityNodeData::ATTR_VALUE, &value_);
+
PreInitialize();
}
@@ -225,10 +224,11 @@ void BrowserAccessibility::NativeReleaseReference() {
bool BrowserAccessibility::GetBoolAttribute(
BoolAttribute attribute, bool* value) const {
- BoolAttrMap::const_iterator iter = bool_attributes_.find(attribute);
- if (iter != bool_attributes_.end()) {
- *value = iter->second;
- return true;
+ for (size_t i = 0; i < bool_attributes_.size(); ++i) {
+ if (bool_attributes_[i].first == attribute) {
+ *value = bool_attributes_[i].second;
+ return true;
+ }
}
return false;
@@ -236,10 +236,11 @@ bool BrowserAccessibility::GetBoolAttribute(
bool BrowserAccessibility::GetFloatAttribute(
FloatAttribute attribute, float* value) const {
- FloatAttrMap::const_iterator iter = float_attributes_.find(attribute);
- if (iter != float_attributes_.end()) {
- *value = iter->second;
- return true;
+ for (size_t i = 0; i < float_attributes_.size(); ++i) {
+ if (float_attributes_[i].first == attribute) {
+ *value = float_attributes_[i].second;
+ return true;
+ }
}
return false;
@@ -247,10 +248,11 @@ bool BrowserAccessibility::GetFloatAttribute(
bool BrowserAccessibility::GetIntAttribute(
IntAttribute attribute, int* value) const {
- IntAttrMap::const_iterator iter = int_attributes_.find(attribute);
- if (iter != int_attributes_.end()) {
- *value = iter->second;
- return true;
+ for (size_t i = 0; i < int_attributes_.size(); ++i) {
+ if (int_attributes_[i].first == attribute) {
+ *value = int_attributes_[i].second;
+ return true;
+ }
}
return false;
@@ -258,20 +260,54 @@ bool BrowserAccessibility::GetIntAttribute(
bool BrowserAccessibility::GetStringAttribute(
StringAttribute attribute,
- string16* value) const {
- StringAttrMap::const_iterator iter = string_attributes_.find(attribute);
- if (iter != string_attributes_.end()) {
- *value = iter->second;
- return true;
+ std::string* value) const {
aboxhall 2013/07/31 18:34:47 Nit: this will fit on the previous line.
dmazzoni 2013/08/06 17:36:34 Done.
+ for (size_t i = 0; i < string_attributes_.size(); ++i) {
+ if (string_attributes_[i].first == attribute) {
+ *value = string_attributes_[i].second;
+ return true;
+ }
}
return false;
}
+bool BrowserAccessibility::GetStringAttribute(
+ StringAttribute attribute,
+ string16* value) const {
+ std::string value_utf8;
+ if (!GetStringAttribute(attribute, &value_utf8))
+ return false;
+ *value = UTF8ToUTF16(value_utf8);
+ return true;
+}
+
+void BrowserAccessibility::SetStringAttribute(
+ StringAttribute attribute, const std::string& value) {
+ for (size_t i = 0; i < string_attributes_.size(); ++i) {
+ if (string_attributes_[i].first == attribute) {
+ string_attributes_[i].second = value;
+ return;
+ }
+ }
+ if (!value.empty())
+ string_attributes_.push_back(std::make_pair(attribute, value));
+}
+
+const std::vector<int32>& BrowserAccessibility::GetIntListAttribute(
+ AccessibilityNodeData::IntListAttribute attribute) const {
+ CR_DEFINE_STATIC_LOCAL(std::vector<int32>, empty_vector, ());
+ for (size_t i = 0; i < intlist_attributes_.size(); ++i) {
+ if (intlist_attributes_[i].first == attribute)
+ return intlist_attributes_[i].second;
+ }
+
+ return empty_vector;
+}
+
bool BrowserAccessibility::GetHtmlAttribute(
- const char* html_attr, string16* value) const {
+ const char* html_attr, std::string* value) const {
for (size_t i = 0; i < html_attributes_.size(); i++) {
- const string16& attr = html_attributes_[i].first;
+ const std::string& attr = html_attributes_[i].first;
if (LowerCaseEqualsASCII(attr, html_attr)) {
*value = html_attributes_[i].second;
return true;
@@ -281,6 +317,15 @@ bool BrowserAccessibility::GetHtmlAttribute(
return false;
}
+bool BrowserAccessibility::GetHtmlAttribute(
+ const char* html_attr, string16* value) const {
+ std::string value_utf8;
+ if (!GetHtmlAttribute(html_attr, &value_utf8))
+ return false;
+ *value = UTF8ToUTF16(value_utf8);
+ return true;
+}
+
bool BrowserAccessibility::GetAriaTristate(
const char* html_attr,
bool* is_defined,
@@ -327,12 +372,12 @@ bool BrowserAccessibility::IsEditableText() const {
role_ == AccessibilityNodeData::ROLE_TEXTAREA);
}
-string16 BrowserAccessibility::GetTextRecursive() const {
+std::string BrowserAccessibility::GetTextRecursive() const {
if (!name_.empty()) {
return name_;
}
- string16 result;
+ std::string result;
for (size_t i = 0; i < children_.size(); ++i)
result += children_[i]->GetTextRecursive();
return result;

Powered by Google App Engine
This is Rietveld 408576698