1a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// found in the LICENSE file. 4a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 5a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "ppapi/cpp/text_input_controller.h" 6a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 7a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "ppapi/cpp/module_impl.h" 8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "ppapi/cpp/rect.h" 9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "ppapi/cpp/var.h" 10a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace pp { 12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace { 14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 15a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)template <> const char* interface_name<PPB_TextInputController_1_0>() { 16a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) return PPB_TEXTINPUTCONTROLLER_INTERFACE_1_0; 17a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 18a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 19a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} // namespace 20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 22a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)TextInputController::TextInputController(const InstanceHandle& instance) 23a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) : instance_(instance) { 24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 25a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)TextInputController::~TextInputController() { 27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void TextInputController::SetTextInputType(PP_TextInput_Type type) { 30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (has_interface<PPB_TextInputController_1_0>()) { 31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) get_interface<PPB_TextInputController_1_0>()->SetTextInputType( 32a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) instance_.pp_instance(), type); 33a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 34a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 35a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 36a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void TextInputController::UpdateCaretPosition(const Rect& caret) { 37a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (has_interface<PPB_TextInputController_1_0>()) { 38a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) get_interface<PPB_TextInputController_1_0>()->UpdateCaretPosition( 39a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) instance_.pp_instance(), &caret.pp_rect()); 40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 41a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 42a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 43a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void TextInputController::CancelCompositionText() { 44a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (has_interface<PPB_TextInputController_1_0>()) { 45a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) get_interface<PPB_TextInputController_1_0>()->CancelCompositionText( 46a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) instance_.pp_instance()); 47a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 48a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 49a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 50a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void TextInputController::UpdateSurroundingText(const Var& text, 51a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) uint32_t caret, 52a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) uint32_t anchor) { 53a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (has_interface<PPB_TextInputController_1_0>()) { 54a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) get_interface<PPB_TextInputController_1_0>()->UpdateSurroundingText( 55a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) instance_.pp_instance(), 56a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) text.pp_var(), 57a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) caret, 58a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) anchor); 59a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 60a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 61a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 62a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 63a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} // namespace pp 64