|  | // 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. | 
|  |  | 
|  | #include "ppapi/cpp/text_input_controller.h" | 
|  |  | 
|  | #include "ppapi/cpp/module_impl.h" | 
|  | #include "ppapi/cpp/rect.h" | 
|  | #include "ppapi/cpp/var.h" | 
|  |  | 
|  | namespace pp { | 
|  |  | 
|  | namespace { | 
|  |  | 
|  | template <> const char* interface_name<PPB_TextInputController_1_0>() { | 
|  | return PPB_TEXTINPUTCONTROLLER_INTERFACE_1_0; | 
|  | } | 
|  |  | 
|  | }  // namespace | 
|  |  | 
|  |  | 
|  | TextInputController::TextInputController(const InstanceHandle& instance) | 
|  | : instance_(instance) { | 
|  | } | 
|  |  | 
|  | TextInputController::~TextInputController() { | 
|  | } | 
|  |  | 
|  | void TextInputController::SetTextInputType(PP_TextInput_Type type) { | 
|  | if (has_interface<PPB_TextInputController_1_0>()) { | 
|  | get_interface<PPB_TextInputController_1_0>()->SetTextInputType( | 
|  | instance_.pp_instance(), type); | 
|  | } | 
|  | } | 
|  |  | 
|  | void TextInputController::UpdateCaretPosition(const Rect& caret) { | 
|  | if (has_interface<PPB_TextInputController_1_0>()) { | 
|  | get_interface<PPB_TextInputController_1_0>()->UpdateCaretPosition( | 
|  | instance_.pp_instance(), &caret.pp_rect()); | 
|  | } | 
|  | } | 
|  |  | 
|  | void TextInputController::CancelCompositionText() { | 
|  | if (has_interface<PPB_TextInputController_1_0>()) { | 
|  | get_interface<PPB_TextInputController_1_0>()->CancelCompositionText( | 
|  | instance_.pp_instance()); | 
|  | } | 
|  | } | 
|  |  | 
|  | void TextInputController::UpdateSurroundingText(const Var& text, | 
|  | uint32_t caret, | 
|  | uint32_t anchor) { | 
|  | if (has_interface<PPB_TextInputController_1_0>()) { | 
|  | get_interface<PPB_TextInputController_1_0>()->UpdateSurroundingText( | 
|  | instance_.pp_instance(), | 
|  | text.pp_var(), | 
|  | caret, | 
|  | anchor); | 
|  | } | 
|  | } | 
|  |  | 
|  |  | 
|  | }  // namespace pp |