diff options
author | abarth@chromium.org <abarth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-17 19:57:49 +0000 |
---|---|---|
committer | abarth@chromium.org <abarth@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-12-17 19:57:49 +0000 |
commit | 498e05a48dfade51ef44a1b5ed648bd2dfc3c6f0 (patch) | |
tree | b4f0772170e3fec3b4ae536c78d7315a18c06b58 /ppapi | |
parent | 4c2f8195b9a5dc59d86434ab498ad609aa4034e4 (diff) | |
download | chromium_src-498e05a48dfade51ef44a1b5ed648bd2dfc3c6f0.zip chromium_src-498e05a48dfade51ef44a1b5ed648bd2dfc3c6f0.tar.gz chromium_src-498e05a48dfade51ef44a1b5ed648bd2dfc3c6f0.tar.bz2 |
Add stub PPAPI for launching NaCl's sel_ldr process.
In ArcticSea, we're going to load the NaCl plugin in the render process. The
NaCl plugin needs to create a sel_ldr process to host the NEXE, but when the
plugin lives inside the render process, the plugin is sandboxed, so it can't
create a process. This API instructs the browser to launch a sel_ldr process
and wire up a bunch of IMC channels between the plugin and the new process.
In reality, the sel_ldr process is just chrome.exe run with a command line flag
that causes it to call NaClMain instead of BrowserMain or RendererMain.
Previously, NaCl accomplished this task by smuggling a function pointer (cast as
an int) from render_process_impl to the NPAPI NaCl plugin. Rather than use the
same approach again, we're creating a legit way for the PPAPI plugin to ask the
browser to spawn the sel_ldr process.
In BalticSea, we'll likely run the NaCl plugin out-of-process (e.g., in a PPAPI
process). In that case, the plugin can just host the NEXE internally, and we'll
be able to remove this interface.
Review URL: http://codereview.chromium.org/5897004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69568 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r-- | ppapi/c/private/ppb_nacl_util_private.h | 17 | ||||
-rw-r--r-- | ppapi/ppapi.gyp | 3 |
2 files changed, 20 insertions, 0 deletions
diff --git a/ppapi/c/private/ppb_nacl_util_private.h b/ppapi/c/private/ppb_nacl_util_private.h new file mode 100644 index 0000000..3a8354e --- /dev/null +++ b/ppapi/c/private/ppb_nacl_util_private.h @@ -0,0 +1,17 @@ +// Copyright (c) 2010 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. + +#ifndef PPAPI_C_PRIVATE_PPB_NACL_UTIL_PRIVATE_H_ +#define PPAPI_C_PRIVATE_PPB_NACL_UTIL_PRIVATE_H_ + +#include "ppapi/c/pp_resource.h" +#include "ppapi/c/pp_stdint.h" + +#define PPB_NACLUTIL_PRIVATE_INTERFACE "PPB_NaClUtil(Private);0.1" + +struct PPB_NaClUtil_Private { + int32_t (*LaunchSelLdr)(PP_Resource file_io); +}; + +#endif // PPAPI_C_PRIVATE_PPB_NACL_UTIL_PRIVATE_H_ diff --git a/ppapi/ppapi.gyp b/ppapi/ppapi.gyp index c41b4d9..7981a5b 100644 --- a/ppapi/ppapi.gyp +++ b/ppapi/ppapi.gyp @@ -100,6 +100,9 @@ 'c/dev/ppp_widget_dev.h', 'c/dev/ppp_zoom_dev.h', + # Private interfaces. + 'c/private/ppb_nacl_util_private.h', + # Deprecated interfaces. 'c/dev/deprecated_bool.h', 'c/dev/ppb_var_deprecated.h', |