| // Copyright 2021 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_ASH_INPUT_METHOD_INPUT_METHOD_ENGINE_OBSERVER_H_ |
| #define CHROME_BROWSER_ASH_INPUT_METHOD_INPUT_METHOD_ENGINE_OBSERVER_H_ |
| |
| #include <map> |
| #include <memory> |
| #include <string> |
| #include <vector> |
| |
| #include "base/memory/raw_ptr.h" |
| #include "base/scoped_observation.h" |
| #include "base/values.h" |
| #include "ui/base/ime/ash/text_input_method.h" |
| #include "ui/events/event.h" |
| |
| namespace ui { |
| class TextInputMethod; |
| class KeyEvent; |
| |
| namespace ime { |
| struct AssistiveWindowButton; |
| } // namespace ime |
| } // namespace ui |
| |
| namespace ash { |
| namespace ime { |
| struct AssistiveWindow; |
| } // namespace ime |
| |
| namespace input_method { |
| |
| enum MouseButtonEvent { |
| MOUSE_BUTTON_LEFT, |
| MOUSE_BUTTON_RIGHT, |
| MOUSE_BUTTON_MIDDLE, |
| }; |
| |
| class InputMethodEngineObserver { |
| public: |
| virtual ~InputMethodEngineObserver() = default; |
| |
| // Called when the IME becomes the active IME. |
| virtual void OnActivate(const std::string& engine_id) = 0; |
| |
| // Called when a text field gains focus, and will be sending key events. |
| // `context_id` is a unique ID given to this focus session. |
| virtual void OnFocus(const std::string& engine_id, |
| int context_id, |
| const TextInputMethod::InputContext& context) = 0; |
| |
| // Called when a text field loses focus, and will no longer generate events. |
| virtual void OnBlur(const std::string& engine_id, int context_id) = 0; |
| |
| // Called when the user pressed a key with a text field focused. |
| virtual void OnKeyEvent(const std::string& engine_id, |
| const ui::KeyEvent& event, |
| TextInputMethod::KeyEventDoneCallback key_data) = 0; |
| |
| // Called when Chrome terminates on-going text input session. |
| virtual void OnReset(const std::string& engine_id) = 0; |
| |
| // Called when the IME is no longer active. |
| virtual void OnDeactivated(const std::string& engine_id) = 0; |
| |
| // Called when the caret bounds change. |
| virtual void OnCaretBoundsChanged(const gfx::Rect& caret_bounds) = 0; |
| |
| // Called when a surrounding text is changed. |
| virtual void OnSurroundingTextChanged(const std::string& engine_id, |
| const std::u16string& text, |
| gfx::Range selection_range, |
| int offset_pos) = 0; |
| |
| // Called when the user clicks on an item in the candidate list. |
| virtual void OnCandidateClicked(const std::string& component_id, |
| int candidate_id, |
| MouseButtonEvent button) = 0; |
| |
| // Called when the user clicks on a button in assistive window. |
| virtual void OnAssistiveWindowButtonClicked( |
| const ui::ime::AssistiveWindowButton& button) {} |
| |
| // Called when there are changes to the assistive window shown to the user. |
| virtual void OnAssistiveWindowChanged( |
| const ash::ime::AssistiveWindow& window) = 0; |
| |
| // Called when a menu item for this IME is interacted with. |
| virtual void OnMenuItemActivated(const std::string& component_id, |
| const std::string& menu_id) = 0; |
| |
| virtual void OnScreenProjectionChanged(bool is_projected) = 0; |
| |
| // Called when the suggestions to display have changed. |
| virtual void OnSuggestionsChanged( |
| const std::vector<std::string>& suggestions) = 0; |
| |
| // Called when the input method options are updated. |
| virtual void OnInputMethodOptionsChanged(const std::string& engine_id) = 0; |
| }; |
| |
| } // namespace input_method |
| } // namespace ash |
| |
| #endif // CHROME_BROWSER_ASH_INPUT_METHOD_INPUT_METHOD_ENGINE_OBSERVER_H_ |