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

Unified Diff: chrome/renderer/pepper/ppb_nacl_private_impl.cc

Issue 19863003: PNaCl on-demand installs: Make a separate async IPC to check if PNaCl is installed (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: take out progress IPC for now Created 7 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: chrome/renderer/pepper/ppb_nacl_private_impl.cc
diff --git a/chrome/renderer/pepper/ppb_nacl_private_impl.cc b/chrome/renderer/pepper/ppb_nacl_private_impl.cc
index f334bd0b002be508d72ffb551dcaaf810fea3bcf..91ce85c8b76b2879f1456f1f72ad28da6eed57e4 100644
--- a/chrome/renderer/pepper/ppb_nacl_private_impl.cc
+++ b/chrome/renderer/pepper/ppb_nacl_private_impl.cc
@@ -41,10 +41,11 @@ base::LazyInstance<scoped_refptr<PnaclTranslationResourceHost> >
g_pnacl_resource_host = LAZY_INSTANCE_INITIALIZER;
static bool InitializePnaclResourceHost() {
+ // Must run on the main thread.
+ content::RenderThread* render_thread = content::RenderThread::Get();
+ if (!render_thread)
+ return false;
if (!g_pnacl_resource_host.Get()) {
- content::RenderThread* render_thread = content::RenderThread::Get();
- if (!render_thread)
- return false;
g_pnacl_resource_host.Get() = new PnaclTranslationResourceHost(
render_thread->GetIOMessageLoopProxy());
render_thread->AddFilter(g_pnacl_resource_host.Get());
@@ -201,6 +202,19 @@ int32_t BrokerDuplicateHandle(PP_FileHandle source_handle,
#endif
}
+int32_t EnsurePnaclInstalled(PP_Instance instance,
+ PP_CompletionCallback callback) {
+ ppapi::thunk::EnterInstance enter(instance, callback);
+ if (enter.failed())
+ return enter.retval();
+ if (!InitializePnaclResourceHost())
+ return enter.SetResult(PP_ERROR_FAILED);
+ g_pnacl_resource_host.Get()->EnsurePnaclInstalled(
+ instance,
+ enter.callback());
+ return enter.SetResult(PP_OK_COMPLETIONPENDING);
+}
+
PP_FileHandle GetReadonlyPnaclFD(const char* filename) {
IPC::PlatformFileForTransit out_fd = IPC::InvalidPlatformFileForTransit();
IPC::Sender* sender = content::RenderThread::Get();
@@ -210,11 +224,9 @@ PP_FileHandle GetReadonlyPnaclFD(const char* filename) {
&out_fd))) {
return base::kInvalidPlatformFileValue;
}
-
if (out_fd == IPC::InvalidPlatformFileForTransit()) {
return base::kInvalidPlatformFileValue;
}
-
base::PlatformFile handle =
IPC::PlatformFileForTransitToPlatformFile(out_fd);
return handle;
@@ -255,8 +267,6 @@ int32_t GetNexeFd(PP_Instance instance,
if (!InitializePnaclResourceHost())
return enter.SetResult(PP_ERROR_FAILED);
- IPC::Sender* sender = content::RenderThread::Get();
- DCHECK(sender);
base::Time last_modified_time;
// If FromString fails, it doesn't touch last_modified_time and we just send
// the default-constructed null value.
@@ -346,6 +356,7 @@ const PPB_NaCl_Private nacl_interface = {
&UrandomFD,
&Are3DInterfacesDisabled,
&BrokerDuplicateHandle,
+ &EnsurePnaclInstalled,
&GetReadonlyPnaclFD,
&CreateTemporaryFile,
&GetNexeFd,
« no previous file with comments | « chrome/renderer/pepper/pnacl_translation_resource_host.cc ('k') | components/nacl/common/nacl_browser_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698