| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/in_process_browser_test.h" | 5 #include "chrome/test/base/in_process_browser_test.h" |
| 6 | 6 |
| 7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 | 152 |
| 153 CommandLine* command_line = CommandLine::ForCurrentProcess(); | 153 CommandLine* command_line = CommandLine::ForCurrentProcess(); |
| 154 | 154 |
| 155 // Auto-reload breaks many browser tests, which assume error pages won't be | 155 // Auto-reload breaks many browser tests, which assume error pages won't be |
| 156 // reloaded out from under them. Tests that expect or desire this behavior can | 156 // reloaded out from under them. Tests that expect or desire this behavior can |
| 157 // append switches::kEnableOfflineAutoReload, which will override the disable | 157 // append switches::kEnableOfflineAutoReload, which will override the disable |
| 158 // here. | 158 // here. |
| 159 command_line->AppendSwitch(switches::kDisableOfflineAutoReload); | 159 command_line->AppendSwitch(switches::kDisableOfflineAutoReload); |
| 160 | 160 |
| 161 // Allow subclasses to change the command line before running any tests. | 161 // Allow subclasses to change the command line before running any tests. |
| 162 ScopedVector<BrowserTestBase::Admixture> admixtures = GetAdmixtures(); |
| 163 for (ScopedVector<BrowserTestBase::Admixture>::iterator it = |
| 164 admixtures.begin(); |
| 165 it != admixtures.end(); |
| 166 ++it) { |
| 167 (*it)->SetUpCommandLine(command_line); |
| 168 } |
| 169 |
| 162 SetUpCommandLine(command_line); | 170 SetUpCommandLine(command_line); |
| 163 // Add command line arguments that are used by all InProcessBrowserTests. | 171 // Add command line arguments that are used by all InProcessBrowserTests. |
| 164 PrepareTestCommandLine(command_line); | 172 PrepareTestCommandLine(command_line); |
| 165 | 173 |
| 166 // Create a temporary user data directory if required. | 174 // Create a temporary user data directory if required. |
| 167 ASSERT_TRUE(CreateUserDataDirectory()) | 175 ASSERT_TRUE(CreateUserDataDirectory()) |
| 168 << "Could not create user data directory."; | 176 << "Could not create user data directory."; |
| 169 | 177 |
| 170 // Allow subclasses the opportunity to make changes to the default user data | 178 // Allow subclasses the opportunity to make changes to the default user data |
| 171 // dir before running any tests. | 179 // dir before running any tests. |
| 180 for (ScopedVector<BrowserTestBase::Admixture>::iterator it = |
| 181 admixtures.begin(); |
| 182 it != admixtures.end(); |
| 183 ++it) { |
| 184 ASSERT_TRUE((*it)->SetUpUserDataDirectory()) |
| 185 << "Could not set up user data directory."; |
| 186 } |
| 187 BrowserTestBase::ReturnAdmixtures(admixtures.Pass()); |
| 172 ASSERT_TRUE(SetUpUserDataDirectory()) | 188 ASSERT_TRUE(SetUpUserDataDirectory()) |
| 173 << "Could not set up user data directory."; | 189 << "Could not set up user data directory."; |
| 174 | 190 |
| 175 #if defined(OS_CHROMEOS) | 191 #if defined(OS_CHROMEOS) |
| 176 // Make sure that the log directory exists. | 192 // Make sure that the log directory exists. |
| 177 base::FilePath log_dir = logging::GetSessionLogFile(*command_line).DirName(); | 193 base::FilePath log_dir = logging::GetSessionLogFile(*command_line).DirName(); |
| 178 base::CreateDirectory(log_dir); | 194 base::CreateDirectory(log_dir); |
| 179 #endif // defined(OS_CHROMEOS) | 195 #endif // defined(OS_CHROMEOS) |
| 180 | 196 |
| 181 #if defined(OS_MACOSX) | 197 #if defined(OS_MACOSX) |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 // deallocation via an autorelease pool (such as browser window closure and | 428 // deallocation via an autorelease pool (such as browser window closure and |
| 413 // browser shutdown). To avoid this, the following pool is recycled after each | 429 // browser shutdown). To avoid this, the following pool is recycled after each |
| 414 // time code is directly executed. | 430 // time code is directly executed. |
| 415 autorelease_pool_ = new base::mac::ScopedNSAutoreleasePool; | 431 autorelease_pool_ = new base::mac::ScopedNSAutoreleasePool; |
| 416 #endif | 432 #endif |
| 417 | 433 |
| 418 // Pump any pending events that were created as a result of creating a | 434 // Pump any pending events that were created as a result of creating a |
| 419 // browser. | 435 // browser. |
| 420 content::RunAllPendingInMessageLoop(); | 436 content::RunAllPendingInMessageLoop(); |
| 421 | 437 |
| 438 ScopedVector<BrowserTestBase::Admixture> admixtures = GetAdmixtures(); |
| 439 for (ScopedVector<BrowserTestBase::Admixture>::iterator it = |
| 440 admixtures.begin(); |
| 441 it != admixtures.end(); |
| 442 ++it) { |
| 443 (*it)->SetUpInProcessBrowserTestFixture(); |
| 444 } |
| 445 BrowserTestBase::ReturnAdmixtures(admixtures.Pass()); |
| 422 SetUpOnMainThread(); | 446 SetUpOnMainThread(); |
| 423 #if defined(OS_MACOSX) | 447 #if defined(OS_MACOSX) |
| 424 autorelease_pool_->Recycle(); | 448 autorelease_pool_->Recycle(); |
| 425 #endif | 449 #endif |
| 426 | 450 |
| 427 if (!HasFatalFailure()) | 451 if (!HasFatalFailure()) |
| 428 RunTestOnMainThread(); | 452 RunTestOnMainThread(); |
| 429 #if defined(OS_MACOSX) | 453 #if defined(OS_MACOSX) |
| 430 autorelease_pool_->Recycle(); | 454 autorelease_pool_->Recycle(); |
| 431 #endif | 455 #endif |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 473 // On the Mac, this eventually reaches | 497 // On the Mac, this eventually reaches |
| 474 // -[BrowserWindowController windowWillClose:], which will post a deferred | 498 // -[BrowserWindowController windowWillClose:], which will post a deferred |
| 475 // -autorelease on itself to ultimately destroy the Browser object. The line | 499 // -autorelease on itself to ultimately destroy the Browser object. The line |
| 476 // below is necessary to pump these pending messages to ensure all Browsers | 500 // below is necessary to pump these pending messages to ensure all Browsers |
| 477 // get deleted. | 501 // get deleted. |
| 478 content::RunAllPendingInMessageLoop(); | 502 content::RunAllPendingInMessageLoop(); |
| 479 delete autorelease_pool_; | 503 delete autorelease_pool_; |
| 480 autorelease_pool_ = NULL; | 504 autorelease_pool_ = NULL; |
| 481 #endif | 505 #endif |
| 482 } | 506 } |
| OLD | NEW |