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

Side by Side Diff: chrome/test/base/chrome_process_util.cc

Issue 7714018: Give plug-in processes an executable heap and disable PIE/ASLR for Native (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/test/base/chrome_process_util.h" 5 #include "chrome/test/base/chrome_process_util.h"
6 6
7 #include <set>
7 #include <vector> 8 #include <vector>
8 #include <set>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/process_util.h" 11 #include "base/process_util.h"
12 #include "base/time.h" 12 #include "base/time.h"
13 #include "chrome/common/chrome_constants.h" 13 #include "chrome/common/chrome_constants.h"
14 #include "chrome/test/base/test_switches.h" 14 #include "chrome/test/base/test_switches.h"
15 #include "content/common/result_codes.h" 15 #include "content/common/result_codes.h"
16 16
17 using base::TimeDelta; 17 using base::TimeDelta;
18 using base::TimeTicks; 18 using base::TimeTicks;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 DISALLOW_COPY_AND_ASSIGN(ChildProcessFilter); 52 DISALLOW_COPY_AND_ASSIGN(ChildProcessFilter);
53 }; 53 };
54 54
55 const FilePath::CharType* GetRunningBrowserExecutableName() { 55 const FilePath::CharType* GetRunningBrowserExecutableName() {
56 const CommandLine* cmd_line = CommandLine::ForCurrentProcess(); 56 const CommandLine* cmd_line = CommandLine::ForCurrentProcess();
57 if (cmd_line->HasSwitch(switches::kEnableChromiumBranding)) 57 if (cmd_line->HasSwitch(switches::kEnableChromiumBranding))
58 return chrome::kBrowserProcessExecutableNameChromium; 58 return chrome::kBrowserProcessExecutableNameChromium;
59 return chrome::kBrowserProcessExecutableName; 59 return chrome::kBrowserProcessExecutableName;
60 } 60 }
61 61
62 const FilePath::CharType* GetRunningHelperExecutableName() { 62 std::vector<FilePath::StringType> GetRunningHelperExecutableNames() {
63 FilePath::StringType name;
63 const CommandLine* cmd_line = CommandLine::ForCurrentProcess(); 64 const CommandLine* cmd_line = CommandLine::ForCurrentProcess();
64 if (cmd_line->HasSwitch(switches::kEnableChromiumBranding)) 65 if (cmd_line->HasSwitch(switches::kEnableChromiumBranding)) {
65 return chrome::kHelperProcessExecutableNameChromium; 66 name = chrome::kHelperProcessExecutableNameChromium;
66 return chrome::kHelperProcessExecutableName; 67 } else {
68 name = chrome::kHelperProcessExecutableName;
69 }
70
71 std::vector<FilePath::StringType> names;
72 names.push_back(name);
73
74 #if defined(OS_MACOSX)
75 // The helper might show up as these different flavors depending on the
76 // executable flags required.
77 std::string name_eh(name);
78 name_eh.append(" EH");
79 names.push_back(name_eh);
80
81 std::string name_np(name);
82 name_np.append(" NP");
83 names.push_back(name_np);
84 #endif
85
86 return names;
67 } 87 }
68 88
69 ChromeProcessList GetRunningChromeProcesses(base::ProcessId browser_pid) { 89 ChromeProcessList GetRunningChromeProcesses(base::ProcessId browser_pid) {
70 const FilePath::CharType* executable_name = GetRunningBrowserExecutableName(); 90 const FilePath::CharType* executable_name = GetRunningBrowserExecutableName();
71 ChromeProcessList result; 91 ChromeProcessList result;
72 if (browser_pid == static_cast<base::ProcessId>(-1)) 92 if (browser_pid == static_cast<base::ProcessId>(-1))
73 return result; 93 return result;
74 94
75 ChildProcessFilter filter(browser_pid); 95 ChildProcessFilter filter(browser_pid);
76 base::NamedProcessIterator it(executable_name, &filter); 96 base::NamedProcessIterator it(executable_name, &filter);
(...skipping 11 matching lines...) Expand all
88 while (const base::ProcessEntry* process_entry = it.NextProcessEntry()) 108 while (const base::ProcessEntry* process_entry = it.NextProcessEntry())
89 result.push_back(process_entry->pid()); 109 result.push_back(process_entry->pid());
90 } 110 }
91 #endif // defined(OS_POSIX) && !defined(OS_MACOSX) 111 #endif // defined(OS_POSIX) && !defined(OS_MACOSX)
92 112
93 #if defined(OS_POSIX) 113 #if defined(OS_POSIX)
94 // On Mac OS X we run the subprocesses with a different bundle, and 114 // On Mac OS X we run the subprocesses with a different bundle, and
95 // on Linux via /proc/self/exe, so they end up with a different 115 // on Linux via /proc/self/exe, so they end up with a different
96 // name. We must collect them in a second pass. 116 // name. We must collect them in a second pass.
97 { 117 {
98 ChildProcessFilter filter(browser_pid); 118 std::vector<FilePath::StringType> names = GetRunningHelperExecutableNames();
99 base::NamedProcessIterator it(GetRunningHelperExecutableName(), &filter); 119 for (size_t i = 0; i < names.size(); ++i) {
100 while (const base::ProcessEntry* process_entry = it.NextProcessEntry()) 120 FilePath::StringType name = names[i];
101 result.push_back(process_entry->pid()); 121 ChildProcessFilter filter(browser_pid);
122 base::NamedProcessIterator it(name, &filter);
123 while (const base::ProcessEntry* process_entry = it.NextProcessEntry())
124 result.push_back(process_entry->pid());
125 }
102 } 126 }
103 #endif // defined(OS_MACOSX) 127 #endif // defined(OS_POSIX)
104 128
105 result.push_back(browser_pid); 129 result.push_back(browser_pid);
106 130
107 return result; 131 return result;
108 } 132 }
109 133
110 #if !defined(OS_MACOSX) 134 #if !defined(OS_MACOSX)
111 135
112 size_t ChromeTestProcessMetrics::GetPagefileUsage() { 136 size_t ChromeTestProcessMetrics::GetPagefileUsage() {
113 return process_metrics_->GetPagefileUsage(); 137 return process_metrics_->GetPagefileUsage();
(...skipping 11 matching lines...) Expand all
125 base::ProcessHandle process) { 149 base::ProcessHandle process) {
126 #if !defined(OS_MACOSX) 150 #if !defined(OS_MACOSX)
127 process_metrics_.reset( 151 process_metrics_.reset(
128 base::ProcessMetrics::CreateProcessMetrics(process)); 152 base::ProcessMetrics::CreateProcessMetrics(process));
129 #else 153 #else
130 process_metrics_.reset( 154 process_metrics_.reset(
131 base::ProcessMetrics::CreateProcessMetrics(process, NULL)); 155 base::ProcessMetrics::CreateProcessMetrics(process, NULL));
132 #endif 156 #endif
133 process_handle_ = process; 157 process_handle_ = process;
134 } 158 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698