|  | // Copyright 2013 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 PPAPI_CPP_TEXT_INPUT_CONTROLLER_H_ | 
|  | #define PPAPI_CPP_TEXT_INPUT_CONTROLLER_H_ | 
|  |  | 
|  | #include <stdint.h> | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | #include "ppapi/c/ppb_text_input_controller.h" | 
|  | #include "ppapi/cpp/instance_handle.h" | 
|  | #include "ppapi/cpp/var.h" | 
|  |  | 
|  | /// @file | 
|  | /// This file defines the APIs for text input handling. | 
|  |  | 
|  | namespace pp { | 
|  |  | 
|  | class Rect; | 
|  |  | 
|  | /// This class can be used for giving hints to the browser about the text input | 
|  | /// status of plugins. | 
|  | class TextInputController { | 
|  | public: | 
|  | /// A constructor for creating a <code>TextInputController</code>. | 
|  | /// | 
|  | /// @param[in] instance The instance with which this resource will be | 
|  | /// associated. | 
|  | explicit TextInputController(const InstanceHandle& instance); | 
|  |  | 
|  | /// Destructor. | 
|  | ~TextInputController(); | 
|  |  | 
|  | /// SetTextInputType() informs the browser about the current text input mode | 
|  | /// of the plugin. | 
|  | /// | 
|  | /// @param[in] type The type of text input type. | 
|  | void SetTextInputType(PP_TextInput_Type type); | 
|  |  | 
|  | /// UpdateCaretPosition() informs the browser about the coordinates of the | 
|  | /// text input caret area. | 
|  | /// | 
|  | /// @param[in] caret A rectangle indicating the caret area. | 
|  | void UpdateCaretPosition(const Rect& caret); | 
|  |  | 
|  | /// CancelCompositionText() informs the browser that the current composition | 
|  | /// text is cancelled by the plugin. | 
|  | void CancelCompositionText(); | 
|  |  | 
|  | /// UpdateSurroundingText() informs the browser about the current text | 
|  | /// selection and surrounding text. | 
|  | /// | 
|  | /// @param[in] text A UTF-8 sting indicating string buffer of current input | 
|  | /// context. | 
|  | /// | 
|  | /// @param[in] caret A integer indicating the byte index of caret location in | 
|  | /// <code>text</code>. | 
|  | /// | 
|  | /// @param[in] caret A integer indicating the byte index of anchor location in | 
|  | /// <code>text</code>. If there is no selection, this value should be equal to | 
|  | /// <code>caret</code>. | 
|  | void UpdateSurroundingText(const Var& text, | 
|  | uint32_t caret, | 
|  | uint32_t anchor); | 
|  |  | 
|  | private: | 
|  | InstanceHandle instance_; | 
|  | }; | 
|  |  | 
|  | }  // namespace pp | 
|  |  | 
|  | #endif  // PPAPI_CPP_TEXT_INPUT_CONTROLLER_H_ |