 Chromium Code Reviews
 Chromium Code Reviews Issue 2781613003:
  Added a class acting as a fake caret for accessibility.  (Closed)
    
  
    Issue 2781613003:
  Added a class acting as a fake caret for accessibility.  (Closed) 
  | 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 f56a7ca05927ae0f5c947899aaeb522ca9db6667..689089fe3eae314af8df9221fb47966e96989e62 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; | 
| } | 
| @@ -119,6 +123,7 @@ const int WM_WINDOWSIZINGFINISHED = WM_USER; | 
| // TODO(beng): This object should eventually *become* the WindowImpl. | 
| class VIEWS_EXPORT HWNDMessageHandler : | 
| public gfx::WindowImpl, | 
| + public ui::InputMethodObserver, | 
| public ui::WindowEventTarget { | 
| public: | 
| explicit HWNDMessageHandler(HWNDMessageHandlerDelegate* delegate); | 
| @@ -222,6 +227,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 TextInputClient* client) override {} | 
| 
dmazzoni
2017/04/27 05:07:32
You should handle this in order to handle the case
 | 
| + void OnFocus() override {} | 
| + void OnBlur() override {} | 
| + void OnCaretBoundsChanged(const TextInputClient* client) override; | 
| + void OnTextInputStateChanged(const TextInputClient* client) override; | 
| + void OnInputMethodDestroyed(const InputMethod* input_method) override; | 
| 
dmazzoni
2017/04/27 05:07:32
Possibly this too.
See chrome/browser/chromeos/ac
 | 
| + void OnShowImeIfNeeded() override {} | 
| + | 
| // Overridden from WindowEventTarget | 
| LRESULT HandleMouseMessage(unsigned int message, | 
| WPARAM w_param, | 
| @@ -685,6 +699,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. |