| Index: ui/views/win/hwnd_message_handler.h
 | 
| diff --git a/ui/views/win/hwnd_message_handler.h b/ui/views/win/hwnd_message_handler.h
 | 
| index 5018970b001623ea6f5502b608e7acdc78d5cf37..ee17e9ed35d7c11e82b48ee4721ffc7515b8b3fc 100644
 | 
| --- a/ui/views/win/hwnd_message_handler.h
 | 
| +++ b/ui/views/win/hwnd_message_handler.h
 | 
| @@ -21,6 +21,7 @@
 | 
|  #include "base/win/scoped_gdi_object.h"
 | 
|  #include "base/win/win_util.h"
 | 
|  #include "ui/accessibility/ax_enums.h"
 | 
| +#include "ui/base/ime/input_method_observer.h"
 | 
|  #include "ui/base/ui_base_types.h"
 | 
|  #include "ui/base/win/window_event_target.h"
 | 
|  #include "ui/events/event.h"
 | 
| @@ -38,6 +39,9 @@ class DirectManipulationHelper;
 | 
|  }  // namespace gfx
 | 
|  
 | 
|  namespace ui  {
 | 
| +class AXFakeCaretWin;
 | 
| +class InputMethod;
 | 
| +class TextInputClient;
 | 
|  class ViewProp;
 | 
|  }
 | 
|  
 | 
| @@ -117,9 +121,9 @@ const int WM_WINDOWSIZINGFINISHED = WM_USER;
 | 
|  // used by both a views::NativeWidget and an aura::WindowTreeHost
 | 
|  // implementation.
 | 
|  // TODO(beng): This object should eventually *become* the WindowImpl.
 | 
| -class VIEWS_EXPORT HWNDMessageHandler :
 | 
| -    public gfx::WindowImpl,
 | 
| -    public ui::WindowEventTarget {
 | 
| +class VIEWS_EXPORT HWNDMessageHandler : public gfx::WindowImpl,
 | 
| +                                        public ui::InputMethodObserver,
 | 
| +                                        public ui::WindowEventTarget {
 | 
|   public:
 | 
|    explicit HWNDMessageHandler(HWNDMessageHandlerDelegate* delegate);
 | 
|    ~HWNDMessageHandler() override;
 | 
| @@ -227,6 +231,15 @@ class VIEWS_EXPORT HWNDMessageHandler :
 | 
|    HICON GetSmallWindowIcon() const override;
 | 
|    LRESULT OnWndProc(UINT message, WPARAM w_param, LPARAM l_param) override;
 | 
|  
 | 
| +  // Overridden from InputMethodObserver
 | 
| +  void OnTextInputTypeChanged(const ui::TextInputClient* client) override;
 | 
| +  void OnFocus() override {}
 | 
| +  void OnBlur() override {}
 | 
| +  void OnCaretBoundsChanged(const ui::TextInputClient* client) override;
 | 
| +  void OnTextInputStateChanged(const ui::TextInputClient* client) override {}
 | 
| +  void OnInputMethodDestroyed(const ui::InputMethod* input_method) override;
 | 
| +  void OnShowImeIfNeeded() override {}
 | 
| +
 | 
|    // Overridden from WindowEventTarget
 | 
|    LRESULT HandleMouseMessage(unsigned int message,
 | 
|                               WPARAM w_param,
 | 
| @@ -690,6 +703,9 @@ class VIEWS_EXPORT HWNDMessageHandler :
 | 
|    std::unique_ptr<WindowsSessionChangeObserver>
 | 
|        windows_session_change_observer_;
 | 
|  
 | 
| +  // Some assistive software need to track the location of the caret.
 | 
| +  std::unique_ptr<ui::AXFakeCaretWin> ax_fake_caret_;
 | 
| +
 | 
|    // This class provides functionality to register the legacy window as a
 | 
|    // Direct Manipulation consumer. This allows us to support smooth scroll
 | 
|    // in Chrome on Windows 10.
 | 
| 
 |