summaryrefslogtreecommitdiff
path: root/chromium/ui/base/ime/mojom/text_input_state.mojom
blob: d52feb42d0a753699638048eec3806d8345b4795 (plain)
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
// Copyright 2020 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.

module ui.mojom;

import "mojo/public/mojom/base/string16.mojom";
import "mojo/public/mojom/base/text_direction.mojom";
import "ui/base/ime/mojom/ime_types.mojom";
import "ui/base/ime/mojom/virtual_keyboard_types.mojom";
import "ui/gfx/geometry/mojom/geometry.mojom";
import "ui/gfx/range/mojom/range.mojom";

// This structure contains ime text span and its bounds.
struct ImeTextSpanInfo {
  ui.mojom.ImeTextSpan span;
  gfx.mojom.Rect bounds;
};

// This structure represents the current editing state.
struct TextInputState {
  // Type of the input field.
  ui.mojom.TextInputType type = ui.mojom.TextInputType.NONE;

  // The mode of input field.
  ui.mojom.TextInputMode mode = ui.mojom.TextInputMode.kDefault;

  // The action of the input field.
  ui.mojom.TextInputAction action = ui.mojom.TextInputAction.kDefault;

  // The flags of input field (autocorrect, autocomplete, etc.)
  // See ui/base/ime/text_input_flags.h for definitions.
  uint32 flags;

  // The value of input field.
  mojo_base.mojom.String16? value;

  // The current selection range, or the caret position if nothing is selected.
  gfx.mojom.Range selection;

  // The current composition range if there is one.
  gfx.mojom.Range? composition;

  // Whether or not inline composition can be performed for the current input.
  bool can_compose_inline = true;

  // Whether or not the IME should be shown as a result of this update. Even if
  // true, the IME will only be shown if the input is appropriate (e.g. not
  // TEXT_INPUT_TYPE_NONE).
  bool show_ime_if_needed;

  // Whether or not the IME should always be hidden as a result of this update.
  bool always_hide_ime;

  // Whether or not this is a reply to a request from IME.
  bool reply_to_request;

  // Store control and selection bounds of EditContext.
  // These optionals will be nullopts if there isn't any active EditContext.
  // For non EditContext scenarios, the bounds are returned via
  // |GetCompositionCharacterBounds|
  gfx.mojom.Rect? edit_context_control_bounds;
  gfx.mojom.Rect? edit_context_selection_bounds;

  // The virtualkeyboardpolicy of the input field.
  ui.mojom.VirtualKeyboardPolicy vk_policy =
    ui.mojom.VirtualKeyboardPolicy.AUTO;

  // Whether or not show()/hide() API is called from VirtualKeyboard by web
  // authors when the virtualkeyboardpolicy is manual.
  ui.mojom.VirtualKeyboardVisibilityRequest last_vk_visibility_request =
    ui.mojom.VirtualKeyboardVisibilityRequest.NONE;

  // Information of ime text spans at the cursor position.
  array<ImeTextSpanInfo> ime_text_spans_info;
};