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

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

Issue 3551015: Make BrowserAccessibilityManager cross platform. Step 2. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Addressing linux (shlib dbg) and mac (clang) buildbot compile errors. Created 10 years, 2 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: chrome/browser/accessibility/browser_accessibility.cc
===================================================================
--- chrome/browser/accessibility/browser_accessibility.cc (revision 61758)
+++ chrome/browser/accessibility/browser_accessibility.cc (working copy)
@@ -4,8 +4,102 @@
#include "chrome/browser/accessibility/browser_accessibility.h"
+#include "base/logging.h"
+#include "chrome/browser/accessibility/browser_accessibility_manager.h"
+
BrowserAccessibility::BrowserAccessibility() {
}
BrowserAccessibility::~BrowserAccessibility() {
}
+
+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;
+
+ Initialize();
+}
+
+void BrowserAccessibility::ReleaseTree() {
+ // Now we can safely call InactivateTree on our children and remove
+ // references to them, so that as much of the tree as possible will be
+ // destroyed now - however, nodes that still have references to them
+ // might stick around a while until all clients have released them.
+ for (std::vector<BrowserAccessibility*>::iterator iter =
+ children_.begin();
+ iter != children_.end(); ++iter) {
+ (*iter)->ReleaseTree();
+ (*iter)->ReleaseReference();
+ }
+ children_.clear();
+ manager_->Remove(child_id_);
+}
+
+void BrowserAccessibility::AddChild(BrowserAccessibility* child) {
+ children_.push_back(child);
+}
+
+bool BrowserAccessibility::IsDescendantOf(
+ BrowserAccessibility* ancestor) {
+ if (this == ancestor) {
+ return true;
+ } else if (parent_) {
+ return parent_->IsDescendantOf(ancestor);
+ }
+
+ return false;
+}
+
+BrowserAccessibility* BrowserAccessibility::GetParent() {
+ return parent_;
+}
+
+uint32 BrowserAccessibility::GetChildCount() {
+ return children_.size();
+}
+
+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;
+}
+
+void BrowserAccessibility::ReplaceChild(
+ const BrowserAccessibility* old_acc, BrowserAccessibility* new_acc) {
+ DCHECK_EQ(children_[old_acc->index_in_parent_], old_acc);
+
+ old_acc = children_[old_acc->index_in_parent_];
+ children_[old_acc->index_in_parent_] = new_acc;
+}
« no previous file with comments | « chrome/browser/accessibility/browser_accessibility.h ('k') | chrome/browser/accessibility/browser_accessibility_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698