Index: components/nacl/browser/nacl_process_host.cc |
diff --git a/components/nacl/browser/nacl_process_host.cc b/components/nacl/browser/nacl_process_host.cc |
index cbb716c9197524929435a25d6e14e3fcdc3013b2..38a6ebd9d60d90793904d6156ef2a64bb0468948 100644 |
--- a/components/nacl/browser/nacl_process_host.cc |
+++ b/components/nacl/browser/nacl_process_host.cc |
@@ -38,6 +38,7 @@ |
#include "content/public/browser/browser_ppapi_host.h" |
#include "content/public/browser/child_process_data.h" |
#include "content/public/browser/plugin_service.h" |
+#include "content/public/browser/render_process_host.h" |
#include "content/public/common/child_process_host.h" |
#include "content/public/common/content_switches.h" |
#include "content/public/common/process_type.h" |
@@ -228,12 +229,16 @@ bool ShareHandleToSelLdr( |
return true; |
} |
-ppapi::PpapiPermissions GetNaClPermissions(uint32 permission_bits) { |
+ppapi::PpapiPermissions GetNaClPermissions( |
+ uint32 permission_bits, |
+ content::BrowserContext* browser_context, |
+ const GURL& document_url) { |
// Only allow NaCl plugins to request certain permissions. We don't want |
// a compromised renderer to be able to start a nacl plugin with e.g. Flash |
// permissions which may expand the surface area of the sandbox. |
uint32 masked_bits = permission_bits & ppapi::PERMISSION_DEV; |
- if (content::PluginService::GetInstance()->PpapiDevChannelSupported()) |
+ if (content::PluginService::GetInstance()->PpapiDevChannelSupported( |
+ browser_context, document_url)) |
masked_bits |= ppapi::PERMISSION_DEV_CHANNEL; |
return ppapi::PpapiPermissions::GetForCommandLine(masked_bits); |
} |
@@ -256,7 +261,9 @@ struct NaClProcessHost::NaClInternal { |
unsigned NaClProcessHost::keepalive_throttle_interval_milliseconds_ = |
ppapi::kKeepaliveThrottleIntervalDefaultMilliseconds; |
-NaClProcessHost::NaClProcessHost(const GURL& manifest_url, |
+NaClProcessHost::NaClProcessHost(const GURL& document_url, |
+ const GURL& manifest_url, |
+ int render_process_id, |
int render_view_id, |
uint32 permission_bits, |
bool uses_irt, |
@@ -267,7 +274,6 @@ NaClProcessHost::NaClProcessHost(const GURL& manifest_url, |
bool off_the_record, |
const base::FilePath& profile_directory) |
: manifest_url_(manifest_url), |
- permissions_(GetNaClPermissions(permission_bits)), |
#if defined(OS_WIN) |
process_launched_by_broker_(false), |
#endif |
@@ -286,6 +292,12 @@ NaClProcessHost::NaClProcessHost(const GURL& manifest_url, |
off_the_record_(off_the_record), |
profile_directory_(profile_directory), |
render_view_id_(render_view_id) { |
+ |
+ content::RenderProcessHost* host = |
+ content::RenderProcessHost::FromID(render_process_id); |
+ permissions_ = GetNaClPermissions(permission_bits, |
+ host->GetBrowserContext(), |
+ document_url); |
process_.reset(content::BrowserChildProcessHost::Create( |
PROCESS_TYPE_NACL_LOADER, this)); |