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

Unified Diff: content/browser/child_process_launcher.cc

Issue 585203002: Turn FileDescriptorInfo a collection class (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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: content/browser/child_process_launcher.cc
diff --git a/content/browser/child_process_launcher.cc b/content/browser/child_process_launcher.cc
index 5f44a0de39e6cdb64e90589802f847578cbea879..4ccd2b4329d1bfa60a4e74e5010e0fd4548b8930 100644
--- a/content/browser/child_process_launcher.cc
+++ b/content/browser/child_process_launcher.cc
@@ -201,17 +201,17 @@ class ChildProcessLauncher::Context
#elif defined(OS_POSIX)
std::string process_type =
cmd_line->GetSwitchValueASCII(switches::kProcessType);
- std::vector<FileDescriptorInfo> files_to_register;
- files_to_register.push_back(
- FileDescriptorInfo(kPrimaryIPCChannel,
- base::FileDescriptor(ipcfd, false)));
+ scoped_ptr<FileDescriptorInfo> files_to_register =
+ make_scoped_ptr(new FileDescriptorInfo());
+ files_to_register->Share(kPrimaryIPCChannel, ipcfd);
base::StatsTable* stats_table = base::StatsTable::current();
if (stats_table &&
base::SharedMemory::IsHandleValid(
stats_table->GetSharedMemoryHandle())) {
- files_to_register.push_back(
- FileDescriptorInfo(kStatsTableSharedMemFd,
- stats_table->GetSharedMemoryHandle()));
+ base::FileDescriptor fd = stats_table->GetSharedMemoryHandle();
+ DCHECK(fd.auto_close);
+ files_to_register->Transfer(kStatsTableSharedMemFd,
+ base::ScopedFD(fd.fd));
}
#endif
@@ -220,13 +220,17 @@ class ChildProcessLauncher::Context
// when running in single process mode.
CHECK(!cmd_line->HasSwitch(switches::kSingleProcess));
- GetContentClient()->browser()->
- GetAdditionalMappedFilesForChildProcess(*cmd_line, child_process_id,
- &files_to_register);
+ GetContentClient()->browser()->GetAdditionalMappedFilesForChildProcess(
+ *cmd_line, child_process_id, files_to_register.get());
- StartChildProcess(cmd_line->argv(), child_process_id, files_to_register,
+ StartChildProcess(
+ cmd_line->argv(),
+ child_process_id,
+ files_to_register.Pass(),
base::Bind(&ChildProcessLauncher::Context::OnChildProcessStarted,
- this_object, client_thread_id, begin_launch_time));
+ this_object,
+ client_thread_id,
+ begin_launch_time));
#elif defined(OS_POSIX)
base::ProcessHandle handle = base::kNullProcessHandle;
@@ -235,24 +239,20 @@ class ChildProcessLauncher::Context
base::ScopedFD ipcfd_closer(ipcfd);
#if !defined(OS_MACOSX)
- GetContentClient()->browser()->
- GetAdditionalMappedFilesForChildProcess(*cmd_line, child_process_id,
- &files_to_register);
+ GetContentClient()->browser()->GetAdditionalMappedFilesForChildProcess(
+ *cmd_line, child_process_id, files_to_register.get());
if (use_zygote) {
- handle = ZygoteHostImpl::GetInstance()->ForkRequest(cmd_line->argv(),
- files_to_register,
- process_type);
+ handle = ZygoteHostImpl::GetInstance()->ForkRequest(
+ cmd_line->argv(), files_to_register.Pass(), process_type);
} else
// Fall through to the normal posix case below when we're not zygoting.
#endif // !defined(OS_MACOSX)
{
// Convert FD mapping to FileHandleMappingVector
- base::FileHandleMappingVector fds_to_map;
- for (size_t i = 0; i < files_to_register.size(); ++i) {
- fds_to_map.push_back(std::make_pair(
- files_to_register[i].fd.fd,
- files_to_register[i].id +
- base::GlobalDescriptors::kBaseDescriptor));
+ base::FileHandleMappingVector fds_to_map =
+ files_to_register->descriptors();
+ for (size_t i = 0; i < fds_to_map.size(); ++i) {
+ fds_to_map[i].second += base::GlobalDescriptors::kBaseDescriptor;
mdempsky 2014/09/22 18:30:51 I know FileHandleMappingVector predates your CL, b
Hajime Morrita 2014/09/22 22:59:26 Agreed. I cannot kill FileHandleMappingVector so l
}
#if !defined(OS_MACOSX)

Powered by Google App Engine
This is Rietveld 408576698