Index: content/browser/accessibility/browser_accessibility_manager_win.cc |
diff --git a/content/browser/accessibility/browser_accessibility_manager_win.cc b/content/browser/accessibility/browser_accessibility_manager_win.cc |
index 05e2fd507e8c73f420260a6afdd5fb419948c956..4351ef46369987382235eff827e4b89eec0f35c9 100644 |
--- a/content/browser/accessibility/browser_accessibility_manager_win.cc |
+++ b/content/browser/accessibility/browser_accessibility_manager_win.cc |
@@ -20,9 +20,7 @@ BrowserAccessibilityManager* BrowserAccessibilityManager::Create( |
const ui::AXTreeUpdate& initial_tree, |
BrowserAccessibilityDelegate* delegate, |
BrowserAccessibilityFactory* factory) { |
- return new BrowserAccessibilityManagerWin( |
- content::LegacyRenderWidgetHostHWND::Create(GetDesktopWindow()), |
- NULL, initial_tree, delegate, factory); |
+ return new BrowserAccessibilityManagerWin(initial_tree, delegate, factory); |
} |
BrowserAccessibilityManagerWin* |
@@ -31,22 +29,13 @@ BrowserAccessibilityManager::ToBrowserAccessibilityManagerWin() { |
} |
BrowserAccessibilityManagerWin::BrowserAccessibilityManagerWin( |
- LegacyRenderWidgetHostHWND* accessible_hwnd, |
- IAccessible* parent_iaccessible, |
const ui::AXTreeUpdate& initial_tree, |
BrowserAccessibilityDelegate* delegate, |
BrowserAccessibilityFactory* factory) |
: BrowserAccessibilityManager(initial_tree, delegate, factory), |
- parent_hwnd_(NULL), |
- parent_iaccessible_(parent_iaccessible), |
tracked_scroll_object_(NULL), |
- accessible_hwnd_(accessible_hwnd), |
focus_event_on_root_needed_(false) { |
ui::win::CreateATLModuleIfNeeded(); |
- if (accessible_hwnd_) { |
- accessible_hwnd_->set_browser_accessibility_manager(this); |
- parent_hwnd_ = accessible_hwnd_->GetParent(); |
- } |
} |
BrowserAccessibilityManagerWin::~BrowserAccessibilityManagerWin() { |
@@ -54,8 +43,6 @@ BrowserAccessibilityManagerWin::~BrowserAccessibilityManagerWin() { |
tracked_scroll_object_->Release(); |
tracked_scroll_object_ = NULL; |
} |
- if (accessible_hwnd_) |
- accessible_hwnd_->OnManagerDeleted(this); |
} |
// static |
@@ -73,33 +60,28 @@ ui::AXTreeUpdate BrowserAccessibilityManagerWin::GetEmptyDocument() { |
return update; |
} |
-void BrowserAccessibilityManagerWin::SetAccessibleHWND( |
- LegacyRenderWidgetHostHWND* accessible_hwnd) { |
- if (accessible_hwnd_) |
- accessible_hwnd_->OnManagerDeleted(this); |
- |
- accessible_hwnd_ = accessible_hwnd; |
+HWND BrowserAccessibilityManagerWin::GetParentHWND() { |
+ if (!delegate_) |
+ return NULL; |
+ return delegate_->AccessibilityGetAcceleratedWidget(); |
+} |
- if (accessible_hwnd_) { |
- accessible_hwnd_->set_browser_accessibility_manager(this); |
- parent_hwnd_ = accessible_hwnd_->GetParent(); |
- } |
+IAccessible* BrowserAccessibilityManagerWin::GetParentIAccessible() { |
+ if (!delegate_) |
+ return NULL; |
+ return delegate_->AccessibilityGetNativeViewAccessible(); |
} |
void BrowserAccessibilityManagerWin::MaybeCallNotifyWinEvent(DWORD event, |
LONG child_id) { |
- // If on Win 7 and complete accessibility is enabled, use the fake child HWND |
- // to use as the root of the accessibility tree. See comments above |
- // LegacyRenderWidgetHostHWND for details. |
- if (accessible_hwnd_ && |
- BrowserAccessibilityStateImpl::GetInstance()->IsAccessibleBrowser()) { |
- parent_hwnd_ = accessible_hwnd_->hwnd(); |
- parent_iaccessible_ = accessible_hwnd_->window_accessible(); |
- } |
+ if (!delegate_) |
+ return; |
- // Only fire events if this view is hooked up to its parent. |
- if (parent_iaccessible() && parent_hwnd()) |
- ::NotifyWinEvent(event, parent_hwnd(), OBJID_CLIENT, child_id); |
+ HWND hwnd = delegate_->AccessibilityGetAcceleratedWidget(); |
+ if (!hwnd) |
+ return; |
+ |
+ ::NotifyWinEvent(event, hwnd, OBJID_CLIENT, child_id); |
} |
@@ -146,13 +128,8 @@ void BrowserAccessibilityManagerWin::OnWindowFocused() { |
void BrowserAccessibilityManagerWin::NotifyAccessibilityEvent( |
ui::AXEvent event_type, |
BrowserAccessibility* node) { |
- // If full accessibility is enabled, wait for the LegacyRenderWidgetHostHWND |
- // to be initialized before sending any events - otherwise we'd be firing |
- // events on the wrong HWND. |
- if (BrowserAccessibilityStateImpl::GetInstance()->IsAccessibleBrowser() && |
- !accessible_hwnd_) { |
+ if (!delegate_ || !delegate_->AccessibilityGetAcceleratedWidget()) |
return; |
- } |
// Inline text boxes are an internal implementation detail, we don't |
// expose them to Windows. |
@@ -310,15 +287,4 @@ BrowserAccessibilityWin* BrowserAccessibilityManagerWin::GetFromUniqueIdWin( |
return NULL; |
} |
-void BrowserAccessibilityManagerWin::OnAccessibleHwndDeleted() { |
- // If the AccessibleHWND is deleted, |parent_hwnd_| and |
- // |parent_iaccessible_| are no longer valid either, since they were |
- // derived from AccessibleHWND. We don't have to restore them to |
- // previous values, though, because this should only happen |
- // during the destruct sequence for this window. |
- accessible_hwnd_ = NULL; |
- parent_hwnd_ = NULL; |
- parent_iaccessible_ = NULL; |
-} |
- |
} // namespace content |