// 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: 11 module arc.mojom; import "components/arc/common/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, }; // 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. OnTextInputTypeChanged@0( TextInputType type, [MinVersion=10] bool is_personalized_learning_allowed); // 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 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); };