| // 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. | 
 |  | 
 | #ifndef CONTENT_COMMON_TEXT_INPUT_STATE_H_ | 
 | #define CONTENT_COMMON_TEXT_INPUT_STATE_H_ | 
 |  | 
 | #include "base/strings/string16.h" | 
 | #include "content/common/content_export.h" | 
 | #include "ui/base/ime/text_input_mode.h" | 
 | #include "ui/base/ime/text_input_type.h" | 
 |  | 
 | namespace content { | 
 |  | 
 | // The text input state information for handling IME on the browser side. The | 
 | // text input state information such as type, mode, etc. are used by the input | 
 | // method to handle IME (the usage is specific to each platform). | 
 | struct CONTENT_EXPORT TextInputState { | 
 |   TextInputState(); | 
 |   TextInputState(const TextInputState& other); | 
 |  | 
 |   // Type of the input field. | 
 |   ui::TextInputType type; | 
 |  | 
 |   // The mode of input field. | 
 |   ui::TextInputMode mode; | 
 |  | 
 |   // The flags of input field (autocorrect, autocomplete, etc.) | 
 |   int flags; | 
 |  | 
 |   // The value of input field. | 
 |   base::string16 value; | 
 |  | 
 |   // The cursor position of the current selection start, or the caret position | 
 |   // if nothing is selected. | 
 |   int selection_start; | 
 |  | 
 |   // The cursor position of the current selection end, or the caret position if | 
 |   // nothing is selected. | 
 |   int selection_end; | 
 |  | 
 |   // The start position of the current composition, or -1 if there is none. | 
 |   int composition_start; | 
 |  | 
 |   // The end position of the current composition, or -1 if there is none. | 
 |   int composition_end; | 
 |  | 
 |   // Whether or not inline composition can be performed for the current input. | 
 |   bool can_compose_inline; | 
 |  | 
 |   // 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 this is a reply to a request from IME. | 
 |   bool reply_to_request; | 
 | }; | 
 |  | 
 | }  // namespace content | 
 |  | 
 | #endif  // CONTENT_COMMON_TEXT_INPUT_STATE_H_ |