1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
// Copyright (c) 2010 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.
#ifndef CHROME_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_H_
#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;
////////////////////////////////////////////////////////////////////////////////
//
// BrowserAccessibility
//
// Class implementing the cross platform interface for the Browser-Renderer
// communication of accessibility information, providing accessibility
// to be used by screen readers and other assistive technology (AT).
//
// An implementation for each platform handles platform specific accessibility
// APIs.
//
////////////////////////////////////////////////////////////////////////////////
class BrowserAccessibility {
public:
// 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);
};
#endif // CHROME_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_H_
|