Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Side by Side Diff: ui/base/ime/chromeos/ime_bridge.h

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/base/ime/chromeos/character_composer_unittest.cc ('k') | ui/base/ime/chromeos/ime_bridge.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef UI_BASE_IME_CHROMEOS_IME_BRIDGE_H_
6 #define UI_BASE_IME_CHROMEOS_IME_BRIDGE_H_
7
8 #include <string>
9 #include "base/basictypes.h"
10 #include "base/callback.h"
11 #include "base/strings/string16.h"
12 #include "ui/base/ime/text_input_mode.h"
13 #include "ui/base/ime/text_input_type.h"
14 #include "ui/base/ui_base_export.h"
15
16 namespace gfx {
17 class Rect;
18 } // namespace gfx
19
20 namespace ui {
21 class CandidateWindow;
22 class KeyEvent;
23 } // namespace ui
24
25 namespace chromeos {
26
27 class CompositionText;
28
29 class UI_BASE_EXPORT IMEInputContextHandlerInterface {
30 public:
31 // Called when the engine commit a text.
32 virtual void CommitText(const std::string& text) = 0;
33
34 // Called when the engine updates composition text.
35 virtual void UpdateCompositionText(const CompositionText& text,
36 uint32 cursor_pos,
37 bool visible) = 0;
38
39 // Called when the engine request deleting surrounding string.
40 virtual void DeleteSurroundingText(int32 offset, uint32 length) = 0;
41 };
42
43
44 // A interface to handle the engine handler method call.
45 class UI_BASE_EXPORT IMEEngineHandlerInterface {
46 public:
47 typedef base::Callback<void (bool consumed)> KeyEventDoneCallback;
48
49 // A information about a focused text input field.
50 // A type of each member is based on the html spec, but InputContext can be
51 // used to specify about a non html text field like Omnibox.
52 struct InputContext {
53 InputContext(ui::TextInputType type_, ui::TextInputMode mode_) :
54 type(type_), mode(mode_) {}
55
56 // An attribute of the field defined at
57 // http://www.w3.org/TR/html401/interact/forms.html#input-control-types.
58 ui::TextInputType type;
59 // An attribute of the field defined at
60 // http://www.whatwg.org/specs/web-apps/current-work/multipage/
61 // association-of-controls-and-forms.html#input-modalities
62 // :-the-inputmode-attribute.
63 ui::TextInputMode mode;
64 };
65
66 virtual ~IMEEngineHandlerInterface() {}
67
68 // Called when the Chrome input field get the focus.
69 virtual void FocusIn(const InputContext& input_context) = 0;
70
71 // Called when the Chrome input field lose the focus.
72 virtual void FocusOut() = 0;
73
74 // Called when the IME is enabled.
75 virtual void Enable(const std::string& component_id) = 0;
76
77 // Called when the IME is disabled.
78 virtual void Disable() = 0;
79
80 // Called when a property is activated or changed.
81 virtual void PropertyActivate(const std::string& property_name) = 0;
82
83 // Called when the IME is reset.
84 virtual void Reset() = 0;
85
86 // Called when the key event is received.
87 // Actual implementation must call |callback| after key event handling.
88 virtual void ProcessKeyEvent(const ui::KeyEvent& key_event,
89 const KeyEventDoneCallback& callback) = 0;
90
91 // Called when the candidate in lookup table is clicked. The |index| is 0
92 // based candidate index in lookup table.
93 virtual void CandidateClicked(uint32 index) = 0;
94
95 // Called when a new surrounding text is set. The |text| is surrounding text
96 // and |cursor_pos| is 0 based index of cursor position in |text|. If there is
97 // selection range, |anchor_pos| represents opposite index from |cursor_pos|.
98 // Otherwise |anchor_pos| is equal to |cursor_pos|.
99 virtual void SetSurroundingText(const std::string& text, uint32 cursor_pos,
100 uint32 anchor_pos) = 0;
101
102 protected:
103 IMEEngineHandlerInterface() {}
104 };
105
106 // A interface to handle the candidate window related method call.
107 class UI_BASE_EXPORT IMECandidateWindowHandlerInterface {
108 public:
109 virtual ~IMECandidateWindowHandlerInterface() {}
110
111 // Called when the IME updates the lookup table.
112 virtual void UpdateLookupTable(const ui::CandidateWindow& candidate_window,
113 bool visible) = 0;
114
115 // Called when the IME updates the preedit text. The |text| is given in
116 // UTF-16 encoding.
117 virtual void UpdatePreeditText(const base::string16& text,
118 uint32 cursor_pos,
119 bool visible) = 0;
120
121 // Called when the application changes its caret bounds.
122 virtual void SetCursorBounds(const gfx::Rect& cursor_bounds,
123 const gfx::Rect& composition_head) = 0;
124
125 // Called when the text field's focus state is changed.
126 // |is_focused| is true when the text field gains the focus.
127 virtual void FocusStateChanged(bool is_focused) {}
128
129 protected:
130 IMECandidateWindowHandlerInterface() {}
131 };
132
133
134 // IMEBridge provides access of each IME related handler. This class
135 // is used for IME implementation.
136 class UI_BASE_EXPORT IMEBridge {
137 public:
138 virtual ~IMEBridge();
139
140 // Allocates the global instance. Must be called before any calls to Get().
141 static void Initialize();
142
143 // Releases the global instance.
144 static void Shutdown();
145
146 // Returns IMEBridge global instance. Initialize() must be called first.
147 static IMEBridge* Get();
148
149 // Returns current InputContextHandler. This function returns NULL if input
150 // context is not ready to use.
151 virtual IMEInputContextHandlerInterface* GetInputContextHandler() const = 0;
152
153 // Updates current InputContextHandler. If there is no active input context,
154 // pass NULL for |handler|. Caller must release |handler|.
155 virtual void SetInputContextHandler(
156 IMEInputContextHandlerInterface* handler) = 0;
157
158 // Updates current EngineHandler. If there is no active engine service, pass
159 // NULL for |handler|. Caller must release |handler|.
160 virtual void SetCurrentEngineHandler(IMEEngineHandlerInterface* handler) = 0;
161
162 // Returns current EngineHandler. This function returns NULL if current engine
163 // is not ready to use.
164 virtual IMEEngineHandlerInterface* GetCurrentEngineHandler() const = 0;
165
166 // Returns current CandidateWindowHandler. This function returns NULL if
167 // current candidate window is not ready to use.
168 virtual IMECandidateWindowHandlerInterface* GetCandidateWindowHandler()
169 const = 0;
170
171 // Updates current CandidatWindowHandler. If there is no active candidate
172 // window service, pass NULL for |handler|. Caller must release |handler|.
173 virtual void SetCandidateWindowHandler(
174 IMECandidateWindowHandlerInterface* handler) = 0;
175
176 // Updates current text input type.
177 virtual void SetCurrentTextInputType(ui::TextInputType input_type) = 0;
178
179 // Returns the current text input type.
180 virtual ui::TextInputType GetCurrentTextInputType() const = 0;
181
182 protected:
183 IMEBridge();
184
185 private:
186 DISALLOW_COPY_AND_ASSIGN(IMEBridge);
187 };
188
189 } // namespace chromeos
190
191 #endif // UI_BASE_IME_CHROMEOS_IME_BRIDGE_H_
OLDNEW
« no previous file with comments | « ui/base/ime/chromeos/character_composer_unittest.cc ('k') | ui/base/ime/chromeos/ime_bridge.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698