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

Unified Diff: chrome/browser/process_singleton_uitest.cc

Issue 3567017: Fix ProcessSingletonTest.StartupRaceCondition using default profile again. (Closed) Base URL: git://codf21.jail/chromium.git
Patch Set: use ARGUMENTS_ONLY Created 10 years, 2 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/process_singleton_uitest.cc
diff --git a/chrome/browser/process_singleton_uitest.cc b/chrome/browser/process_singleton_uitest.cc
index 8b7da6b75e43f05b68f4bf837868fc8b09deb29a..28ae9621ddf2a091f2fb9d2b720d7f346818b685 100644
--- a/chrome/browser/process_singleton_uitest.cc
+++ b/chrome/browser/process_singleton_uitest.cc
@@ -17,11 +17,13 @@
#include "base/path_service.h"
#include "base/process_util.h"
#include "base/ref_counted.h"
+#include "base/scoped_temp_dir.h"
#include "base/thread.h"
#include "base/waitable_event.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_switches.h"
+#include "chrome/test/test_launcher_utils.h"
#include "chrome/test/ui/ui_test.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -33,12 +35,13 @@ namespace {
// NewRunnableMethod class to run the StartChrome methods in many threads.
class ChromeStarter : public base::RefCountedThreadSafe<ChromeStarter> {
public:
- explicit ChromeStarter(int timeout_ms)
+ explicit ChromeStarter(int timeout_ms, const FilePath& user_data_dir)
: ready_event_(false /* manual */, false /* signaled */),
done_event_(false /* manual */, false /* signaled */),
process_handle_(NULL),
process_terminated_(false),
- timeout_ms_(timeout_ms) {
+ timeout_ms_(timeout_ms),
+ user_data_dir_(user_data_dir) {
}
// We must reset some data members since we reuse the same ChromeStarter
@@ -60,15 +63,29 @@ class ChromeStarter : public base::RefCountedThreadSafe<ChromeStarter> {
CommandLine command_line(browser_directory.Append(
FilePath::FromWStringHack(chrome::kBrowserProcessExecutablePath)));
- FilePath user_data_directory;
- PathService::Get(chrome::DIR_USER_DATA, &user_data_directory);
- command_line.AppendSwitchPath(switches::kUserDataDir, user_data_directory);
+ command_line.AppendSwitchPath(switches::kUserDataDir, user_data_dir_);
if (first_run)
command_line.AppendSwitch(switches::kFirstRun);
else
command_line.AppendSwitch(switches::kNoFirstRun);
+ // Add the normal test-mode switches, except for the ones we're adding
+ // ourselves.
+ CommandLine standard_switches(CommandLine::ARGUMENTS_ONLY);
+ test_launcher_utils::PrepareBrowserCommandLineForTests(&standard_switches);
+ const CommandLine::SwitchMap& switch_map = standard_switches.GetSwitches();
+ for (CommandLine::SwitchMap::const_iterator i = switch_map.begin();
+ i != switch_map.end(); ++i) {
+ const std::string& switch_name = i->first;
+ if (switch_name == switches::kUserDataDir ||
+ switch_name == switches::kFirstRun ||
+ switch_name == switches::kNoFirstRun)
+ continue;
+
+ command_line.AppendSwitchNative(switch_name, i->second);
+ }
+
// Try to get all threads to launch the app at the same time.
// So let the test know we are ready.
ready_event_.Signal();
@@ -107,6 +124,7 @@ class ChromeStarter : public base::RefCountedThreadSafe<ChromeStarter> {
}
int timeout_ms_;
+ FilePath user_data_dir_;
DISALLOW_COPY_AND_ASSIGN(ChromeStarter);
};
@@ -118,6 +136,7 @@ class ProcessSingletonTest : public UITest {
// We use a manual reset so that all threads wake up at once when signaled
// and thus we must manually reset it for each attempt.
: threads_waker_(true /* manual */, false /* signaled */) {
+ temp_profile_dir_.CreateUniqueTempDir();
}
void SetUp() {
@@ -125,7 +144,8 @@ class ProcessSingletonTest : public UITest {
for (size_t i = 0; i < kNbThreads; ++i) {
chrome_starter_threads_[i].reset(new base::Thread("ChromeStarter"));
ASSERT_TRUE(chrome_starter_threads_[i]->Start());
- chrome_starters_[i] = new ChromeStarter(action_max_timeout_ms());
+ chrome_starters_[i] = new ChromeStarter(action_max_timeout_ms(),
+ temp_profile_dir_.path());
}
}
@@ -190,6 +210,10 @@ class ProcessSingletonTest : public UITest {
// The event that will get all threads to wake up simultaneously and try
// to start a chrome process at the same time.
base::WaitableEvent threads_waker_;
+
+ // We don't want to use the default profile, but can't use UITest's since we
+ // don't use UITest::LaunchBrowser.
+ ScopedTempDir temp_profile_dir_;
};
#if defined(OS_LINUX)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698