1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
ash / components / arc / mojom / ime.mojom [blame]
// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Next MinVersion: 23
module arc.mojom;
import "ash/components/arc/mojom/gfx.mojom";
// Represents the type of text input field currently focused.
[Extensible]
enum TextInputType {
[Default] NONE,
TEXT,
PASSWORD,
SEARCH,
EMAIL,
NUMBER,
TELEPHONE,
URL,
DATE,
TIME,
DATETIME,
// Corresponds to InputType.TYPE_NULL of Android.
ANDROID_NULL,
};
// Maps to ui::TextInputFlags in ui/base/ime/text_input_flags.h.
// Some flags are still missing here because they're not yet supported in ARC++
// IME.
const int32 TEXT_INPUT_FLAG_NONE = 0;
const int32 TEXT_INPUT_FLAG_AUTOCAPITALIZE_NONE = 64; // 1 << 6
const int32 TEXT_INPUT_FLAG_AUTOCAPITALIZE_CHARACTERS = 128; // 1 << 7
const int32 TEXT_INPUT_FLAG_AUTOCAPITALIZE_WORDS = 256; // 1 << 8
const int32 TEXT_INPUT_FLAG_AUTOCAPITALIZE_SENTENCES = 512; // 1 << 9
[Extensible]
enum SegmentStyle {
DEFAULT,
EMPHASIZED,
NONE,
};
[Extensible]
enum CursorCoordinateSpace {
// (0, 0) is the top-left of the main display.
SCREEN,
// (0, 0) is the top-left of the current display.
DISPLAY,
// (0, 0) is the top-left of the notification display.
NOTIFICATION,
};
// Represents a single segment of text currently composed by IME.
struct CompositionSegment {
// Start offset of the segment in UTF-16 index.
uint32 start_offset;
// End offset of the segment in UTF-16 index.
uint32 end_offset;
// Indicates that this segment should be emphasized.
// This field is deprecated, use |style| instead.
bool emphasized;
// Visual style of this segment.
[MinVersion=18] SegmentStyle style;
};
// Represents the information of a key event.
struct KeyEventData {
// Whether the event is a press event or a release event.
bool pressed;
// The key touched in the event represented in |ui::KeyboardCode|.
int32 key_code;
// The flags for modifiers state.
bool is_shift_down;
bool is_control_down;
bool is_alt_down;
bool is_capslock_on;
// An optional field used if |key_code| is undefined.
// It should be one of evdev codes (i.e. KEY_* defines)
// in <linux/input-event-codes.h>.
[MinVersion=16] uint32 scan_code;
[MinVersion=20] bool is_alt_gr_down;
[MinVersion=23] bool is_repeat;
};
// Deprecated method IDs: 1, 4, 5, 6
// Next method ID: 10
interface ImeHost {
// Notifies Chrome that the text input focus is changed.
// Each bit of the bitmask |flags| corresponds to TEXT_INPUT_FLAG_*.
OnTextInputTypeChanged@0(
TextInputType type,
[MinVersion=10] bool is_personalized_learning_allowed,
[MinVersion=11] int32 flags);
// Notifies Chrome that the cursor position has changed.
//
// |rect| describes the coordinates in physical pixels in the given
// coordinates.
[MinVersion=19] OnCursorRectChanged@8(
Rect rect,
CursorCoordinateSpace coordinateSpace);
// Notifies Chrome that the current composition is canceled.
[MinVersion=1] OnCancelComposition@2();
// Show virtual keyboard of Chrome OS if needed.
[MinVersion=2] ShowVirtualKeyboardIfEnabled@3();
// Notifies Chrome that the cursor position has changed and
// also sends surrounding text.
//
// |rect| describes the coordinates in physical pixels in the given
// coordinates.
//
// |text_range|, |text_in_range| and |selection_range| are piggy-backed
// into this method because Chrome OS IME tries to retrieve these information
// synchronously, so we need to update them all at once to keep consistency.
[MinVersion=19] OnCursorRectChangedWithSurroundingText@9(
Rect rect, // The cursor position.
Range text_range, // The range of |text_in_range| in the current
// text in the editor.
string text_in_range, // The text around the cursor.
Range selection_range, // The range of the selected text
// in the current text in the editor.
CursorCoordinateSpace coordinateSpace // The coordinate space of |rect|.
);
// Sends a key event to Chrome to pass it to the Chrome OS IME.
[MinVersion=14] SendKeyEvent@7(KeyEventData key_event_data)
=> (bool is_consumed);
};
// Represents a text input field that is hosted inside ARC++, allowing Chrome OS
// browser process to manipulate text within Android apps.
// Deprecated method IDs: 0
// Next method ID: 9
interface ImeInstance {
// Establishes full-duplex communication with the host.
[MinVersion=6] Init@6(pending_remote<ImeHost> host_remote) => ();
// Sets composition text and attributes requested by the host IME.
SetCompositionText@1(
string text,
array<CompositionSegment> segments,
[MinVersion=21] Range? selection_range);
// Sets selection text and attributes requested by the host IME.
[MinVersion=12] SetSelectionText@7(Range selection);
// Commits the last set composition text and clears the composition.
ConfirmCompositionText@2();
// Commits the specified text and clears the composition.
// |new_cursor_position| indicates where to place the cursor after commit,
// relative to |text|.
// If |new_cursor_position| > 0, then it is relative to the end (1 being the
// end of the text). If |new_cursor_position| <= 0, then it is relative to the
// start (0 being the beginning of the text).
InsertText@3(
string text,
[MinVersion=17] int32 new_cursor_position);
// Informs the virtual keyboard availability and bounds on screen is changing.
// |is_available| whether a virtual keyboard is visible or not.
// |new_bounds| Represents a virtual keyboard bounds covering below windows in
// screen coordinate. physical pixel as a unit.
[MinVersion=3] OnKeyboardAppearanceChanging@4(
Rect new_bounds,
[MinVersion=7] bool is_available);
// Deletes current selection plus the specified number of char16 values
// before and after selection or caret.
[MinVersion=4] ExtendSelectionAndDelete@5(uint64 before, uint64 after);
// Sets composing region requested by the host IME.
[MinVersion=15] SetComposingRegion@8(Range range);
};