Index: content/browser/accessibility/browser_accessibility.cc |
diff --git a/content/browser/accessibility/browser_accessibility.cc b/content/browser/accessibility/browser_accessibility.cc |
index 18a24b4fed2eb7f9b9c36c72b53d437204146e4c..f2f7e7f96a900e63d687b815644a2a298ccaccc2 100644 |
--- a/content/browser/accessibility/browser_accessibility.cc |
+++ b/content/browser/accessibility/browser_accessibility.cc |
@@ -27,25 +27,25 @@ BrowserAccessibility* BrowserAccessibility::Create() { |
BrowserAccessibility::BrowserAccessibility() |
: manager_(NULL), |
- parent_(NULL), |
- index_in_parent_(0), |
- renderer_id_(0), |
- role_(0), |
- state_(0), |
+ deprecated_parent_(NULL), |
+ deprecated_index_in_parent_(0), |
instance_active_(false) { |
+ data_.id = 0; |
+ data_.role = ui::AX_ROLE_UNKNOWN; |
+ data_.state = 0; |
} |
BrowserAccessibility::~BrowserAccessibility() { |
} |
bool BrowserAccessibility::PlatformIsLeaf() const { |
- if (child_count() == 0) |
+ if (InternalChildCount() == 0) |
return true; |
// All of these roles may have children that we use as internal |
// implementation details, but we want to expose them as leaves |
// to platform accessibility APIs. |
- switch (role_) { |
+ switch (GetRole()) { |
case ui::AX_ROLE_EDITABLE_TEXT: |
case ui::AX_ROLE_SLIDER: |
case ui::AX_ROLE_STATIC_TEXT: |
@@ -58,40 +58,32 @@ bool BrowserAccessibility::PlatformIsLeaf() const { |
} |
uint32 BrowserAccessibility::PlatformChildCount() const { |
- return PlatformIsLeaf() ? 0 : children_.size(); |
+ return PlatformIsLeaf() ? 0 : InternalChildCount(); |
} |
void BrowserAccessibility::DetachTree( |
std::vector<BrowserAccessibility*>* nodes) { |
nodes->push_back(this); |
- for (size_t i = 0; i < children_.size(); ++i) |
- children_[i]->DetachTree(nodes); |
- children_.clear(); |
- parent_ = NULL; |
+ for (size_t i = 0; i < InternalChildCount(); ++i) |
+ InternalGetChild(i)->DetachTree(nodes); |
+ deprecated_children_.clear(); |
+ deprecated_parent_ = NULL; |
} |
void BrowserAccessibility::InitializeTreeStructure( |
BrowserAccessibilityManager* manager, |
BrowserAccessibility* parent, |
- int32 renderer_id, |
+ int32 id, |
int32 index_in_parent) { |
manager_ = manager; |
- parent_ = parent; |
- renderer_id_ = renderer_id; |
- index_in_parent_ = index_in_parent; |
+ deprecated_parent_ = parent; |
+ data_.id = id; |
+ deprecated_index_in_parent_ = index_in_parent; |
} |
void BrowserAccessibility::InitializeData(const ui::AXNodeData& src) { |
- DCHECK_EQ(renderer_id_, src.id); |
- 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; |
+ DCHECK_EQ(data_.id, src.id); |
+ data_ = src; |
instance_active_ = true; |
GetStringAttribute(ui::AX_ATTR_NAME, &name_); |
@@ -106,25 +98,25 @@ bool BrowserAccessibility::IsNative() const { |
void BrowserAccessibility::SwapChildren( |
std::vector<BrowserAccessibility*>& children) { |
- children.swap(children_); |
+ children.swap(deprecated_children_); |
} |
void BrowserAccessibility::UpdateParent(BrowserAccessibility* parent, |
int index_in_parent) { |
- parent_ = parent; |
- index_in_parent_ = index_in_parent; |
+ deprecated_parent_ = parent; |
+ deprecated_index_in_parent_ = index_in_parent; |
} |
void BrowserAccessibility::SetLocation(const gfx::Rect& new_location) { |
- location_ = new_location; |
+ data_.location = new_location; |
} |
bool BrowserAccessibility::IsDescendantOf( |
BrowserAccessibility* ancestor) { |
if (this == ancestor) { |
return true; |
- } else if (parent_) { |
- return parent_->IsDescendantOf(ancestor); |
+ } else if (GetParent()) { |
+ return GetParent()->IsDescendantOf(ancestor); |
} |
return false; |
@@ -132,54 +124,55 @@ bool BrowserAccessibility::IsDescendantOf( |
BrowserAccessibility* BrowserAccessibility::PlatformGetChild( |
uint32 child_index) const { |
- DCHECK(child_index < children_.size()); |
- return children_[child_index]; |
+ DCHECK(child_index < InternalChildCount()); |
+ return InternalGetChild(child_index); |
} |
BrowserAccessibility* BrowserAccessibility::GetPreviousSibling() { |
- if (parent_ && index_in_parent_ > 0) |
- return parent_->children_[index_in_parent_ - 1]; |
+ if (GetParent() && GetIndexInParent() > 0) |
+ return GetParent()->InternalGetChild(GetIndexInParent() - 1); |
return NULL; |
} |
BrowserAccessibility* BrowserAccessibility::GetNextSibling() { |
- if (parent_ && |
- index_in_parent_ >= 0 && |
- index_in_parent_ < static_cast<int>(parent_->children_.size() - 1)) { |
- return parent_->children_[index_in_parent_ + 1]; |
+ if (GetParent() && |
+ GetIndexInParent() >= 0 && |
+ GetIndexInParent() < static_cast<int>( |
+ GetParent()->InternalChildCount() - 1)) { |
+ return GetParent()->InternalGetChild(GetIndexInParent() + 1); |
} |
return NULL; |
} |
gfx::Rect BrowserAccessibility::GetLocalBoundsRect() const { |
- gfx::Rect bounds = location_; |
+ gfx::Rect bounds = GetLocation(); |
// Walk up the parent chain. Every time we encounter a Web Area, offset |
// based on the scroll bars and then offset based on the origin of that |
// nested web area. |
- BrowserAccessibility* parent = parent_; |
+ BrowserAccessibility* parent = GetParent(); |
bool need_to_offset_web_area = |
- (role_ == ui::AX_ROLE_WEB_AREA || |
- role_ == ui::AX_ROLE_ROOT_WEB_AREA); |
+ (GetRole() == ui::AX_ROLE_WEB_AREA || |
+ GetRole() == ui::AX_ROLE_ROOT_WEB_AREA); |
while (parent) { |
if (need_to_offset_web_area && |
- parent->location().width() > 0 && |
- parent->location().height() > 0) { |
- bounds.Offset(parent->location().x(), parent->location().y()); |
+ parent->GetLocation().width() > 0 && |
+ parent->GetLocation().height() > 0) { |
+ bounds.Offset(parent->GetLocation().x(), parent->GetLocation().y()); |
need_to_offset_web_area = false; |
} |
// On some platforms, we don't want to take the root scroll offsets |
// into account. |
- if (parent->role() == ui::AX_ROLE_ROOT_WEB_AREA && |
+ if (parent->GetRole() == ui::AX_ROLE_ROOT_WEB_AREA && |
!manager()->UseRootScrollOffsetsWhenComputingBounds()) { |
break; |
} |
- if (parent->role() == ui::AX_ROLE_WEB_AREA || |
- parent->role() == ui::AX_ROLE_ROOT_WEB_AREA) { |
+ if (parent->GetRole() == ui::AX_ROLE_WEB_AREA || |
+ parent->GetRole() == ui::AX_ROLE_ROOT_WEB_AREA) { |
int sx = 0; |
int sy = 0; |
if (parent->GetIntAttribute(ui::AX_ATTR_SCROLL_X, &sx) && |
@@ -188,7 +181,7 @@ gfx::Rect BrowserAccessibility::GetLocalBoundsRect() const { |
} |
need_to_offset_web_area = true; |
} |
- parent = parent->parent(); |
+ parent = parent->GetParent(); |
} |
return bounds; |
@@ -206,14 +199,14 @@ gfx::Rect BrowserAccessibility::GetGlobalBoundsRect() const { |
gfx::Rect BrowserAccessibility::GetLocalBoundsForRange(int start, int len) |
const { |
- if (role() != ui::AX_ROLE_STATIC_TEXT) { |
+ if (GetRole() != ui::AX_ROLE_STATIC_TEXT) { |
// Apply recursively to all static text descendants. For example, if |
// you call it on a div with two text node children, it just calls |
// GetLocalBoundsForRange on each of the two children (adjusting |
// |start| for each one) and unions the resulting rects. |
gfx::Rect bounds; |
- for (size_t i = 0; i < children_.size(); ++i) { |
- BrowserAccessibility* child = children_[i]; |
+ for (size_t i = 0; i < InternalChildCount(); ++i) { |
+ BrowserAccessibility* child = InternalGetChild(i); |
int child_len = child->GetStaticTextLenRecursive(); |
if (start < child_len && start + len > 0) { |
gfx::Rect child_rect = child->GetLocalBoundsForRange(start, len); |
@@ -229,9 +222,9 @@ gfx::Rect BrowserAccessibility::GetLocalBoundsForRange(int start, int len) |
int child_end = 0; |
gfx::Rect bounds; |
- for (size_t i = 0; i < children_.size() && child_end < start + len; ++i) { |
- BrowserAccessibility* child = children_[i]; |
- DCHECK_EQ(child->role(), ui::AX_ROLE_INLINE_TEXT_BOX); |
+ for (size_t i = 0; i < InternalChildCount() && child_end < start + len; ++i) { |
+ BrowserAccessibility* child = InternalGetChild(i); |
+ DCHECK_EQ(child->GetRole(), ui::AX_ROLE_INLINE_TEXT_BOX); |
std::string child_text; |
child->GetStringAttribute(ui::AX_ATTR_VALUE, &child_text); |
int child_len = static_cast<int>(child_text.size()); |
@@ -247,7 +240,7 @@ gfx::Rect BrowserAccessibility::GetLocalBoundsForRange(int start, int len) |
int local_start = overlap_start - child_start; |
int local_end = overlap_end - child_start; |
- gfx::Rect child_rect = child->location(); |
+ gfx::Rect child_rect = child->GetLocation(); |
int text_direction = child->GetIntAttribute( |
ui::AX_ATTR_TEXT_DIRECTION); |
const std::vector<int32>& character_offsets = child->GetIntListAttribute( |
@@ -328,7 +321,7 @@ BrowserAccessibility* BrowserAccessibility::BrowserAccessibilityForPoint( |
// Skip table columns because cells are only contained in rows, |
// not columns. |
- if (child->role() == ui::AX_ROLE_COLUMN) |
+ if (child->GetRole() == ui::AX_ROLE_COLUMN) |
continue; |
if (child->GetGlobalBoundsRect().Contains(point)) { |
@@ -358,12 +351,9 @@ BrowserAccessibility* BrowserAccessibility::BrowserAccessibilityForPoint( |
} |
void BrowserAccessibility::Destroy() { |
- for (std::vector<BrowserAccessibility*>::iterator iter = children_.begin(); |
- iter != children_.end(); |
- ++iter) { |
- (*iter)->Destroy(); |
- } |
- children_.clear(); |
+ for (uint32 i = 0; i < InternalChildCount(); i++) |
+ InternalGetChild(i)->Destroy(); |
+ deprecated_children_.clear(); |
// Allow the object to fire a TextRemoved notification. |
name_.clear(); |
@@ -383,8 +373,8 @@ void BrowserAccessibility::NativeReleaseReference() { |
bool BrowserAccessibility::HasBoolAttribute( |
ui::AXBoolAttribute attribute) const { |
- for (size_t i = 0; i < bool_attributes_.size(); ++i) { |
- if (bool_attributes_[i].first == attribute) |
+ for (size_t i = 0; i < data_.bool_attributes.size(); ++i) { |
+ if (data_.bool_attributes[i].first == attribute) |
return true; |
} |
@@ -394,9 +384,9 @@ bool BrowserAccessibility::HasBoolAttribute( |
bool BrowserAccessibility::GetBoolAttribute( |
ui::AXBoolAttribute attribute) const { |
- for (size_t i = 0; i < bool_attributes_.size(); ++i) { |
- if (bool_attributes_[i].first == attribute) |
- return bool_attributes_[i].second; |
+ for (size_t i = 0; i < data_.bool_attributes.size(); ++i) { |
+ if (data_.bool_attributes[i].first == attribute) |
+ return data_.bool_attributes[i].second; |
} |
return false; |
@@ -404,9 +394,9 @@ bool BrowserAccessibility::GetBoolAttribute( |
bool BrowserAccessibility::GetBoolAttribute( |
ui::AXBoolAttribute attribute, bool* value) const { |
- for (size_t i = 0; i < bool_attributes_.size(); ++i) { |
- if (bool_attributes_[i].first == attribute) { |
- *value = bool_attributes_[i].second; |
+ for (size_t i = 0; i < data_.bool_attributes.size(); ++i) { |
+ if (data_.bool_attributes[i].first == attribute) { |
+ *value = data_.bool_attributes[i].second; |
return true; |
} |
} |
@@ -416,8 +406,8 @@ bool BrowserAccessibility::GetBoolAttribute( |
bool BrowserAccessibility::HasFloatAttribute( |
ui::AXFloatAttribute attribute) const { |
- for (size_t i = 0; i < float_attributes_.size(); ++i) { |
- if (float_attributes_[i].first == attribute) |
+ for (size_t i = 0; i < data_.float_attributes.size(); ++i) { |
+ if (data_.float_attributes[i].first == attribute) |
return true; |
} |
@@ -426,9 +416,9 @@ bool BrowserAccessibility::HasFloatAttribute( |
float BrowserAccessibility::GetFloatAttribute( |
ui::AXFloatAttribute attribute) const { |
- for (size_t i = 0; i < float_attributes_.size(); ++i) { |
- if (float_attributes_[i].first == attribute) |
- return float_attributes_[i].second; |
+ for (size_t i = 0; i < data_.float_attributes.size(); ++i) { |
+ if (data_.float_attributes[i].first == attribute) |
+ return data_.float_attributes[i].second; |
} |
return 0.0; |
@@ -436,9 +426,9 @@ float BrowserAccessibility::GetFloatAttribute( |
bool BrowserAccessibility::GetFloatAttribute( |
ui::AXFloatAttribute attribute, float* value) const { |
- for (size_t i = 0; i < float_attributes_.size(); ++i) { |
- if (float_attributes_[i].first == attribute) { |
- *value = float_attributes_[i].second; |
+ for (size_t i = 0; i < data_.float_attributes.size(); ++i) { |
+ if (data_.float_attributes[i].first == attribute) { |
+ *value = data_.float_attributes[i].second; |
return true; |
} |
} |
@@ -448,8 +438,8 @@ bool BrowserAccessibility::GetFloatAttribute( |
bool BrowserAccessibility::HasIntAttribute( |
ui::AXIntAttribute attribute) const { |
- for (size_t i = 0; i < int_attributes_.size(); ++i) { |
- if (int_attributes_[i].first == attribute) |
+ for (size_t i = 0; i < data_.int_attributes.size(); ++i) { |
+ if (data_.int_attributes[i].first == attribute) |
return true; |
} |
@@ -457,9 +447,9 @@ bool BrowserAccessibility::HasIntAttribute( |
} |
int BrowserAccessibility::GetIntAttribute(ui::AXIntAttribute attribute) const { |
- for (size_t i = 0; i < int_attributes_.size(); ++i) { |
- if (int_attributes_[i].first == attribute) |
- return int_attributes_[i].second; |
+ for (size_t i = 0; i < data_.int_attributes.size(); ++i) { |
+ if (data_.int_attributes[i].first == attribute) |
+ return data_.int_attributes[i].second; |
} |
return 0; |
@@ -467,9 +457,9 @@ int BrowserAccessibility::GetIntAttribute(ui::AXIntAttribute attribute) const { |
bool BrowserAccessibility::GetIntAttribute( |
ui::AXIntAttribute attribute, int* value) const { |
- for (size_t i = 0; i < int_attributes_.size(); ++i) { |
- if (int_attributes_[i].first == attribute) { |
- *value = int_attributes_[i].second; |
+ for (size_t i = 0; i < data_.int_attributes.size(); ++i) { |
+ if (data_.int_attributes[i].first == attribute) { |
+ *value = data_.int_attributes[i].second; |
return true; |
} |
} |
@@ -479,8 +469,8 @@ bool BrowserAccessibility::GetIntAttribute( |
bool BrowserAccessibility::HasStringAttribute( |
ui::AXStringAttribute attribute) const { |
- for (size_t i = 0; i < string_attributes_.size(); ++i) { |
- if (string_attributes_[i].first == attribute) |
+ for (size_t i = 0; i < data_.string_attributes.size(); ++i) { |
+ if (data_.string_attributes[i].first == attribute) |
return true; |
} |
@@ -490,9 +480,9 @@ bool BrowserAccessibility::HasStringAttribute( |
const std::string& BrowserAccessibility::GetStringAttribute( |
ui::AXStringAttribute attribute) const { |
CR_DEFINE_STATIC_LOCAL(std::string, empty_string, ()); |
- for (size_t i = 0; i < string_attributes_.size(); ++i) { |
- if (string_attributes_[i].first == attribute) |
- return string_attributes_[i].second; |
+ for (size_t i = 0; i < data_.string_attributes.size(); ++i) { |
+ if (data_.string_attributes[i].first == attribute) |
+ return data_.string_attributes[i].second; |
} |
return empty_string; |
@@ -500,9 +490,9 @@ const std::string& BrowserAccessibility::GetStringAttribute( |
bool BrowserAccessibility::GetStringAttribute( |
ui::AXStringAttribute attribute, std::string* value) const { |
- for (size_t i = 0; i < string_attributes_.size(); ++i) { |
- if (string_attributes_[i].first == attribute) { |
- *value = string_attributes_[i].second; |
+ for (size_t i = 0; i < data_.string_attributes.size(); ++i) { |
+ if (data_.string_attributes[i].first == attribute) { |
+ *value = data_.string_attributes[i].second; |
return true; |
} |
} |
@@ -530,20 +520,20 @@ bool BrowserAccessibility::GetString16Attribute( |
void BrowserAccessibility::SetStringAttribute( |
ui::AXStringAttribute 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; |
+ for (size_t i = 0; i < data_.string_attributes.size(); ++i) { |
+ if (data_.string_attributes[i].first == attribute) { |
+ data_.string_attributes[i].second = value; |
return; |
} |
} |
if (!value.empty()) |
- string_attributes_.push_back(std::make_pair(attribute, value)); |
+ data_.string_attributes.push_back(std::make_pair(attribute, value)); |
} |
bool BrowserAccessibility::HasIntListAttribute( |
ui::AXIntListAttribute attribute) const { |
- for (size_t i = 0; i < intlist_attributes_.size(); ++i) { |
- if (intlist_attributes_[i].first == attribute) |
+ for (size_t i = 0; i < data_.intlist_attributes.size(); ++i) { |
+ if (data_.intlist_attributes[i].first == attribute) |
return true; |
} |
@@ -553,9 +543,9 @@ bool BrowserAccessibility::HasIntListAttribute( |
const std::vector<int32>& BrowserAccessibility::GetIntListAttribute( |
ui::AXIntListAttribute 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; |
+ for (size_t i = 0; i < data_.intlist_attributes.size(); ++i) { |
+ if (data_.intlist_attributes[i].first == attribute) |
+ return data_.intlist_attributes[i].second; |
} |
return empty_vector; |
@@ -564,9 +554,9 @@ const std::vector<int32>& BrowserAccessibility::GetIntListAttribute( |
bool BrowserAccessibility::GetIntListAttribute( |
ui::AXIntListAttribute attribute, |
std::vector<int32>* value) const { |
- for (size_t i = 0; i < intlist_attributes_.size(); ++i) { |
- if (intlist_attributes_[i].first == attribute) { |
- *value = intlist_attributes_[i].second; |
+ for (size_t i = 0; i < data_.intlist_attributes.size(); ++i) { |
+ if (data_.intlist_attributes[i].first == attribute) { |
+ *value = data_.intlist_attributes[i].second; |
return true; |
} |
} |
@@ -576,10 +566,10 @@ bool BrowserAccessibility::GetIntListAttribute( |
bool BrowserAccessibility::GetHtmlAttribute( |
const char* html_attr, std::string* value) const { |
- for (size_t i = 0; i < html_attributes_.size(); ++i) { |
- const std::string& attr = html_attributes_[i].first; |
+ for (size_t i = 0; i < GetHtmlAttributes().size(); ++i) { |
+ const std::string& attr = GetHtmlAttributes()[i].first; |
if (LowerCaseEqualsASCII(attr, html_attr)) { |
- *value = html_attributes_[i].second; |
+ *value = GetHtmlAttributes()[i].second; |
return true; |
} |
} |
@@ -622,14 +612,14 @@ bool BrowserAccessibility::GetAriaTristate( |
} |
bool BrowserAccessibility::HasState(ui::AXState state_enum) const { |
- return (state_ >> state_enum) & 1; |
+ return (GetState() >> state_enum) & 1; |
} |
bool BrowserAccessibility::IsEditableText() const { |
// These roles don't have readonly set, but they're not editable text. |
- if (role_ == ui::AX_ROLE_SCROLL_AREA || |
- role_ == ui::AX_ROLE_COLUMN || |
- role_ == ui::AX_ROLE_TABLE_HEADER_CONTAINER) { |
+ if (GetRole() == ui::AX_ROLE_SCROLL_AREA || |
+ GetRole() == ui::AX_ROLE_COLUMN || |
+ GetRole() == ui::AX_ROLE_TABLE_HEADER_CONTAINER) { |
return false; |
} |
@@ -637,8 +627,8 @@ bool BrowserAccessibility::IsEditableText() const { |
// or contenteditable. We also check for editable text roles to cover |
// another element that has role=textbox set on it. |
return (!HasState(ui::AX_STATE_READ_ONLY) || |
- role_ == ui::AX_ROLE_TEXT_FIELD || |
- role_ == ui::AX_ROLE_TEXT_AREA); |
+ GetRole() == ui::AX_ROLE_TEXT_FIELD || |
+ GetRole() == ui::AX_ROLE_TEXT_AREA); |
} |
std::string BrowserAccessibility::GetTextRecursive() const { |
@@ -653,12 +643,12 @@ std::string BrowserAccessibility::GetTextRecursive() const { |
} |
int BrowserAccessibility::GetStaticTextLenRecursive() const { |
- if (role_ == ui::AX_ROLE_STATIC_TEXT) |
+ if (GetRole() == ui::AX_ROLE_STATIC_TEXT) |
return static_cast<int>(GetStringAttribute(ui::AX_ATTR_VALUE).size()); |
int len = 0; |
- for (size_t i = 0; i < children_.size(); ++i) |
- len += children_[i]->GetStaticTextLenRecursive(); |
+ for (size_t i = 0; i < InternalChildCount(); ++i) |
+ len += InternalGetChild(i)->GetStaticTextLenRecursive(); |
return len; |
} |