summaryrefslogtreecommitdiffstats
path: root/chromium/ui/base/ime/chromeos/ime_bridge.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/base/ime/chromeos/ime_bridge.h')
-rw-r--r--chromium/ui/base/ime/chromeos/ime_bridge.h191
1 files changed, 191 insertions, 0 deletions
diff --git a/chromium/ui/base/ime/chromeos/ime_bridge.h b/chromium/ui/base/ime/chromeos/ime_bridge.h
new file mode 100644
index 00000000000..2464f3ff89f
--- /dev/null
+++ b/chromium/ui/base/ime/chromeos/ime_bridge.h
@@ -0,0 +1,191 @@
+// Copyright 2014 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_CHROMEOS_IME_BRIDGE_H_
+#define UI_BASE_IME_CHROMEOS_IME_BRIDGE_H_
+
+#include <string>
+#include "base/basictypes.h"
+#include "base/callback.h"
+#include "base/strings/string16.h"
+#include "ui/base/ime/text_input_mode.h"
+#include "ui/base/ime/text_input_type.h"
+#include "ui/base/ui_base_export.h"
+
+namespace gfx {
+class Rect;
+} // namespace gfx
+
+namespace ui {
+class CandidateWindow;
+class KeyEvent;
+} // namespace ui
+
+namespace chromeos {
+
+class CompositionText;
+
+class UI_BASE_EXPORT IMEInputContextHandlerInterface {
+ public:
+ // Called when the engine commit a text.
+ virtual void CommitText(const std::string& text) = 0;
+
+ // Called when the engine updates composition text.
+ virtual void UpdateCompositionText(const CompositionText& text,
+ uint32 cursor_pos,
+ bool visible) = 0;
+
+ // Called when the engine request deleting surrounding string.
+ virtual void DeleteSurroundingText(int32 offset, uint32 length) = 0;
+};
+
+
+// A interface to handle the engine handler method call.
+class UI_BASE_EXPORT IMEEngineHandlerInterface {
+ public:
+ typedef base::Callback<void (bool consumed)> KeyEventDoneCallback;
+
+ // A information about a focused text input field.
+ // A type of each member is based on the html spec, but InputContext can be
+ // used to specify about a non html text field like Omnibox.
+ struct InputContext {
+ InputContext(ui::TextInputType type_, ui::TextInputMode mode_) :
+ type(type_), mode(mode_) {}
+
+ // An attribute of the field defined at
+ // http://www.w3.org/TR/html401/interact/forms.html#input-control-types.
+ ui::TextInputType type;
+ // An attribute of the field defined at
+ // http://www.whatwg.org/specs/web-apps/current-work/multipage/
+ // association-of-controls-and-forms.html#input-modalities
+ // :-the-inputmode-attribute.
+ ui::TextInputMode mode;
+ };
+
+ virtual ~IMEEngineHandlerInterface() {}
+
+ // Called when the Chrome input field get the focus.
+ virtual void FocusIn(const InputContext& input_context) = 0;
+
+ // Called when the Chrome input field lose the focus.
+ virtual void FocusOut() = 0;
+
+ // Called when the IME is enabled.
+ virtual void Enable() = 0;
+
+ // Called when the IME is disabled.
+ virtual void Disable() = 0;
+
+ // Called when a property is activated or changed.
+ virtual void PropertyActivate(const std::string& property_name) = 0;
+
+ // Called when the IME is reset.
+ virtual void Reset() = 0;
+
+ // Called when the key event is received.
+ // Actual implementation must call |callback| after key event handling.
+ virtual void ProcessKeyEvent(const ui::KeyEvent& key_event,
+ const KeyEventDoneCallback& callback) = 0;
+
+ // Called when the candidate in lookup table is clicked. The |index| is 0
+ // based candidate index in lookup table.
+ virtual void CandidateClicked(uint32 index) = 0;
+
+ // Called when a new surrounding text is set. The |text| is surrounding text
+ // and |cursor_pos| is 0 based index of cursor position in |text|. If there is
+ // selection range, |anchor_pos| represents opposite index from |cursor_pos|.
+ // Otherwise |anchor_pos| is equal to |cursor_pos|.
+ virtual void SetSurroundingText(const std::string& text, uint32 cursor_pos,
+ uint32 anchor_pos) = 0;
+
+ protected:
+ IMEEngineHandlerInterface() {}
+};
+
+// A interface to handle the candidate window related method call.
+class UI_BASE_EXPORT IMECandidateWindowHandlerInterface {
+ public:
+ virtual ~IMECandidateWindowHandlerInterface() {}
+
+ // Called when the IME updates the lookup table.
+ virtual void UpdateLookupTable(const ui::CandidateWindow& candidate_window,
+ bool visible) = 0;
+
+ // Called when the IME updates the preedit text. The |text| is given in
+ // UTF-16 encoding.
+ virtual void UpdatePreeditText(const base::string16& text,
+ uint32 cursor_pos,
+ bool visible) = 0;
+
+ // Called when the application changes its caret bounds.
+ virtual void SetCursorBounds(const gfx::Rect& cursor_bounds,
+ const gfx::Rect& composition_head) = 0;
+
+ // Called when the text field's focus state is changed.
+ // |is_focused| is true when the text field gains the focus.
+ virtual void FocusStateChanged(bool is_focused) {}
+
+ protected:
+ IMECandidateWindowHandlerInterface() {}
+};
+
+
+// IMEBridge provides access of each IME related handler. This class
+// is used for IME implementation.
+class UI_BASE_EXPORT IMEBridge {
+ public:
+ virtual ~IMEBridge();
+
+ // Allocates the global instance. Must be called before any calls to Get().
+ static void Initialize();
+
+ // Releases the global instance.
+ static void Shutdown();
+
+ // Returns IMEBridge global instance. Initialize() must be called first.
+ static IMEBridge* Get();
+
+ // Returns current InputContextHandler. This function returns NULL if input
+ // context is not ready to use.
+ virtual IMEInputContextHandlerInterface* GetInputContextHandler() const = 0;
+
+ // Updates current InputContextHandler. If there is no active input context,
+ // pass NULL for |handler|. Caller must release |handler|.
+ virtual void SetInputContextHandler(
+ IMEInputContextHandlerInterface* handler) = 0;
+
+ // Updates current EngineHandler. If there is no active engine service, pass
+ // NULL for |handler|. Caller must release |handler|.
+ virtual void SetCurrentEngineHandler(IMEEngineHandlerInterface* handler) = 0;
+
+ // Returns current EngineHandler. This function returns NULL if current engine
+ // is not ready to use.
+ virtual IMEEngineHandlerInterface* GetCurrentEngineHandler() const = 0;
+
+ // Returns current CandidateWindowHandler. This function returns NULL if
+ // current candidate window is not ready to use.
+ virtual IMECandidateWindowHandlerInterface* GetCandidateWindowHandler()
+ const = 0;
+
+ // Updates current CandidatWindowHandler. If there is no active candidate
+ // window service, pass NULL for |handler|. Caller must release |handler|.
+ virtual void SetCandidateWindowHandler(
+ IMECandidateWindowHandlerInterface* handler) = 0;
+
+ // Updates current text input type.
+ virtual void SetCurrentTextInputType(ui::TextInputType input_type) = 0;
+
+ // Returns the current text input type.
+ virtual ui::TextInputType GetCurrentTextInputType() const = 0;
+
+ protected:
+ IMEBridge();
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(IMEBridge);
+};
+
+} // namespace chromeos
+
+#endif // UI_BASE_IME_CHROMEOS_IME_BRIDGE_H_