// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef UI_BASE_IME_LINUX_LINUX_INPUT_METHOD_CONTEXT_H_ #define UI_BASE_IME_LINUX_LINUX_INPUT_METHOD_CONTEXT_H_ #include "base/strings/string16.h" #include "ui/base/ime/text_input_type.h" #include "ui/base/ime/ui_base_ime_export.h" namespace gfx { class Rect; } namespace ui { struct CompositionText; class KeyEvent; // An interface of input method context for input method frameworks on // GNU/Linux and likes. class UI_BASE_IME_EXPORT LinuxInputMethodContext { public: virtual ~LinuxInputMethodContext() {} // Dispatches the key event to an underlying IME. Returns true if the key // event is handled, otherwise false. A client must set the text input type // before dispatching a key event. virtual bool DispatchKeyEvent(const ui::KeyEvent& key_event) = 0; // Tells the system IME for the cursor rect which is relative to the // client window rect. virtual void SetCursorLocation(const gfx::Rect& rect) = 0; // Resets the context. A client needs to call OnTextInputTypeChanged() again // before calling DispatchKeyEvent(). virtual void Reset() = 0; // Focuses the context. virtual void Focus() = 0; // Blurs the context. virtual void Blur() = 0; }; // An interface of callback functions called from LinuxInputMethodContext. class UI_BASE_IME_EXPORT LinuxInputMethodContextDelegate { public: virtual ~LinuxInputMethodContextDelegate() {} // Commits the |text| to the text input client. virtual void OnCommit(const base::string16& text) = 0; // Sets the composition text to the text input client. virtual void OnPreeditChanged(const CompositionText& composition_text) = 0; // Cleans up a composition session and makes sure that the composition text is // cleared. virtual void OnPreeditEnd() = 0; // Prepares things for a new composition session. virtual void OnPreeditStart() = 0; }; } // namespace ui #endif // UI_BASE_IME_LINUX_LINUX_INPUT_METHOD_CONTEXT_H_