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

Side by Side Diff: chrome/test/in_process_browser_test.cc

Issue 4724004: Group commandline settings in UI test and in process browser test. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 1 month 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/in_process_browser_test.h" 5 #include "chrome/test/in_process_browser_test.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/mac/scoped_nsautorelease_pool.h" 10 #include "base/mac/scoped_nsautorelease_pool.h"
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 << "Could not set up user data directory."; 131 << "Could not set up user data directory.";
132 132
133 // Don't delete the resources when BrowserMain returns. Many ui classes 133 // Don't delete the resources when BrowserMain returns. Many ui classes
134 // cache SkBitmaps in a static field so that if we delete the resource 134 // cache SkBitmaps in a static field so that if we delete the resource
135 // bundle we'll crash. 135 // bundle we'll crash.
136 browser_shutdown::delete_resources_on_shutdown = false; 136 browser_shutdown::delete_resources_on_shutdown = false;
137 137
138 // Allow subclasses the opportunity to make changes to the command line before 138 // Allow subclasses the opportunity to make changes to the command line before
139 // running any tests. 139 // running any tests.
140 SetUpCommandLine(command_line); 140 SetUpCommandLine(command_line);
141 // Add command line arguments that are used by all InProcessBrowserTests.
142 PrepareCommonInProcessBrowserTestCommandLine(command_line);
143 // Add browser command line arguments that are used by all tests.
144 test_launcher_utils::PrepareBrowserCommandLineForTests(command_line);
141 145
142 #if defined(OS_WIN) 146 if (command_line->HasSwitch(switches::kSingleProcess))
143 // Hide windows on show. 147 RenderProcessHost::set_run_renderer_in_process(true);
Scott Hess - ex-Googler 2010/11/10 18:27:05 Previous code stored the original value in origina
144 if (!command_line->HasSwitch(kUnitTestShowWindows) && !show_window_)
145 BrowserView::SetShowState(SW_HIDE);
146 #endif
147
148 if (dom_automation_enabled_)
149 command_line->AppendSwitch(switches::kDomAutomationController);
150
151 // This is a Browser test.
152 command_line->AppendSwitchASCII(switches::kTestType, kBrowserTestType);
153 148
154 // Single-process mode is not set in BrowserMain so it needs to be processed 149 // Single-process mode is not set in BrowserMain so it needs to be processed
155 // explicitly. 150 // explicitly.
156 original_single_process_ = RenderProcessHost::run_renderer_in_process(); 151 original_single_process_ = RenderProcessHost::run_renderer_in_process();
157 if (command_line->HasSwitch(switches::kSingleProcess))
158 RenderProcessHost::set_run_renderer_in_process(true);
159 152
160 #if defined(OS_WIN)
161 // The Windows sandbox requires that the browser and child processes are the
162 // same binary. So we launch browser_process.exe which loads chrome.dll
163 command_line->AppendSwitchPath(switches::kBrowserSubprocessPath,
164 command_line->GetProgram());
165 #else
166 // Explicitly set the path of the binary used for child processes, otherwise
167 // they'll try to use browser_tests which doesn't contain ChromeMain.
168 FilePath subprocess_path;
169 PathService::Get(base::FILE_EXE, &subprocess_path);
170 subprocess_path = subprocess_path.DirName();
171 subprocess_path = subprocess_path.AppendASCII(WideToASCII(
172 chrome::kBrowserProcessExecutablePath));
173 #if defined(OS_MACOSX)
174 // Recreate the real environment, run the helper within the app bundle.
175 subprocess_path = subprocess_path.DirName().DirName();
176 DCHECK_EQ(subprocess_path.BaseName().value(), "Contents");
177 subprocess_path =
178 subprocess_path.Append("Versions").Append(chrome::kChromeVersion);
179 subprocess_path =
180 subprocess_path.Append(chrome::kHelperProcessExecutablePath);
181 #endif
182 command_line->AppendSwitchPath(switches::kBrowserSubprocessPath,
183 subprocess_path);
184 #endif
185
186 // If ncecessary, disable TabCloseableStateWatcher.
187 if (!tab_closeable_state_watcher_enabled_)
188 command_line->AppendSwitch(switches::kDisableTabCloseableStateWatcher);
189
190 test_launcher_utils::PrepareBrowserCommandLineForTests(command_line);
191 153
192 #if defined(OS_CHROMEOS) 154 #if defined(OS_CHROMEOS)
193 chromeos::CrosLibrary::Get()->GetTestApi()->SetUseStubImpl(); 155 chromeos::CrosLibrary::Get()->GetTestApi()->SetUseStubImpl();
194 156
195 // Make sure that the log directory exists. 157 // Make sure that the log directory exists.
196 FilePath log_dir = logging::GetSessionLogFile(*command_line).DirName(); 158 FilePath log_dir = logging::GetSessionLogFile(*command_line).DirName();
197 file_util::CreateDirectory(log_dir); 159 file_util::CreateDirectory(log_dir);
198 #endif // defined(OS_CHROMEOS) 160 #endif // defined(OS_CHROMEOS)
199 161
200 SandboxInitWrapper sandbox_wrapper; 162 SandboxInitWrapper sandbox_wrapper;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 #if defined(OS_LINUX) 198 #if defined(OS_LINUX)
237 // Initialize the RenderSandbox and Zygote hosts. Apparently they get used 199 // Initialize the RenderSandbox and Zygote hosts. Apparently they get used
238 // for InProcessBrowserTest, and this is not the normal browser startup path. 200 // for InProcessBrowserTest, and this is not the normal browser startup path.
239 Singleton<LinuxHostInit>::get(); 201 Singleton<LinuxHostInit>::get();
240 #endif 202 #endif
241 203
242 BrowserMain(params); 204 BrowserMain(params);
243 TearDownInProcessBrowserTestFixture(); 205 TearDownInProcessBrowserTestFixture();
244 } 206 }
245 207
208 void InProcessBrowserTest::PrepareCommonInProcessBrowserTestCommandLine(
209 CommandLine* arguments) {
210 #if defined(OS_WIN)
211 // Hide windows on show.
212 if (!command_line->HasSwitch(kUnitTestShowWindows) && !show_window_)
213 BrowserView::SetShowState(SW_HIDE);
214 #endif
215
216 if (dom_automation_enabled_)
217 command_line->AppendSwitch(switches::kDomAutomationController);
218
219 // This is a Browser test.
220 command_line->AppendSwitchASCII(switches::kTestType, kBrowserTestType);
221
222 #if defined(OS_WIN)
223 // The Windows sandbox requires that the browser and child processes are the
224 // same binary. So we launch browser_process.exe which loads chrome.dll
225 command_line->AppendSwitchPath(switches::kBrowserSubprocessPath,
226 command_line->GetProgram());
227 #else
228 // Explicitly set the path of the binary used for child processes, otherwise
229 // they'll try to use browser_tests which doesn't contain ChromeMain.
230 FilePath subprocess_path;
231 PathService::Get(base::FILE_EXE, &subprocess_path);
232 subprocess_path = subprocess_path.DirName();
233 subprocess_path = subprocess_path.AppendASCII(WideToASCII(
234 chrome::kBrowserProcessExecutablePath));
235 #if defined(OS_MACOSX)
236 // Recreate the real environment, run the helper within the app bundle.
237 subprocess_path = subprocess_path.DirName().DirName();
238 DCHECK_EQ(subprocess_path.BaseName().value(), "Contents");
239 subprocess_path =
240 subprocess_path.Append("Versions").Append(chrome::kChromeVersion);
241 subprocess_path =
242 subprocess_path.Append(chrome::kHelperProcessExecutablePath);
243 #endif
244 command_line->AppendSwitchPath(switches::kBrowserSubprocessPath,
245 subprocess_path);
246 #endif
247
248 // If ncecessary, disable TabCloseableStateWatcher.
249 if (!tab_closeable_state_watcher_enabled_)
250 command_line->AppendSwitch(switches::kDisableTabCloseableStateWatcher);
251 }
252
253
246 bool InProcessBrowserTest::CreateUserDataDirectory() { 254 bool InProcessBrowserTest::CreateUserDataDirectory() {
247 CommandLine* command_line = CommandLine::ForCurrentProcessMutable(); 255 CommandLine* command_line = CommandLine::ForCurrentProcessMutable();
248 FilePath user_data_dir = 256 FilePath user_data_dir =
249 command_line->GetSwitchValuePath(switches::kUserDataDir); 257 command_line->GetSwitchValuePath(switches::kUserDataDir);
250 if (user_data_dir.empty()) { 258 if (user_data_dir.empty()) {
251 if (temp_user_data_dir_.CreateUniqueTempDir() && 259 if (temp_user_data_dir_.CreateUniqueTempDir() &&
252 temp_user_data_dir_.IsValid()) { 260 temp_user_data_dir_.IsValid()) {
253 user_data_dir = temp_user_data_dir_.path(); 261 user_data_dir = temp_user_data_dir_.path();
254 } else { 262 } else {
255 LOG(ERROR) << "Could not create temporary user data directory \"" 263 LOG(ERROR) << "Could not create temporary user data directory \""
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 return; 373 return;
366 374
367 // Invoke CloseAllBrowsersAndExit on a running message loop. 375 // Invoke CloseAllBrowsersAndExit on a running message loop.
368 // CloseAllBrowsersAndExit exits the message loop after everything has been 376 // CloseAllBrowsersAndExit exits the message loop after everything has been
369 // shut down properly. 377 // shut down properly.
370 MessageLoopForUI::current()->PostTask( 378 MessageLoopForUI::current()->PostTask(
371 FROM_HERE, 379 FROM_HERE,
372 NewRunnableFunction(&BrowserList::CloseAllBrowsersAndExit)); 380 NewRunnableFunction(&BrowserList::CloseAllBrowsersAndExit));
373 ui_test_utils::RunMessageLoop(); 381 ui_test_utils::RunMessageLoop();
374 } 382 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698