blob: 593bf1e500205ac57a80733070918a3ef70fe110 [file] [log] [blame]
[email protected]493d14212011-07-07 15:38:481// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "ppapi/proxy/ppb_input_event_proxy.h"
6
7#include "ppapi/c/ppb_audio_config.h"
8#include "ppapi/proxy/plugin_dispatcher.h"
9#include "ppapi/proxy/plugin_resource.h"
10#include "ppapi/proxy/plugin_var_tracker.h"
11#include "ppapi/proxy/ppapi_messages.h"
12#include "ppapi/shared_impl/input_event_impl.h"
[email protected]2bbd2c672011-08-09 23:14:1313#include "ppapi/shared_impl/var.h"
[email protected]493d14212011-07-07 15:38:4814#include "ppapi/thunk/thunk.h"
15
[email protected]be0a84b2011-08-13 04:18:4416using ppapi::HostResource;
[email protected]493d14212011-07-07 15:38:4817using ppapi::InputEventData;
18using ppapi::InputEventImpl;
19using ppapi::thunk::PPB_InputEvent_API;
20
21namespace pp {
22namespace proxy {
23
24// The implementation is actually in InputEventImpl.
25class InputEvent : public PluginResource, public InputEventImpl {
26 public:
27 InputEvent(const HostResource& resource, const InputEventData& data);
28 virtual ~InputEvent();
29
30 // ResourceObjectBase overrides.
31 virtual PPB_InputEvent_API* AsPPB_InputEvent_API() OVERRIDE;
32
33 // InputEventImpl overrides.
34 virtual PP_Var StringToPPVar(const std::string& str) OVERRIDE;
35
36 private:
37 DISALLOW_COPY_AND_ASSIGN(InputEvent);
38};
39
40InputEvent::InputEvent(const HostResource& resource, const InputEventData& data)
41 : PluginResource(resource),
42 InputEventImpl(data) {
43}
44
45InputEvent::~InputEvent() {
46}
47
48PPB_InputEvent_API* InputEvent::AsPPB_InputEvent_API() {
49 return this;
50}
51
52PP_Var InputEvent::StringToPPVar(const std::string& str) {
[email protected]2bbd2c672011-08-09 23:14:1353 return ppapi::StringVar::StringToPPVar(0, str);
[email protected]493d14212011-07-07 15:38:4854}
55
56namespace {
57
58InterfaceProxy* CreateInputEventProxy(Dispatcher* dispatcher,
59 const void* target_interface) {
60 return new PPB_InputEvent_Proxy(dispatcher, target_interface);
61}
62
63} // namespace
64
65PPB_InputEvent_Proxy::PPB_InputEvent_Proxy(Dispatcher* dispatcher,
66 const void* target_interface)
67 : InterfaceProxy(dispatcher, target_interface) {
68}
69
70PPB_InputEvent_Proxy::~PPB_InputEvent_Proxy() {
71}
72
73// static
[email protected]f3579d12011-07-22 15:47:4274const InterfaceProxy::Info* PPB_InputEvent_Proxy::GetInputEventInfo() {
[email protected]493d14212011-07-07 15:38:4875 static const Info info = {
76 ::ppapi::thunk::GetPPB_InputEvent_Thunk(),
77 PPB_INPUT_EVENT_INTERFACE,
78 INTERFACE_ID_NONE,
79 false,
80 &CreateInputEventProxy,
81 };
82 return &info;
83}
84
85// static
[email protected]f3579d12011-07-22 15:47:4286const InterfaceProxy::Info* PPB_InputEvent_Proxy::GetKeyboardInputEventInfo() {
87 static const Info info = {
88 ::ppapi::thunk::GetPPB_KeyboardInputEvent_Thunk(),
89 PPB_KEYBOARD_INPUT_EVENT_INTERFACE,
90 INTERFACE_ID_NONE,
91 false,
92 &CreateInputEventProxy,
93 };
94 return &info;
95}
96
97// static
98const InterfaceProxy::Info* PPB_InputEvent_Proxy::GetMouseInputEventInfo() {
99 static const Info info = {
100 ::ppapi::thunk::GetPPB_MouseInputEvent_Thunk(),
101 PPB_MOUSE_INPUT_EVENT_INTERFACE,
102 INTERFACE_ID_NONE,
103 false,
104 &CreateInputEventProxy,
105 };
106 return &info;
107}
108
109// static
110const InterfaceProxy::Info* PPB_InputEvent_Proxy::GetWheelInputEventInfo() {
111 static const Info info = {
112 ::ppapi::thunk::GetPPB_WheelInputEvent_Thunk(),
113 PPB_WHEEL_INPUT_EVENT_INTERFACE,
114 INTERFACE_ID_NONE,
115 false,
116 &CreateInputEventProxy,
117 };
118 return &info;
119}
120
121// static
[email protected]493d14212011-07-07 15:38:48122PP_Resource PPB_InputEvent_Proxy::CreateProxyResource(
123 PP_Instance instance,
124 const InputEventData& data) {
[email protected]51e1aec2011-08-11 04:48:30125 return PluginResourceTracker::GetInstance()->AddResource(
126 new InputEvent(HostResource::MakeInstanceOnly(instance), data));
[email protected]493d14212011-07-07 15:38:48127}
128
129bool PPB_InputEvent_Proxy::OnMessageReceived(const IPC::Message& msg) {
130 // There are no IPC messages for this interface.
131 NOTREACHED();
132 return false;
133}
134
135} // namespace proxy
136} // namespace pp