| 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);
 | 
|  }
 | 
| 
 |