Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3422)

Unified Diff: ppapi/native_client/src/shared/ppapi_proxy/plugin_globals.cc

Issue 7740013: Cloning a bunch of stuff from the native_client repository at r6528 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ppapi/native_client/src/shared/ppapi_proxy/plugin_globals.cc
===================================================================
--- ppapi/native_client/src/shared/ppapi_proxy/plugin_globals.cc (revision 0)
+++ ppapi/native_client/src/shared/ppapi_proxy/plugin_globals.cc (revision 0)
@@ -0,0 +1,184 @@
+// 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.
+
+#include <sys/nacl_imc_api.h>
+#include <sys/nacl_syscalls.h>
+
+#include "native_client/src/shared/platform/nacl_check.h"
+#include "native_client/src/shared/ppapi_proxy/plugin_globals.h"
+#include "native_client/src/shared/ppapi_proxy/plugin_ppb_core.h"
+#include "native_client/src/shared/ppapi_proxy/plugin_ppb_var.h"
+#include "native_client/src/shared/ppapi_proxy/ppruntime.h"
+#include "native_client/src/shared/ppapi_proxy/untrusted/srpcgen/ppp_rpc.h"
+#include "native_client/src/shared/ppapi_proxy/utility.h"
+#include "native_client/src/shared/srpc/nacl_srpc.h"
+
+
+#define NACL_SEND_FD 6
+
+namespace {
+
+NaClSrpcChannel* main_srpc_channel;
+NaClSrpcChannel* upcall_srpc_channel;
+PP_Module module_id_for_plugin;
+struct PP_ThreadFunctions thread_funcs;
+
+} // namespace
+
+namespace ppapi_proxy {
+
+const PP_Resource kInvalidResourceId = 0;
+
+NaClSrpcChannel* GetMainSrpcChannel() {
+ return main_srpc_channel;
+}
+
+void SetMainSrpcChannel(NaClSrpcChannel* channel) {
+ main_srpc_channel = channel;
+}
+
+NaClSrpcChannel* GetUpcallSrpcChannel() {
+ return upcall_srpc_channel;
+}
+
+void SetUpcallSrpcChannel(NaClSrpcChannel* channel) {
+ upcall_srpc_channel = channel;
+}
+
+void SetModuleIdForSrpcChannel(NaClSrpcChannel* channel, PP_Module module_id) {
+ module_id_for_plugin = module_id;
+}
+
+void UnsetModuleIdForSrpcChannel(NaClSrpcChannel* channel) {
+ const PP_Module kInvalidModuleId = 0;
+ module_id_for_plugin = kInvalidModuleId;
+}
+
+PP_Module LookupModuleIdForSrpcChannel(NaClSrpcChannel* channel) {
+ return module_id_for_plugin;
+}
+
+const struct PP_ThreadFunctions* GetThreadCreator() {
+ return &thread_funcs;
+}
+
+// Browser interface helpers
+
+const void* GetBrowserInterfaceSafe(const char* interface_name) {
+ const void* ppb_interface = GetBrowserInterface(interface_name);
+ if (ppb_interface == NULL)
+ DebugPrintf("PPB_GetInterface: %s not found\n", interface_name);
+ CHECK(ppb_interface != NULL);
+ return ppb_interface;
+}
+
+const PPB_Core* PPBCoreInterface() {
+ return static_cast<const PPB_Core*>(
+ GetBrowserInterfaceSafe(PPB_CORE_INTERFACE));
+}
+
+const PPB_Memory_Dev* PPBMemoryInterface() {
+ return static_cast<const PPB_Memory_Dev*>(
+ GetBrowserInterfaceSafe(PPB_MEMORY_DEV_INTERFACE));
+}
+
+const PPB_Var* PPBVarInterface() {
+ return static_cast<const PPB_Var*>(
+ GetBrowserInterfaceSafe(PPB_VAR_INTERFACE));
+}
+
+// Plugin interface helpers
+
+const void* GetPluginInterface(const char* interface_name) {
+ return ::PPP_GetInterface(interface_name);
+}
+
+const void* GetPluginInterfaceSafe(const char* interface_name) {
+ const void* ppp_interface = GetPluginInterface(interface_name);
+ if (ppp_interface == NULL)
+ DebugPrintf("PPP_GetInterface: %s not found\n", interface_name);
+ CHECK(ppp_interface != NULL);
+ return ppp_interface;
+}
+
+const PPP_Find_Dev* PPPFindInterface() {
+ static const void* ppp = GetPluginInterfaceSafe(PPP_FIND_DEV_INTERFACE);
+ return static_cast<const PPP_Find_Dev*>(ppp);
+}
+
+const PPP_InputEvent* PPPInputEventInterface() {
+ static const void* ppp = GetPluginInterfaceSafe(PPP_INPUT_EVENT_INTERFACE);
+ return static_cast<const PPP_InputEvent*>(ppp);
+}
+
+const PPP_Instance* PPPInstanceInterface() {
+ static const void* ppp = GetPluginInterfaceSafe(PPP_INSTANCE_INTERFACE);
+ return static_cast<const PPP_Instance*>(ppp);
+}
+
+const PPP_Messaging* PPPMessagingInterface() {
+ static const void* ppp = GetPluginInterfaceSafe(PPP_MESSAGING_INTERFACE);
+ return static_cast<const PPP_Messaging*>(ppp);
+}
+
+const PPP_Printing_Dev* PPPPrintingInterface() {
+ static const void* ppp = GetPluginInterfaceSafe(PPP_PRINTING_DEV_INTERFACE);
+ return static_cast<const PPP_Printing_Dev*>(ppp);
+}
+
+const PPP_Scrollbar_Dev* PPPScrollbarInterface() {
+ static const void* ppp = GetPluginInterfaceSafe(PPP_SCROLLBAR_DEV_INTERFACE);
+ return static_cast<const PPP_Scrollbar_Dev*>(ppp);
+}
+
+const PPP_Selection_Dev* PPPSelectionInterface() {
+ static const void* ppp = GetPluginInterfaceSafe(PPP_SELECTION_DEV_INTERFACE);
+ return static_cast<const PPP_Selection_Dev*>(ppp);
+}
+
+const PPP_Widget_Dev* PPPWidgetInterface() {
+ static const void* ppp = GetPluginInterfaceSafe(PPP_WIDGET_DEV_INTERFACE);
+ return static_cast<const PPP_Widget_Dev*>(ppp);
+}
+
+const PPP_Zoom_Dev* PPPZoomInterface() {
+ static const void* ppp = GetPluginInterfaceSafe(PPP_ZOOM_DEV_INTERFACE);
+ return static_cast<const PPP_Zoom_Dev*>(ppp);
+}
+
+
+} // namespace ppapi_proxy
+
+void PpapiPluginRegisterThreadCreator(
+ const struct PP_ThreadFunctions* new_funcs) {
+ thread_funcs = *new_funcs;
+}
+
+int IrtInit() {
+ // TODO(halyavin): this is needed for tests without IRT. They do not start
+ // in irt_entry.c where IrtInit is called.
+ static int initialized = 0;
+ if (initialized) {
+ return 0;
+ }
+ if (!NaClSrpcModuleInit()) {
+ return 1;
+ }
+ NaClLogModuleInit(); // Enable NaClLog'ing used by CHECK().
+ initialized = 1;
+ return 0;
+}
+
+int PpapiPluginMain() {
+ IrtInit();
+ PpapiPluginRegisterDefaultThreadCreator();
+ // Designate this as the main thread for PPB_Core::IsMainThread().
+ ppapi_proxy::PluginCore::MarkMainThread();
+ if (!NaClSrpcAcceptClientConnection(PppRpcs::srpc_methods)) {
+ return 1;
+ }
+ NaClSrpcModuleFini();
+
+ return 0;
+}

Powered by Google App Engine
This is Rietveld 408576698