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

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
« no previous file with comments | « chrome/test/in_process_browser_test.h ('k') | chrome/test/ui/ui_test.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // Save the single process mode state before it was reset in this test. This
143 // Hide windows on show. 147 // state will be recovered in TearDown(). single-process mode is not set in
144 if (!command_line->HasSwitch(kUnitTestShowWindows) && !show_window_) 148 // BrowserMain so it needs to be processed explicitly.
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
154 // Single-process mode is not set in BrowserMain so it needs to be processed
155 // explicitly.
156 original_single_process_ = RenderProcessHost::run_renderer_in_process(); 149 original_single_process_ = RenderProcessHost::run_renderer_in_process();
157 if (command_line->HasSwitch(switches::kSingleProcess)) 150 if (command_line->HasSwitch(switches::kSingleProcess))
158 RenderProcessHost::set_run_renderer_in_process(true); 151 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
192 #if defined(OS_CHROMEOS) 153 #if defined(OS_CHROMEOS)
193 chromeos::CrosLibrary::Get()->GetTestApi()->SetUseStubImpl(); 154 chromeos::CrosLibrary::Get()->GetTestApi()->SetUseStubImpl();
194 155
195 // Make sure that the log directory exists. 156 // Make sure that the log directory exists.
196 FilePath log_dir = logging::GetSessionLogFile(*command_line).DirName(); 157 FilePath log_dir = logging::GetSessionLogFile(*command_line).DirName();
197 file_util::CreateDirectory(log_dir); 158 file_util::CreateDirectory(log_dir);
198 #endif // defined(OS_CHROMEOS) 159 #endif // defined(OS_CHROMEOS)
199 160
200 SandboxInitWrapper sandbox_wrapper; 161 SandboxInitWrapper sandbox_wrapper;
201 MainFunctionParams params(*command_line, sandbox_wrapper, NULL); 162 MainFunctionParams params(*command_line, sandbox_wrapper, NULL);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 #if defined(OS_LINUX) 197 #if defined(OS_LINUX)
237 // Initialize the RenderSandbox and Zygote hosts. Apparently they get used 198 // Initialize the RenderSandbox and Zygote hosts. Apparently they get used
238 // for InProcessBrowserTest, and this is not the normal browser startup path. 199 // for InProcessBrowserTest, and this is not the normal browser startup path.
239 Singleton<LinuxHostInit>::get(); 200 Singleton<LinuxHostInit>::get();
240 #endif 201 #endif
241 202
242 BrowserMain(params); 203 BrowserMain(params);
243 TearDownInProcessBrowserTestFixture(); 204 TearDownInProcessBrowserTestFixture();
244 } 205 }
245 206
207 void InProcessBrowserTest::PrepareCommonInProcessBrowserTestCommandLine(
208 CommandLine* command_line) {
209 #if defined(OS_WIN)
210 // Hide windows on show.
211 if (!command_line->HasSwitch(kUnitTestShowWindows) && !show_window_)
212 BrowserView::SetShowState(SW_HIDE);
213 #endif
214
215 if (dom_automation_enabled_)
216 command_line->AppendSwitch(switches::kDomAutomationController);
217
218 // This is a Browser test.
219 command_line->AppendSwitchASCII(switches::kTestType, kBrowserTestType);
220
221 #if defined(OS_WIN)
222 // The Windows sandbox requires that the browser and child processes are the
223 // same binary. So we launch browser_process.exe which loads chrome.dll
224 command_line->AppendSwitchPath(switches::kBrowserSubprocessPath,
225 command_line->GetProgram());
226 #else
227 // Explicitly set the path of the binary used for child processes, otherwise
228 // they'll try to use browser_tests which doesn't contain ChromeMain.
229 FilePath subprocess_path;
230 PathService::Get(base::FILE_EXE, &subprocess_path);
231 subprocess_path = subprocess_path.DirName();
232 subprocess_path = subprocess_path.AppendASCII(WideToASCII(
233 chrome::kBrowserProcessExecutablePath));
234 #if defined(OS_MACOSX)
235 // Recreate the real environment, run the helper within the app bundle.
236 subprocess_path = subprocess_path.DirName().DirName();
237 DCHECK_EQ(subprocess_path.BaseName().value(), "Contents");
238 subprocess_path =
239 subprocess_path.Append("Versions").Append(chrome::kChromeVersion);
240 subprocess_path =
241 subprocess_path.Append(chrome::kHelperProcessExecutablePath);
Scott Hess - ex-Googler 2010/11/10 23:29:31 Wow, this Mac-specific code is messed up.
242 #endif
243 command_line->AppendSwitchPath(switches::kBrowserSubprocessPath,
244 subprocess_path);
245 #endif
246
247 // If ncecessary, disable TabCloseableStateWatcher.
248 if (!tab_closeable_state_watcher_enabled_)
249 command_line->AppendSwitch(switches::kDisableTabCloseableStateWatcher);
250 }
251
252
246 bool InProcessBrowserTest::CreateUserDataDirectory() { 253 bool InProcessBrowserTest::CreateUserDataDirectory() {
247 CommandLine* command_line = CommandLine::ForCurrentProcessMutable(); 254 CommandLine* command_line = CommandLine::ForCurrentProcessMutable();
248 FilePath user_data_dir = 255 FilePath user_data_dir =
249 command_line->GetSwitchValuePath(switches::kUserDataDir); 256 command_line->GetSwitchValuePath(switches::kUserDataDir);
250 if (user_data_dir.empty()) { 257 if (user_data_dir.empty()) {
251 if (temp_user_data_dir_.CreateUniqueTempDir() && 258 if (temp_user_data_dir_.CreateUniqueTempDir() &&
252 temp_user_data_dir_.IsValid()) { 259 temp_user_data_dir_.IsValid()) {
253 user_data_dir = temp_user_data_dir_.path(); 260 user_data_dir = temp_user_data_dir_.path();
254 } else { 261 } else {
255 LOG(ERROR) << "Could not create temporary user data directory \"" 262 LOG(ERROR) << "Could not create temporary user data directory \""
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 return; 372 return;
366 373
367 // Invoke CloseAllBrowsersAndExit on a running message loop. 374 // Invoke CloseAllBrowsersAndExit on a running message loop.
368 // CloseAllBrowsersAndExit exits the message loop after everything has been 375 // CloseAllBrowsersAndExit exits the message loop after everything has been
369 // shut down properly. 376 // shut down properly.
370 MessageLoopForUI::current()->PostTask( 377 MessageLoopForUI::current()->PostTask(
371 FROM_HERE, 378 FROM_HERE,
372 NewRunnableFunction(&BrowserList::CloseAllBrowsersAndExit)); 379 NewRunnableFunction(&BrowserList::CloseAllBrowsersAndExit));
373 ui_test_utils::RunMessageLoop(); 380 ui_test_utils::RunMessageLoop();
374 } 381 }
OLDNEW
« no previous file with comments | « chrome/test/in_process_browser_test.h ('k') | chrome/test/ui/ui_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698