| Index: content/browser/accessibility/browser_accessibility.cc
|
| diff --git a/content/browser/accessibility/browser_accessibility.cc b/content/browser/accessibility/browser_accessibility.cc
|
| index fcfd3655a8a6380c8e73c5453e4768e28f8c8e85..e904b6b3f5409cbcfdf70abf2ffa885061f0964e 100644
|
| --- a/content/browser/accessibility/browser_accessibility.cc
|
| +++ b/content/browser/accessibility/browser_accessibility.cc
|
| @@ -19,7 +19,8 @@ typedef AccessibilityNodeData::StringAttribute StringAttribute;
|
|
|
| #if !defined(OS_MACOSX) && \
|
| !defined(OS_WIN) && \
|
| - !defined(TOOLKIT_GTK)
|
| + !defined(TOOLKIT_GTK) && \
|
| + !defined(OS_ANDROID)
|
| // We have subclassess of BrowserAccessibility on Mac, Linux/GTK,
|
| // and Win. For any other platform, instantiate the base class.
|
| // static
|
| @@ -112,7 +113,7 @@ bool BrowserAccessibility::IsDescendantOf(
|
| return false;
|
| }
|
|
|
| -BrowserAccessibility* BrowserAccessibility::GetChild(uint32 child_index) {
|
| +BrowserAccessibility* BrowserAccessibility::GetChild(uint32 child_index) const {
|
| DCHECK(child_index < children_.size());
|
| return children_[child_index];
|
| }
|
| @@ -134,7 +135,7 @@ BrowserAccessibility* BrowserAccessibility::GetNextSibling() {
|
| return NULL;
|
| }
|
|
|
| -gfx::Rect BrowserAccessibility::GetLocalBoundsRect() {
|
| +gfx::Rect BrowserAccessibility::GetLocalBoundsRect() const {
|
| gfx::Rect bounds = location_;
|
|
|
| // Walk up the parent chain. Every time we encounter a Web Area, offset
|
| @@ -151,6 +152,14 @@ gfx::Rect BrowserAccessibility::GetLocalBoundsRect() {
|
| bounds.Offset(parent->location().x(), parent->location().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() == AccessibilityNodeData::ROLE_ROOT_WEB_AREA &&
|
| + !manager()->UseRootScrollOffsetsWhenComputingBounds()) {
|
| + break;
|
| + }
|
| +
|
| if (parent->role() == AccessibilityNodeData::ROLE_WEB_AREA ||
|
| parent->role() == AccessibilityNodeData::ROLE_ROOT_WEB_AREA) {
|
| int sx = 0;
|
| @@ -167,7 +176,7 @@ gfx::Rect BrowserAccessibility::GetLocalBoundsRect() {
|
| return bounds;
|
| }
|
|
|
| -gfx::Rect BrowserAccessibility::GetGlobalBoundsRect() {
|
| +gfx::Rect BrowserAccessibility::GetGlobalBoundsRect() const {
|
| gfx::Rect bounds = GetLocalBoundsRect();
|
|
|
| // Adjust the bounds by the top left corner of the containing view's bounds
|
| @@ -303,6 +312,13 @@ bool BrowserAccessibility::HasState(
|
| }
|
|
|
| bool BrowserAccessibility::IsEditableText() const {
|
| + // These roles don't have readonly set, but they're not editable text.
|
| + if (role_ == AccessibilityNodeData::ROLE_SCROLLAREA ||
|
| + role_ == AccessibilityNodeData::ROLE_COLUMN ||
|
| + role_ == AccessibilityNodeData::ROLE_TABLE_HEADER_CONTAINER) {
|
| + return false;
|
| + }
|
| +
|
| // Note: STATE_READONLY being false means it's either a text control,
|
| // or contenteditable. We also check for editable text roles to cover
|
| // another element that has role=textbox set on it.
|
|
|