Index: src/shared/ppapi_proxy/browser_ppb_input_event_rpc_server.cc |
diff --git a/src/shared/ppapi_proxy/browser_ppb_input_event_rpc_server.cc b/src/shared/ppapi_proxy/browser_ppb_input_event_rpc_server.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b034089d18e221cffc556f9d03a58e8c78434d95 |
--- /dev/null |
+++ b/src/shared/ppapi_proxy/browser_ppb_input_event_rpc_server.cc |
@@ -0,0 +1,84 @@ |
+// Copyright (c) 2011 The Native Client Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+// |
+// SRPC-abstraction wrappers around PPB_InputEvent functions. |
+ |
+#include "native_client/src/include/portability.h" |
+#include "native_client/src/shared/ppapi_proxy/browser_globals.h" |
+#include "native_client/src/shared/ppapi_proxy/browser_ppp_input_event.h" |
+#include "native_client/src/shared/ppapi_proxy/trusted/srpcgen/ppb_rpc.h" |
+#include "native_client/src/shared/ppapi_proxy/utility.h" |
+#include "native_client/src/third_party/ppapi/c/pp_errors.h" |
+#include "native_client/src/third_party/ppapi/c/ppb_input_event.h" |
+ |
+ |
+using ppapi_proxy::DebugPrintf; |
+ |
+void PpbInputEventRpcServer::PPB_InputEvent_RequestInputEvents( |
+ NaClSrpcRpc* rpc, |
+ NaClSrpcClosure* done, |
+ PP_Instance instance, |
+ int32_t event_classes, |
+ bool filtering, |
+ int32_t* success) { |
+ NaClSrpcClosureRunner runner(done); |
+ rpc->result = NACL_SRPC_RESULT_APP_ERROR; |
+ *success = PP_ERROR_FAILED; |
+ DebugPrintf("PPB_InputEvent::RequestInputEvents: instance=%"NACL_PRIu32", " |
+ "event_classes=%"NACL_PRIu32", filtering=%s\n", |
+ instance, static_cast<uint32_t>(event_classes), |
+ filtering ? "true" : "false"); |
+ const PPB_InputEvent* interface = ppapi_proxy::PPBInputEventInterface(); |
+ if (!interface) { |
+ *success = PP_ERROR_NOTSUPPORTED; |
+ DebugPrintf("PPB_InputEvent::RequestInputEvents: success=%"NACL_PRId32"\n", |
+ *success); |
+ return; |
+ } |
+ if (filtering) { |
+ *success = interface->RequestFilteringInputEvents( |
+ instance, |
+ static_cast<uint32_t>(event_classes)); |
+ } else { |
+ *success = interface->RequestInputEvents( |
+ instance, |
+ static_cast<uint32_t>(event_classes)); |
+ } |
+ // Note, according to ppb_input_event.h, if a bit is invalid, |
+ // PP_ERROR_NOTSUPPORTED is returned, but the valid bits are still set. |
+ // Hence, we set our local bitfields appropriately in case of returns of PP_OK |
+ // or PP_ERROR_NOTSUPPORTED. |
+ if ((*success == PP_OK) || (*success == PP_ERROR_NOTSUPPORTED)) { |
+ ppapi_proxy::BrowserInputEvent::InputEventsRequested( |
+ instance, |
+ static_cast<uint32_t>(event_classes), |
+ filtering); |
+ } |
+ DebugPrintf("PPB_InputEvent::RequestInputEvents: success=%"NACL_PRId32"\n", |
+ *success); |
+ rpc->result = NACL_SRPC_RESULT_OK; |
+} |
+ |
+void PpbInputEventRpcServer::PPB_InputEvent_ClearInputEventRequest( |
+ NaClSrpcRpc* rpc, |
+ NaClSrpcClosure* done, |
+ PP_Instance instance, |
+ int32_t event_classes) { |
+ NaClSrpcClosureRunner runner(done); |
+ rpc->result = NACL_SRPC_RESULT_APP_ERROR; |
+ DebugPrintf("PPB_InputEvent::ClearInputEventRequest: instance=%"NACL_PRIu32 |
+ ", event_classes=%"NACL_PRIu32"\n", |
+ instance, static_cast<uint32_t>(event_classes)); |
+ const PPB_InputEvent* interface = ppapi_proxy::PPBInputEventInterface(); |
+ if (!interface) { |
+ return; |
+ } |
+ interface->ClearInputEventRequest(instance, |
+ static_cast<uint32_t>(event_classes)); |
+ ppapi_proxy::BrowserInputEvent::InputEventsCleared( |
+ instance, |
+ static_cast<uint32_t>(event_classes)); |
+ rpc->result = NACL_SRPC_RESULT_OK; |
+} |
+ |