diff options
author | ckocagil@chromium.org <ckocagil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-21 12:53:12 +0000 |
---|---|---|
committer | ckocagil@chromium.org <ckocagil@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-21 12:53:12 +0000 |
commit | 6acc8ce6fb95d50bafac1ff1bc309a682a9a5b9f (patch) | |
tree | b6c6144527c04a8fa1d770c3c64123fdad0af16e /content/browser/accessibility/browser_accessibility_manager_win.cc | |
parent | 2d9dc0565c59fb59e440ed798934481788457583 (diff) | |
download | chromium_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.cc | 56 |
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(); } |