summaryrefslogtreecommitdiffstats
path: root/chrome/browser/accessibility/browser_accessibility.cc
diff options
context:
space:
mode:
authordmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-25 05:16:22 +0000
committerdmazzoni@chromium.org <dmazzoni@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-25 05:16:22 +0000
commitba1fa653e6f4137c6c4441d15e3a8e71d2f9d719 (patch)
treeb663c5d75a7d64ac73af84c82f9abe1986ae8f76 /chrome/browser/accessibility/browser_accessibility.cc
parent94f8c957011e0d1f9a28607a05066edc2989eaa2 (diff)
downloadchromium_src-ba1fa653e6f4137c6c4441d15e3a8e71d2f9d719.zip
chromium_src-ba1fa653e6f4137c6c4441d15e3a8e71d2f9d719.tar.gz
chromium_src-ba1fa653e6f4137c6c4441d15e3a8e71d2f9d719.tar.bz2
Re-land: Move browser accessibility code from chrome to content.
BUG=85932 TEST=none Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=90435 Review URL: http://codereview.chromium.org/7233022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90495 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/accessibility/browser_accessibility.cc')
-rw-r--r--chrome/browser/accessibility/browser_accessibility.cc204
1 files changed, 0 insertions, 204 deletions
diff --git a/chrome/browser/accessibility/browser_accessibility.cc b/chrome/browser/accessibility/browser_accessibility.cc
deleted file mode 100644
index 92a4819..0000000
--- a/chrome/browser/accessibility/browser_accessibility.cc
+++ /dev/null
@@ -1,204 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/accessibility/browser_accessibility.h"
-
-#include "base/logging.h"
-#include "base/string_number_conversions.h"
-#include "chrome/browser/accessibility/browser_accessibility_manager.h"
-
-#if defined(OS_POSIX) && !defined(OS_MACOSX)
-// There's no OS-specific implementation of BrowserAccessibilityManager
-// on Unix, so just instantiate the base class.
-// static
-BrowserAccessibility* BrowserAccessibility::Create() {
- return new BrowserAccessibility();
-}
-#endif
-
-BrowserAccessibility::BrowserAccessibility()
- : manager_(NULL),
- parent_(NULL),
- child_id_(0),
- index_in_parent_(0),
- renderer_id_(0),
- ref_count_(1),
- role_(0),
- state_(0),
- instance_active_(false) {
-}
-
-BrowserAccessibility::~BrowserAccessibility() {
-}
-
-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;
-}
-
-void BrowserAccessibility::Initialize(
- BrowserAccessibilityManager* manager,
- BrowserAccessibility* parent,
- int32 child_id,
- int32 index_in_parent,
- const webkit_glue::WebAccessibility& src) {
- manager_ = manager;
- parent_ = parent;
- child_id_ = child_id;
- index_in_parent_ = index_in_parent;
-
- renderer_id_ = src.id;
- name_ = src.name;
- value_ = src.value;
- attributes_ = src.attributes;
- html_attributes_ = src.html_attributes;
- location_ = src.location;
- role_ = src.role;
- state_ = src.state;
- indirect_child_ids_ = src.indirect_child_ids;
- line_breaks_ = src.line_breaks;
-
- Initialize();
-}
-
-void BrowserAccessibility::Initialize() {
- instance_active_ = true;
-}
-
-void BrowserAccessibility::AddChild(BrowserAccessibility* child) {
- children_.push_back(child);
-}
-
-void BrowserAccessibility::UpdateParent(BrowserAccessibility* parent,
- int index_in_parent) {
- parent_ = parent;
- index_in_parent_ = index_in_parent;
-}
-
-bool BrowserAccessibility::IsDescendantOf(
- BrowserAccessibility* ancestor) {
- if (this == ancestor) {
- return true;
- } else if (parent_) {
- return parent_->IsDescendantOf(ancestor);
- }
-
- return false;
-}
-
-BrowserAccessibility* BrowserAccessibility::GetChild(uint32 child_index) {
- DCHECK(child_index < children_.size());
- return children_[child_index];
-}
-
-BrowserAccessibility* BrowserAccessibility::GetPreviousSibling() {
- if (parent_ && index_in_parent_ > 0)
- return parent_->children_[index_in_parent_ - 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];
- }
-
- return NULL;
-}
-
-gfx::Rect BrowserAccessibility::GetBoundsRect() {
- gfx::Rect bounds = location_;
-
- // Adjust the bounds by the top left corner of the containing view's bounds
- // in screen coordinates.
- gfx::Point top_left = manager_->GetViewBounds().origin();
- bounds.Offset(top_left);
-
- // Adjust top left position by the root document's scroll offset.
- BrowserAccessibility* root = manager_->GetRoot();
- int scroll_x = 0;
- int scroll_y = 0;
- root->GetAttributeAsInt(
- WebAccessibility::ATTR_DOC_SCROLLX, &scroll_x);
- root->GetAttributeAsInt(
- WebAccessibility::ATTR_DOC_SCROLLY, &scroll_y);
- bounds.Offset(-scroll_x, -scroll_y);
-
- return bounds;
-}
-
-BrowserAccessibility* BrowserAccessibility::BrowserAccessibilityForPoint(
- const gfx::Point& point) {
- // Walk the children recursively looking for the BrowserAccessibility that
- // most tightly encloses the specified point.
- for (int i = children_.size() - 1; i >= 0; --i) {
- BrowserAccessibility* child = children_[i];
- if (child->GetBoundsRect().Contains(point))
- return child->BrowserAccessibilityForPoint(point);
- }
- return this;
-}
-
-void BrowserAccessibility::InternalAddReference() {
- ref_count_++;
-}
-
-void BrowserAccessibility::InternalReleaseReference(bool recursive) {
- DCHECK_GT(ref_count_, 0);
-
- if (recursive || ref_count_ == 1) {
- for (std::vector<BrowserAccessibility*>::iterator iter = children_.begin();
- iter != children_.end();
- ++iter) {
- (*iter)->InternalReleaseReference(true);
- }
- }
-
- ref_count_--;
- if (ref_count_ == 0) {
- instance_active_ = false;
- children_.clear();
- manager_->Remove(child_id_, renderer_id_);
- NativeReleaseReference();
- }
-}
-
-void BrowserAccessibility::NativeReleaseReference() {
- delete this;
-}
-
-bool BrowserAccessibility::HasAttribute(
- WebAccessibility::Attribute attribute) {
- return (attributes_.find(attribute) != attributes_.end());
-}
-
-bool BrowserAccessibility::GetAttribute(
- WebAccessibility::Attribute attribute, string16* value) {
- std::map<int32, string16>::iterator iter = attributes_.find(attribute);
- if (iter != attributes_.end()) {
- *value = iter->second;
- return true;
- }
-
- return false;
-}
-
-bool BrowserAccessibility::GetAttributeAsInt(
- WebAccessibility::Attribute attribute, int* value_int) {
- string16 value_str;
-
- if (!GetAttribute(attribute, &value_str))
- return false;
-
- if (!base::StringToInt(value_str, value_int))
- return false;
-
- return true;
-}