Chromium Code Reviews| Index: content/browser/renderer_host/legacy_render_widget_host_win.cc |
| diff --git a/content/browser/renderer_host/legacy_render_widget_host_win.cc b/content/browser/renderer_host/legacy_render_widget_host_win.cc |
| index c619024b9d201e64a4d29ee70c5c3b9c87bf3c5c..af1d083f2fc116d90ea0c2a723765632f97d9e7c 100644 |
| --- a/content/browser/renderer_host/legacy_render_widget_host_win.cc |
| +++ b/content/browser/renderer_host/legacy_render_widget_host_win.cc |
| @@ -4,6 +4,8 @@ |
| #include "content/browser/renderer_host/legacy_render_widget_host_win.h" |
| +#include <atlcom.h> |
| + |
| #include <memory> |
| #include "base/command_line.h" |
| @@ -15,6 +17,7 @@ |
| #include "content/browser/renderer_host/render_widget_host_impl.h" |
| #include "content/browser/renderer_host/render_widget_host_view_aura.h" |
| #include "content/public/common/content_switches.h" |
| +#include "ui/accessibility/platform/ax_fake_caret_win.h" |
| #include "ui/base/view_prop.h" |
| #include "ui/base/win/internal_constants.h" |
| #include "ui/base/win/window_event_target.h" |
| @@ -170,24 +173,31 @@ LRESULT LegacyRenderWidgetHostHWND::OnGetObject(UINT message, |
| return static_cast<LRESULT>(0L); |
| } |
| - if (static_cast<DWORD>(OBJID_CLIENT) != obj_id || !host_) |
| - return static_cast<LRESULT>(0L); |
| - |
| - RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From( |
| - host_->GetRenderWidgetHost()); |
| - if (!rwhi) |
| - return static_cast<LRESULT>(0L); |
| - |
| - BrowserAccessibilityManagerWin* manager = |
| - static_cast<BrowserAccessibilityManagerWin*>( |
| - rwhi->GetRootBrowserAccessibilityManager()); |
| - if (!manager) |
| - return static_cast<LRESULT>(0L); |
| + if (static_cast<DWORD>(OBJID_CLIENT) == obj_id && host_) { |
| + RenderWidgetHostImpl* rwhi = |
| + RenderWidgetHostImpl::From(host_->GetRenderWidgetHost()); |
| + if (!rwhi) |
| + return static_cast<LRESULT>(0L); |
| + |
| + BrowserAccessibilityManagerWin* manager = |
| + static_cast<BrowserAccessibilityManagerWin*>( |
| + rwhi->GetRootBrowserAccessibilityManager()); |
| + if (!manager) |
| + return static_cast<LRESULT>(0L); |
| + |
| + base::win::ScopedComPtr<IAccessible> root( |
| + ToBrowserAccessibilityWin(manager->GetRoot())); |
| + return LresultFromObject(IID_IAccessible, w_param, |
| + static_cast<IAccessible*>(root.Detach())); |
| + } else if (static_cast<DWORD>(OBJID_CARET) == obj_id) { |
|
dougt
2017/03/28 15:23:44
nit:
the above if-stmt returns making the followi
|
| + // Used by some assistive software to retrieve the location of the caret. |
| + CComObjectStack<ui::AXFakeCaretWin> fake_caret; |
| + DCHECK_EQ(fake_caret.m_hResFinalConstruct, S_OK); |
|
dougt
2017/03/28 15:23:44
I am confused by this DCHECK. Are you concerned wi
|
| + return LresultFromObject(IID_IAccessible, w_param, |
| + static_cast<IAccessible*>(&fake_caret)); |
| + } |
| - base::win::ScopedComPtr<IAccessible> root( |
| - ToBrowserAccessibilityWin(manager->GetRoot())); |
| - return LresultFromObject(IID_IAccessible, w_param, |
| - static_cast<IAccessible*>(root.Detach())); |
| + return static_cast<LRESULT>(0L); |
| } |
| // We send keyboard/mouse/touch messages to the parent window via SendMessage. |