| // 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: 12 |
| |
| 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 |
| |
| // 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. |
| bool emphasized; |
| }; |
| |
| // Next method ID: 6 |
| 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. |
| // Howver, hiding can be canceled if a text field gets focus. |
| // TODO(yhanada): We might be able to remove this method by adding an argument |
| // to OnTextInputTypeChanged(). |
| [MinVersion=9] RequestHideIme@5(); |
| }; |
| |
| // Next method ID: 7 |
| interface ImeInstance { |
| // DEPRECATED: Please use Init@6 instead. |
| InitDeprecated@0(ImeHost host_ptr); |
| |
| // Establishes full-duplex communication with the host. |
| [MinVersion=6] Init@6(ImeHost host_ptr) => (); |
| |
| // Sets composition text and attributes requested by the host IME. |
| SetCompositionText@1(string text, array<CompositionSegment> segments); |
| |
| // Commits the last set composition text and clears the composition. |
| ConfirmCompositionText@2(); |
| |
| // Commits the specified text and clears the composition. |
| InsertText@3(string text); |
| |
| // 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); |
| }; |