| // Copyright 2024 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_EDITOR_CONTEXT_H_ |
| #define CHROME_BROWSER_ASH_INPUT_METHOD_EDITOR_CONTEXT_H_ |
| |
| #include "ash/constants/app_types.h" |
| #include "chrome/browser/ash/input_method/text_field_contextual_info_fetcher.h" |
| #include "ui/base/ime/ash/text_input_method.h" |
| #include "ui/base/ime/text_input_type.h" |
| #include "url/gurl.h" |
| |
| namespace ash::input_method { |
| |
| // Holds any "interesting" context for the Editor feature. This includes; the |
| // currently active input method, size of the currently selected text, among |
| // other tidbits. |
| class EditorContext { |
| public: |
| class Observer { |
| public: |
| virtual ~Observer() = default; |
| |
| virtual void OnContextUpdated() = 0; |
| }; |
| |
| EditorContext(Observer* observer, std::string_view country_code); |
| ~EditorContext(); |
| |
| void OnInputContextUpdated( |
| const TextInputMethod::InputContext& input_context, |
| const TextFieldContextualInfo& text_field_contextual_info); |
| |
| void OnActivateIme(std::string_view engine_id); |
| |
| void OnTabletModeUpdated(bool tablet_mode_enabled); |
| |
| void OnTextSelectionLengthChanged(size_t new_length); |
| |
| bool InTabletMode(); |
| |
| // Getters |
| std::string_view active_country_code(); |
| std::string_view active_engine_id(); |
| ui::TextInputType input_type(); |
| ash::AppType app_type(); |
| std::string_view app_id(); |
| GURL active_url(); |
| size_t selected_text_length(); |
| |
| private: |
| // Not owned by this class |
| raw_ptr<Observer> observer_; |
| |
| std::string active_country_code_; |
| std::string active_engine_id_; |
| ui::TextInputType input_type_ = ui::TEXT_INPUT_TYPE_NONE; |
| ash::AppType app_type_ = ash::AppType::NON_APP; |
| std::string app_id_; |
| GURL active_url_; |
| bool tablet_mode_enabled_ = false; |
| size_t selected_text_length_ = 0; |
| }; |
| |
| } // namespace ash::input_method |
| |
| #endif // CHROME_BROWSER_ASH_INPUT_METHOD_EDITOR_CONTEXT_H_ |