Index: chrome/browser/renderer_host/render_widget_host_view_win.cc |
=================================================================== |
--- chrome/browser/renderer_host/render_widget_host_view_win.cc (revision 88807) |
+++ chrome/browser/renderer_host/render_widget_host_view_win.cc (working copy) |
@@ -508,13 +508,6 @@ |
SetParent(parent_hwnd_); |
ShowWindow(SW_SHOW); |
- // Save away our HWND in the parent window as a property so that the |
- // accessibility code can find it. |
- accessibility_prop_.reset(new ViewProp( |
- GetParent(), |
- views::kViewsNativeHostPropForAccessibility, |
- m_hWnd)); |
- |
DidBecomeSelected(); |
} |
@@ -525,8 +518,6 @@ |
return; |
} |
- accessibility_prop_.reset(); |
- |
if (::GetFocus() == m_hWnd) |
::SetFocus(NULL); |
ShowWindow(SW_HIDE); |
@@ -786,12 +777,6 @@ |
props_.push_back(views::SetWindowSupportsRerouteMouseWheel(m_hWnd)); |
props_.push_back(new ViewProp(m_hWnd, kRenderWidgetHostViewKey, |
static_cast<RenderWidgetHostView*>(this))); |
- // Save away our HWND in the parent window as a property so that the |
- // accessibility code can find it. |
- accessibility_prop_.reset(new ViewProp( |
- GetParent(), |
- views::kViewsNativeHostPropForAccessibility, |
- m_hWnd)); |
return 0; |
} |
@@ -1627,6 +1612,24 @@ |
render_widget_host_->routing_id(), acc_obj_id)); |
} |
+IAccessible* RenderWidgetHostViewWin::GetIAccessible() { |
+ if (render_widget_host_ && !render_widget_host_->renderer_accessible()) { |
+ // Attempt to detect screen readers by sending an event with our custom id. |
+ NotifyWinEvent(EVENT_SYSTEM_ALERT, m_hWnd, kIdCustom, CHILDID_SELF); |
+ } |
+ |
+ if (!browser_accessibility_manager_.get()) { |
+ // Return busy document tree while renderer accessibility tree loads. |
+ webkit_glue::WebAccessibility loading_tree; |
+ loading_tree.role = WebAccessibility::ROLE_DOCUMENT; |
+ loading_tree.state = (1 << WebAccessibility::STATE_BUSY); |
+ browser_accessibility_manager_.reset( |
+ BrowserAccessibilityManager::Create(m_hWnd, loading_tree, this)); |
+ } |
+ |
+ return browser_accessibility_manager_->GetRoot()->toBrowserAccessibilityWin(); |
+} |
+ |
LRESULT RenderWidgetHostViewWin::OnGetObject(UINT message, WPARAM wparam, |
LPARAM lparam, BOOL& handled) { |
if (kIdCustom == lparam) { |
@@ -1644,25 +1647,10 @@ |
return static_cast<LRESULT>(0L); |
} |
- if (render_widget_host_ && !render_widget_host_->renderer_accessible()) { |
- // Attempt to detect screen readers by sending an event with our custom id. |
- NotifyWinEvent(EVENT_SYSTEM_ALERT, m_hWnd, kIdCustom, CHILDID_SELF); |
- } |
+ IAccessible* iaccessible = GetIAccessible(); |
+ if (iaccessible) |
+ return LresultFromObject(IID_IAccessible, wparam, iaccessible); |
- if (!browser_accessibility_manager_.get()) { |
- // Return busy document tree while renderer accessibility tree loads. |
- webkit_glue::WebAccessibility loading_tree; |
- loading_tree.role = WebAccessibility::ROLE_DOCUMENT; |
- loading_tree.state = (1 << WebAccessibility::STATE_BUSY); |
- browser_accessibility_manager_.reset( |
- BrowserAccessibilityManager::Create(m_hWnd, loading_tree, this)); |
- } |
- |
- base::win::ScopedComPtr<IAccessible> root( |
- browser_accessibility_manager_->GetRoot()->toBrowserAccessibilityWin()); |
- if (root.get()) |
- return LresultFromObject(IID_IAccessible, wparam, root.Detach()); |
- |
handled = false; |
return static_cast<LRESULT>(0L); |
} |