summaryrefslogtreecommitdiffstats
path: root/content/browser/accessibility/browser_accessibility_manager_win.cc
diff options
context:
space:
mode:
authorckocagil@chromium.org <ckocagil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-21 12:53:12 +0000
committerckocagil@chromium.org <ckocagil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-21 12:53:12 +0000
commit6acc8ce6fb95d50bafac1ff1bc309a682a9a5b9f (patch)
treeb6c6144527c04a8fa1d770c3c64123fdad0af16e /content/browser/accessibility/browser_accessibility_manager_win.cc
parent2d9dc0565c59fb59e440ed798934481788457583 (diff)
downloadchromium_src-6acc8ce6fb95d50bafac1ff1bc309a682a9a5b9f.zip
chromium_src-6acc8ce6fb95d50bafac1ff1bc309a682a9a5b9f.tar.gz
chromium_src-6acc8ce6fb95d50bafac1ff1bc309a682a9a5b9f.tar.bz2
Revert of Make BrowserAccessibilityManager use AXTree. (https://codereview.chromium.org/234723003/)
Reason for revert: Broke Linux ASan LSan Tests (2) See http://build.chromium.org/p/chromium.memory/builders/Linux%20ASan%20LSan%20Tests%20%282%29/builds/1774 Original issue's description: > Make BrowserAccessibilityManager use AXTree. > > This is the final step of migrating content/*/accessibility to make > full use of the new infrastructure in ui/accessibility. > > Previously, BrowserAccessibilityManager owned the tree of > BrowserAccessibility objects and handled making changes to the > tree in response to messages from the renderer. Now, AXTree > handles the updates from the renderer and notifies > BrowserAccessibilityManager (via AXTreeDelegate) when it > should create or destroy BrowserAccessibility objects, and when > it should notify a BrowserAccessibility object that it's been > modified. > > This makes the serialization/unserialization logic fully tested now, > and greatly clarifies the semantics of when in the update cycle > various notifications are called (e.g., PreInitialize and PostInitialize > are now OnDataChanged and OnUpdateFinished). > > BUG=316726 > > Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=264979 TBR=aboxhall@chromium.org,dtseng@chromium.org,thakis@chromium.org,dmazzoni@chromium.org NOTREECHECKS=true NOTRY=true BUG=316726 Review URL: https://codereview.chromium.org/244883003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@264982 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/accessibility/browser_accessibility_manager_win.cc')
-rw-r--r--content/browser/accessibility/browser_accessibility_manager_win.cc56
1 files changed, 24 insertions, 32 deletions
diff --git a/content/browser/accessibility/browser_accessibility_manager_win.cc b/content/browser/accessibility/browser_accessibility_manager_win.cc
index 31f9d8a..7205d14 100644
--- a/content/browser/accessibility/browser_accessibility_manager_win.cc
+++ b/content/browser/accessibility/browser_accessibility_manager_win.cc
@@ -16,12 +16,12 @@ namespace content {
// static
BrowserAccessibilityManager* BrowserAccessibilityManager::Create(
- const ui::AXTreeUpdate& initial_tree,
+ const ui::AXNodeData& src,
BrowserAccessibilityDelegate* delegate,
BrowserAccessibilityFactory* factory) {
return new BrowserAccessibilityManagerWin(
content::LegacyRenderWidgetHostHWND::Create(GetDesktopWindow()).get(),
- NULL, initial_tree, delegate, factory);
+ NULL, src, delegate, factory);
}
BrowserAccessibilityManagerWin*
@@ -32,10 +32,10 @@ BrowserAccessibilityManager::ToBrowserAccessibilityManagerWin() {
BrowserAccessibilityManagerWin::BrowserAccessibilityManagerWin(
LegacyRenderWidgetHostHWND* accessible_hwnd,
IAccessible* parent_iaccessible,
- const ui::AXTreeUpdate& initial_tree,
+ const ui::AXNodeData& src,
BrowserAccessibilityDelegate* delegate,
BrowserAccessibilityFactory* factory)
- : BrowserAccessibilityManager(initial_tree, delegate, factory),
+ : BrowserAccessibilityManager(src, delegate, factory),
parent_hwnd_(accessible_hwnd->GetParent()),
parent_iaccessible_(parent_iaccessible),
tracked_scroll_object_(NULL),
@@ -53,7 +53,7 @@ BrowserAccessibilityManagerWin::~BrowserAccessibilityManagerWin() {
}
// static
-ui::AXTreeUpdate BrowserAccessibilityManagerWin::GetEmptyDocument() {
+ui::AXNodeData BrowserAccessibilityManagerWin::GetEmptyDocument() {
ui::AXNodeData empty_document;
empty_document.id = 0;
empty_document.role = ui::AX_ROLE_ROOT_WEB_AREA;
@@ -61,10 +61,7 @@ ui::AXTreeUpdate BrowserAccessibilityManagerWin::GetEmptyDocument() {
(1 << ui::AX_STATE_ENABLED) |
(1 << ui::AX_STATE_READ_ONLY) |
(1 << ui::AX_STATE_BUSY);
-
- ui::AXTreeUpdate update;
- update.nodes.push_back(empty_document);
- return update;
+ return empty_document;
}
void BrowserAccessibilityManagerWin::MaybeCallNotifyWinEvent(DWORD event,
@@ -84,22 +81,17 @@ void BrowserAccessibilityManagerWin::MaybeCallNotifyWinEvent(DWORD event,
::NotifyWinEvent(event, parent_hwnd(), OBJID_CLIENT, child_id);
}
-
-void BrowserAccessibilityManagerWin::OnNodeCreated(ui::AXNode* node) {
- BrowserAccessibilityManager::OnNodeCreated(node);
- BrowserAccessibility* obj = GetFromAXNode(node);
- LONG unique_id_win = obj->ToBrowserAccessibilityWin()->unique_id_win();
- unique_id_to_ax_id_map_[unique_id_win] = obj->GetId();
+void BrowserAccessibilityManagerWin::AddNodeToMap(BrowserAccessibility* node) {
+ BrowserAccessibilityManager::AddNodeToMap(node);
+ LONG unique_id_win = node->ToBrowserAccessibilityWin()->unique_id_win();
+ unique_id_to_renderer_id_map_[unique_id_win] = node->GetId();
}
-void BrowserAccessibilityManagerWin::OnNodeWillBeDeleted(ui::AXNode* node) {
- BrowserAccessibilityManager::OnNodeWillBeDeleted(node);
- BrowserAccessibility* obj = GetFromAXNode(node);
- if (!obj)
- return;
- unique_id_to_ax_id_map_.erase(
- obj->ToBrowserAccessibilityWin()->unique_id_win());
- if (obj == tracked_scroll_object_) {
+void BrowserAccessibilityManagerWin::RemoveNode(BrowserAccessibility* node) {
+ unique_id_to_renderer_id_map_.erase(
+ node->ToBrowserAccessibilityWin()->unique_id_win());
+ BrowserAccessibilityManager::RemoveNode(node);
+ if (node == tracked_scroll_object_) {
tracked_scroll_object_->Release();
tracked_scroll_object_ = NULL;
}
@@ -107,16 +99,16 @@ void BrowserAccessibilityManagerWin::OnNodeWillBeDeleted(ui::AXNode* node) {
void BrowserAccessibilityManagerWin::OnWindowFocused() {
// Fire a focus event on the root first and then the focused node.
- if (focus_ != tree_->GetRoot())
- NotifyAccessibilityEvent(ui::AX_EVENT_FOCUS, GetRoot());
+ if (focus_ != root_)
+ NotifyAccessibilityEvent(ui::AX_EVENT_FOCUS, root_);
BrowserAccessibilityManager::OnWindowFocused();
}
void BrowserAccessibilityManagerWin::OnWindowBlurred() {
// Fire a blur event on the focused node first and then the root.
BrowserAccessibilityManager::OnWindowBlurred();
- if (focus_ != tree_->GetRoot())
- NotifyAccessibilityEvent(ui::AX_EVENT_BLUR, GetRoot());
+ if (focus_ != root_)
+ NotifyAccessibilityEvent(ui::AX_EVENT_BLUR, root_);
}
void BrowserAccessibilityManagerWin::NotifyAccessibilityEvent(
@@ -229,9 +221,9 @@ void BrowserAccessibilityManagerWin::NotifyAccessibilityEvent(
}
}
-void BrowserAccessibilityManagerWin::OnRootChanged(ui::AXNode* new_root) {
+void BrowserAccessibilityManagerWin::OnRootChanged() {
if (delegate_ && delegate_->HasFocus())
- NotifyAccessibilityEvent(ui::AX_EVENT_FOCUS, GetRoot());
+ NotifyAccessibilityEvent(ui::AX_EVENT_FOCUS, root_);
}
void BrowserAccessibilityManagerWin::TrackScrollingObject(
@@ -245,9 +237,9 @@ void BrowserAccessibilityManagerWin::TrackScrollingObject(
BrowserAccessibilityWin* BrowserAccessibilityManagerWin::GetFromUniqueIdWin(
LONG unique_id_win) {
base::hash_map<LONG, int32>::iterator iter =
- unique_id_to_ax_id_map_.find(unique_id_win);
- if (iter != unique_id_to_ax_id_map_.end()) {
- BrowserAccessibility* result = GetFromID(iter->second);
+ unique_id_to_renderer_id_map_.find(unique_id_win);
+ if (iter != unique_id_to_renderer_id_map_.end()) {
+ BrowserAccessibility* result = GetFromRendererID(iter->second);
if (result)
return result->ToBrowserAccessibilityWin();
}