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

Unified Diff: components/nacl/browser/nacl_host_message_filter.cc

Issue 1117883002: Reduce resource leak code for StartNaClExecution. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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: components/nacl/browser/nacl_host_message_filter.cc
diff --git a/components/nacl/browser/nacl_host_message_filter.cc b/components/nacl/browser/nacl_host_message_filter.cc
index 4ae4623414b13ad6b088e1ee0f8761139d7a6930..982cd3ff1ca7556c7f90a9399e7bd622403b3cfc 100644
--- a/components/nacl/browser/nacl_host_message_filter.cc
+++ b/components/nacl/browser/nacl_host_message_filter.cc
@@ -25,17 +25,6 @@ namespace nacl {
namespace {
-// The maximum number of resource file handles NaClProcessMsg_Start message
-// can have. Currently IPC::MessageAttachmentSet::kMaxDescriptorsPerMessage
-// is 128 and NaCl sends 5 handles for other purposes, hence 123.
-const size_t kMaxPreOpenResourceFiles = 123;
-
-#if defined(OS_POSIX)
-static_assert(kMaxPreOpenResourceFiles ==
- IPC::MessageAttachmentSet::kMaxDescriptorsPerMessage - 5,
- "kMaxPreOpenResourceFiles is not up to date");
-#endif
-
ppapi::PpapiPermissions GetNaClPermissions(
uint32 permission_bits,
content::BrowserContext* browser_context,
@@ -137,20 +126,19 @@ void NaClHostMessageFilter::OnLaunchNaCl(
LaunchNaClContinuationOnIOThread(
launch_params,
reply_msg,
- std::vector<NaClResourcePrefetchResult>(),
ppapi::PpapiPermissions(perms));
return;
}
content::BrowserThread::PostTask(
content::BrowserThread::UI,
FROM_HERE,
- base::Bind(&NaClHostMessageFilter::LaunchNaClContinuation,
+ base::Bind(&NaClHostMessageFilter::LaunchNaClContinuationOnUIThread,
this,
launch_params,
reply_msg));
}
-void NaClHostMessageFilter::LaunchNaClContinuation(
+void NaClHostMessageFilter::LaunchNaClContinuationOnUIThread(
const nacl::NaClLaunchParams& launch_params,
IPC::Message* reply_msg) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
@@ -187,63 +175,19 @@ void NaClHostMessageFilter::LaunchNaClContinuation(
original_request_list[i]);
}
- // Process a list of resource file URLs in
- // |launch_params.resource_files_to_prefetch|.
- content::BrowserThread::PostBlockingPoolTask(
- FROM_HERE,
- base::Bind(&NaClHostMessageFilter::BatchOpenResourceFiles,
- this,
- safe_launch_params,
- reply_msg,
- permissions));
-}
-
-void NaClHostMessageFilter::BatchOpenResourceFiles(
- const nacl::NaClLaunchParams& launch_params,
- IPC::Message* reply_msg,
- ppapi::PpapiPermissions permissions) {
- std::vector<NaClResourcePrefetchResult> prefetched_resource_files;
- const std::vector<NaClResourcePrefetchRequest>& request_list =
- launch_params.resource_prefetch_request_list;
- for (size_t i = 0; request_list.size(); ++i) {
- GURL gurl(request_list[i].resource_url);
- base::FilePath file_path_metadata;
- if (!nacl::NaClBrowser::GetDelegate()->MapUrlToLocalFilePath(
- gurl,
- true, // use_blocking_api
- profile_directory_,
- &file_path_metadata)) {
- continue;
- }
- base::File file = nacl::OpenNaClReadExecImpl(
- file_path_metadata, true /* is_executable */);
- if (!file.IsValid())
- continue;
-
- prefetched_resource_files.push_back(NaClResourcePrefetchResult(
- IPC::TakeFileHandleForProcess(file.Pass(), PeerHandle()),
- file_path_metadata,
- request_list[i].file_key));
-
- if (prefetched_resource_files.size() >= kMaxPreOpenResourceFiles)
- break;
- }
-
content::BrowserThread::PostTask(
content::BrowserThread::IO,
FROM_HERE,
base::Bind(&NaClHostMessageFilter::LaunchNaClContinuationOnIOThread,
this,
- launch_params,
+ safe_launch_params,
reply_msg,
- prefetched_resource_files,
permissions));
}
void NaClHostMessageFilter::LaunchNaClContinuationOnIOThread(
const nacl::NaClLaunchParams& launch_params,
IPC::Message* reply_msg,
- const std::vector<NaClResourcePrefetchResult>& prefetched_resource_files,
ppapi::PpapiPermissions permissions) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
@@ -281,7 +225,7 @@ void NaClHostMessageFilter::LaunchNaClContinuationOnIOThread(
GURL(launch_params.manifest_url),
base::File(nexe_file),
nexe_token,
- prefetched_resource_files,
+ launch_params.resource_prefetch_request_list,
permissions,
launch_params.render_view_id,
launch_params.permission_bits,

Powered by Google App Engine
This is Rietveld 408576698