summaryrefslogtreecommitdiffstats
path: root/chrome/browser/accessibility/browser_accessibility.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/accessibility/browser_accessibility.h')
-rw-r--r--chrome/browser/accessibility/browser_accessibility.h106
1 files changed, 105 insertions, 1 deletions
diff --git a/chrome/browser/accessibility/browser_accessibility.h b/chrome/browser/accessibility/browser_accessibility.h
index a7d9719..bdf374e 100644
--- a/chrome/browser/accessibility/browser_accessibility.h
+++ b/chrome/browser/accessibility/browser_accessibility.h
@@ -6,7 +6,20 @@
#define CHROME_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_H_
#pragma once
+#include <map>
+#include <utility>
+#include <vector>
+
#include "base/basictypes.h"
+#include "build/build_config.h"
+#include "webkit/glue/webaccessibility.h"
+
+class BrowserAccessibilityManager;
+#if defined(OS_WIN)
+class BrowserAccessibilityWin;
+#endif
+
+using webkit_glue::WebAccessibility;
////////////////////////////////////////////////////////////////////////////////
//
@@ -22,13 +35,104 @@
////////////////////////////////////////////////////////////////////////////////
class BrowserAccessibility {
public:
- // Creates the platform specific BrowserAccessibility. Ownership passes to the
+ // Creates a platform specific BrowserAccessibility. Ownership passes to the
// caller.
+ static BrowserAccessibility* Create();
+
virtual ~BrowserAccessibility();
+ // Perform platform specific initialization. This can be called multiple times
+ // during the lifetime of this instance after the members of this base object
+ // have been reset with new values from the renderer process.
+ virtual void Initialize() = 0;
+
+ // Remove references to all children and delete them if possible.
+ virtual void ReleaseTree();
+
+ // Release a reference to this node. This may be a no-op on platforms other
+ // than windows.
+ virtual void ReleaseReference() = 0;
+
+ // Initialize this object
+ void Initialize(BrowserAccessibilityManager* manager,
+ BrowserAccessibility* parent,
+ int32 child_id,
+ int32 index_in_parent,
+ const WebAccessibility& src);
+
+ // Add a child of this object.
+ void AddChild(BrowserAccessibility* child);
+
+ // Return true if this object is equal to or a descendant of |ancestor|.
+ bool IsDescendantOf(BrowserAccessibility* ancestor);
+
+ // Returns the parent of this object, or NULL if it's the root.
+ BrowserAccessibility* GetParent();
+
+ // Returns the number of children of this object.
+ uint32 GetChildCount();
+
+ // Return a pointer to the child with the given index.
+ BrowserAccessibility* GetChild(uint32 child_index);
+
+ // Return the previous sibling of this object, or NULL if it's the first
+ // child of its parent.
+ BrowserAccessibility* GetPreviousSibling();
+
+ // Return the next sibling of this object, or NULL if it's the last child
+ // of its parent.
+ BrowserAccessibility* GetNextSibling();
+
+ // Replace a child object. Used when updating the accessibility tree.
+ void ReplaceChild(
+ const BrowserAccessibility* old_acc,
+ BrowserAccessibility* new_acc);
+
+ // Accessors
+ int32 child_id() const { return child_id_; }
+ const std::vector<BrowserAccessibility*>& children() const {
+ return children_;
+ }
+ int32 renderer_id() const { return renderer_id_; }
+ int32 index_in_parent() const { return index_in_parent_; }
+ WebKit::WebRect location() const { return location_; }
+
+#if defined(OS_WIN)
+ BrowserAccessibilityWin* toBrowserAccessibilityWin();
+#endif
+
protected:
BrowserAccessibility();
+ // The manager of this tree of accessibility objects; needed for
+ // global operations like focus tracking.
+ BrowserAccessibilityManager* manager_;
+
+ // The parent of this object, may be NULL if we're the root object.
+ BrowserAccessibility* parent_;
+
+ // The ID of this object; globally unique within the browser process.
+ int32 child_id_;
+
+ // The index of this within its parent object.
+ int32 index_in_parent_;
+
+ // The ID of this object in the renderer process.
+ int32 renderer_id_;
+
+ // The children of this object.
+ std::vector<BrowserAccessibility*> children_;
+
+ // Accessibility metadata from the renderer
+ string16 name_;
+ string16 value_;
+ std::map<int32, string16> attributes_;
+ std::vector<std::pair<string16, string16> > html_attributes_;
+ int32 role_;
+ int32 state_;
+ string16 role_name_;
+ WebKit::WebRect location_;
+
private:
DISALLOW_COPY_AND_ASSIGN(BrowserAccessibility);
};