| Index: ppapi/proxy/ppb_text_input_proxy.cc
|
| diff --git a/ppapi/proxy/ppb_text_input_proxy.cc b/ppapi/proxy/ppb_text_input_proxy.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3e96991b9fa066f74215e2591b254d9df3dd9e7e
|
| --- /dev/null
|
| +++ b/ppapi/proxy/ppb_text_input_proxy.cc
|
| @@ -0,0 +1,121 @@
|
| +// Copyright (c) 2011 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/proxy/ppb_text_input_proxy.h"
|
| +
|
| +#include "ppapi/proxy/plugin_dispatcher.h"
|
| +#include "ppapi/proxy/plugin_resource_tracker.h"
|
| +#include "ppapi/proxy/ppapi_messages.h"
|
| +#include "ppapi/thunk/enter.h"
|
| +#include "ppapi/thunk/thunk.h"
|
| +#include <stdio.h>
|
| +
|
| +using ppapi::thunk::EnterFunctionNoLock;
|
| +using ppapi::thunk::PPB_TextInput_FunctionAPI;
|
| +
|
| +namespace ppapi {
|
| +namespace proxy {
|
| +
|
| +namespace {
|
| +
|
| +InterfaceProxy* CreateTextInputProxy(Dispatcher* dispatcher,
|
| + const void* target_interface) {
|
| + return new PPB_TextInput_Proxy(dispatcher, target_interface);
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +PPB_TextInput_Proxy::PPB_TextInput_Proxy(Dispatcher* dispatcher,
|
| + const void* target_interface)
|
| + : InterfaceProxy(dispatcher, target_interface) {
|
| +}
|
| +
|
| +PPB_TextInput_Proxy::~PPB_TextInput_Proxy() {
|
| +}
|
| +
|
| +// static
|
| +const InterfaceProxy::Info* PPB_TextInput_Proxy::GetInfo() {
|
| + static const Info info = {
|
| + thunk::GetPPB_TextInput_Thunk(),
|
| + PPB_TEXTINPUT_DEV_INTERFACE,
|
| + INTERFACE_ID_PPB_TEXTINPUT,
|
| + false,
|
| + &CreateTextInputProxy,
|
| + };
|
| + return &info;
|
| +}
|
| +
|
| +ppapi::thunk::PPB_TextInput_FunctionAPI*
|
| +PPB_TextInput_Proxy::AsPPB_TextInput_FunctionAPI() {
|
| + return this;
|
| +}
|
| +
|
| +void PPB_TextInput_Proxy::SetTextInputType(PP_Instance instance,
|
| + PP_TextInput_Type type) {
|
| + dispatcher()->Send(new PpapiHostMsg_PPBTextInput_SetTextInputType(
|
| + INTERFACE_ID_PPB_TEXTINPUT, instance, type));
|
| +}
|
| +
|
| +void PPB_TextInput_Proxy::UpdateCaretPosition(PP_Instance instance,
|
| + const PP_Rect& caret,
|
| + const PP_Rect& boundingBox) {
|
| + dispatcher()->Send(new PpapiHostMsg_PPBTextInput_UpdateCaretPosition(
|
| + INTERFACE_ID_PPB_TEXTINPUT, instance, caret, boundingBox));
|
| +}
|
| +
|
| +void PPB_TextInput_Proxy::ConfirmCompositionText(PP_Instance instance) {
|
| + dispatcher()->Send(new PpapiHostMsg_PPBTextInput_ConfirmCompositionText(
|
| + INTERFACE_ID_PPB_TEXTINPUT, instance));
|
| +}
|
| +
|
| +void PPB_TextInput_Proxy::CancelCompositionText(PP_Instance instance) {
|
| + dispatcher()->Send(new PpapiHostMsg_PPBTextInput_CancelCompositionText(
|
| + INTERFACE_ID_PPB_TEXTINPUT, instance));
|
| +}
|
| +
|
| +bool PPB_TextInput_Proxy::OnMessageReceived(const IPC::Message& msg) {
|
| + bool handled = true;
|
| + IPC_BEGIN_MESSAGE_MAP(PPB_TextInput_Proxy, msg)
|
| + IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBTextInput_SetTextInputType,
|
| + OnMsgSetTextInputType)
|
| + IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBTextInput_UpdateCaretPosition,
|
| + OnMsgUpdateCaretPosition)
|
| + IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBTextInput_ConfirmCompositionText,
|
| + OnMsgConfirmCompositionText)
|
| + IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBTextInput_CancelCompositionText,
|
| + OnMsgCancelCompositionText)
|
| + IPC_MESSAGE_UNHANDLED(handled = false)
|
| + IPC_END_MESSAGE_MAP()
|
| + return handled;
|
| +}
|
| +
|
| +void PPB_TextInput_Proxy::OnMsgSetTextInputType(PP_Instance instance,
|
| + PP_TextInput_Type type) {
|
| + EnterFunctionNoLock<PPB_TextInput_FunctionAPI> enter(instance, true);
|
| + if (enter.succeeded())
|
| + enter.functions()->SetTextInputType(instance, type);
|
| +}
|
| +
|
| +void PPB_TextInput_Proxy::OnMsgUpdateCaretPosition(PP_Instance instance,
|
| + PP_Rect caret,
|
| + PP_Rect boundingBox) {
|
| + EnterFunctionNoLock<PPB_TextInput_FunctionAPI> enter(instance, true);
|
| + if (enter.succeeded())
|
| + enter.functions()->UpdateCaretPosition(instance, caret, boundingBox);
|
| +}
|
| +
|
| +void PPB_TextInput_Proxy::OnMsgConfirmCompositionText(PP_Instance instance) {
|
| + EnterFunctionNoLock<PPB_TextInput_FunctionAPI> enter(instance, true);
|
| + if (enter.succeeded())
|
| + enter.functions()->ConfirmCompositionText(instance);
|
| +}
|
| +
|
| +void PPB_TextInput_Proxy::OnMsgCancelCompositionText(PP_Instance instance) {
|
| + EnterFunctionNoLock<PPB_TextInput_FunctionAPI> enter(instance, true);
|
| + if (enter.succeeded())
|
| + enter.functions()->CancelCompositionText(instance);
|
| +}
|
| +
|
| +} // namespace proxy
|
| +} // namespace ppapi
|
|
|