| // Copyright 2016 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. |
| |
| // Next MinVersion: 19 |
| |
| module arc.mojom; |
| |
| import "components/arc/mojom/gfx.mojom"; |
| |
| // Represents the type of text input field currently focused. |
| [Extensible] |
| enum TextInputType { |
| NONE, |
| TEXT, |
| PASSWORD, |
| SEARCH, |
| EMAIL, |
| NUMBER, |
| TELEPHONE, |
| URL, |
| DATE, |
| TIME, |
| DATETIME, |
| }; |
| |
| // 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, |
| }; |
| |
| // 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; |
| }; |
| |
| // Next method ID: 8 |
| 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 poisition has changed. |
| // |
| // |rect| describes the coordinates in physical pixels. |
| // If |is_screen_coordinates| is set to true, its origin (0,0) is the top-left |
| // of the primary display. Otherwise it is the top-left of the window that has |
| // the IME focus. |
| OnCursorRectChanged@1(Rect rect, |
| [MinVersion=8] bool is_screen_coordinates); |
| |
| // 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. |
| // If |is_screen_coordinates| is set to true, its origin (0,0) is the top-left |
| // of the primary display. Otherwise it is the top-left of the window that has |
| // the IME focus. |
| // |
| // |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=5] OnCursorRectChangedWithSurroundingText@4( |
| 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. |
| [MinVersion=8] bool is_screen_coordinates // Whether or not the |rect| |
| // are in screen coordinates. |
| ); |
| |
| // Requests Chrome to hide the virtual keyboard. |
| // However, hiding can be canceled if a text field gets focus. |
| [MinVersion=9] RequestHideImeDeprecated@5(); |
| |
| // 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. |
| // Next method ID: 9 |
| interface ImeInstance { |
| // DEPRECATED: Please use Init@6 instead. |
| InitDeprecated@0(pending_remote<ImeHost> host_remote); |
| |
| // 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); |
| |
| // 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); |
| }; |