| Index: ppapi/proxy/ppp_input_event_proxy.cc
|
| ===================================================================
|
| --- ppapi/proxy/ppp_input_event_proxy.cc (revision 0)
|
| +++ ppapi/proxy/ppp_input_event_proxy.cc (revision 0)
|
| @@ -0,0 +1,115 @@
|
| +// 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/ppp_input_event_proxy.h"
|
| +
|
| +#include <algorithm>
|
| +
|
| +#include "ppapi/c/ppp_input_event.h"
|
| +#include "ppapi/proxy/host_dispatcher.h"
|
| +#include "ppapi/proxy/plugin_dispatcher.h"
|
| +#include "ppapi/proxy/plugin_resource_tracker.h"
|
| +#include "ppapi/proxy/ppapi_messages.h"
|
| +#include "ppapi/proxy/ppb_input_event_proxy.h"
|
| +#include "ppapi/thunk/enter.h"
|
| +#include "ppapi/thunk/ppb_input_event_api.h"
|
| +
|
| +using ppapi::InputEventData;
|
| +using ppapi::thunk::EnterResourceNoLock;
|
| +using ppapi::thunk::PPB_InputEvent_API;
|
| +
|
| +namespace pp {
|
| +namespace proxy {
|
| +
|
| +namespace {
|
| +
|
| +PP_Bool HandleInputEvent(PP_Instance instance, PP_Resource input_event) {
|
| + EnterResourceNoLock<PPB_InputEvent_API> enter(input_event, false);
|
| + if (enter.failed()) {
|
| + NOTREACHED();
|
| + return PP_FALSE;
|
| + }
|
| + const InputEventData& data = enter.object()->GetInputEventData();
|
| + HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance);
|
| + if (!dispatcher) {
|
| + NOTREACHED();
|
| + return PP_FALSE;
|
| + }
|
| +
|
| + // Need to send different messages depending on whether filtering is needed.
|
| + PP_Bool result = PP_FALSE;
|
| + if (data.is_filtered) {
|
| + dispatcher->Send(new PpapiMsg_PPPInputEvent_HandleFilteredInputEvent(
|
| + INTERFACE_ID_PPP_INPUT_EVENT, instance, data, &result));
|
| + } else {
|
| + dispatcher->Send(new PpapiMsg_PPPInputEvent_HandleInputEvent(
|
| + INTERFACE_ID_PPP_INPUT_EVENT, instance, data));
|
| + }
|
| + return result;
|
| +}
|
| +
|
| +static const PPP_InputEvent input_event_interface = {
|
| + &HandleInputEvent
|
| +};
|
| +
|
| +InterfaceProxy* CreateInputEventProxy(Dispatcher* dispatcher,
|
| + const void* target_interface) {
|
| + return new PPP_InputEvent_Proxy(dispatcher, target_interface);
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +PPP_InputEvent_Proxy::PPP_InputEvent_Proxy(Dispatcher* dispatcher,
|
| + const void* target_interface)
|
| + : InterfaceProxy(dispatcher, target_interface) {
|
| +}
|
| +
|
| +PPP_InputEvent_Proxy::~PPP_InputEvent_Proxy() {
|
| +}
|
| +
|
| +// static
|
| +const InterfaceProxy::Info* PPP_InputEvent_Proxy::GetInfo() {
|
| + static const Info info = {
|
| + &input_event_interface,
|
| + PPP_INPUT_EVENT_INTERFACE,
|
| + INTERFACE_ID_PPP_INPUT_EVENT,
|
| + false,
|
| + &CreateInputEventProxy,
|
| + };
|
| + return &info;
|
| +}
|
| +
|
| +bool PPP_InputEvent_Proxy::OnMessageReceived(const IPC::Message& msg) {
|
| + bool handled = true;
|
| + IPC_BEGIN_MESSAGE_MAP(PPP_InputEvent_Proxy, msg)
|
| + IPC_MESSAGE_HANDLER(PpapiMsg_PPPInputEvent_HandleInputEvent,
|
| + OnMsgHandleInputEvent)
|
| + IPC_MESSAGE_HANDLER(PpapiMsg_PPPInputEvent_HandleFilteredInputEvent,
|
| + OnMsgHandleFilteredInputEvent)
|
| + IPC_MESSAGE_UNHANDLED(handled = false)
|
| + IPC_END_MESSAGE_MAP()
|
| + return handled;
|
| +}
|
| +
|
| +void PPP_InputEvent_Proxy::OnMsgHandleInputEvent(PP_Instance instance,
|
| + const InputEventData& data) {
|
| + PP_Resource event_resource = PPB_InputEvent_Proxy::CreateProxyResource(
|
| + instance, data);
|
| + ppp_input_event_target()->HandleInputEvent(instance, event_resource);
|
| + PluginResourceTracker::GetInstance()->ReleaseResource(event_resource);
|
| +}
|
| +
|
| +void PPP_InputEvent_Proxy::OnMsgHandleFilteredInputEvent(
|
| + PP_Instance instance,
|
| + const InputEventData& data,
|
| + PP_Bool* result) {
|
| + PP_Resource event_resource = PPB_InputEvent_Proxy::CreateProxyResource(
|
| + instance, data);
|
| + *result = ppp_input_event_target()->HandleInputEvent(instance,
|
| + event_resource);
|
| + PluginResourceTracker::GetInstance()->ReleaseResource(event_resource);
|
| +}
|
| +
|
| +} // namespace proxy
|
| +} // namespace pp
|
|
|
| Property changes on: ppapi/proxy/ppp_input_event_proxy.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|