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

Unified Diff: chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc

Issue 17127002: Correctly integrate StoragePartition into TestingProfile. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix InstantNTP test. Created 7 years, 5 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
Index: chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc
diff --git a/chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc b/chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc
index 79e02801dbb1d505a9ec031117e21c75da0a622a..706415605d196e44a29bcb2e89cfb0483821b5c5 100644
--- a/chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc
+++ b/chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc
@@ -11,9 +11,12 @@
#include "base/message_loop/message_loop.h"
#include "base/process_util.h"
#include "base/rand_util.h"
+#include "base/synchronization/waitable_event.h"
#include "base/test/multiprocess_test.h"
#include "base/test/test_timeouts.h"
+#include "base/time/default_tick_clock.h"
#include "base/time/time.h"
+#include "chrome/browser/prefs/browser_prefs.h"
#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h"
#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.h"
#include "chrome/browser/service/service_process_control.h"
@@ -26,13 +29,14 @@
#include "chrome/service/service_process.h"
#include "chrome/test/base/test_launcher_utils.h"
#include "chrome/test/base/testing_browser_process.h"
+#include "chrome/test/base/testing_io_thread_state.h"
#include "chrome/test/base/testing_pref_service_syncable.h"
#include "chrome/test/base/testing_profile.h"
#include "chrome/test/base/testing_profile_manager.h"
#include "chrome/test/base/ui_test_utils.h"
#include "components/browser_context_keyed_service/browser_context_keyed_service.h"
#include "content/public/browser/notification_service.h"
-#include "content/public/test/test_browser_thread.h"
+#include "content/public/test/test_browser_thread_bundle.h"
#include "ipc/ipc_descriptors.h"
#include "ipc/ipc_multiprocess_test.h"
#include "ipc/ipc_switches.h"
@@ -57,6 +61,7 @@ using ::testing::Property;
using ::testing::Return;
using ::testing::WithoutArgs;
using ::testing::_;
+using content::BrowserThread;
namespace {
@@ -205,17 +210,23 @@ typedef base::Callback<void(MockServiceIPCServer* server)>
int CloudPrintMockService_Main(SetExpectationsCallback set_expectations) {
base::MessageLoopForUI main_message_loop;
main_message_loop.set_thread_name("Main Thread");
+ CommandLine* command_line = CommandLine::ForCurrentProcess();
#if defined(OS_MACOSX)
- CommandLine* cl = CommandLine::ForCurrentProcess();
- if (!cl->HasSwitch(kTestExecutablePath))
+ if (!command_line->HasSwitch(kTestExecutablePath))
return kMissingSwitch;
- base::FilePath executable_path = cl->GetSwitchValuePath(kTestExecutablePath);
+ base::FilePath executable_path =
+ command_line->GetSwitchValuePath(kTestExecutablePath);
EXPECT_FALSE(executable_path.empty());
MockLaunchd mock_launchd(executable_path, &main_message_loop, true, true);
Launchd::ScopedInstance use_mock(&mock_launchd);
#endif
+ base::FilePath user_data_dir =
+ command_line->GetSwitchValuePath(switches::kUserDataDir);
+ CHECK(!user_data_dir.empty());
+ CHECK(test_launcher_utils::OverrideUserDataDir(user_data_dir));
+
ServiceProcessState* state(new ServiceProcessState);
bool service_process_state_initialized = state->Initialize();
EXPECT_TRUE(service_process_state_initialized);
@@ -289,8 +300,8 @@ class CloudPrintProxyPolicyStartupTest : public base::MultiProcessTest,
virtual ~CloudPrintProxyPolicyStartupTest();
virtual void SetUp();
- base::MessageLoopProxy* IOMessageLoopProxy() {
- return io_thread_.message_loop_proxy().get();
+ scoped_refptr<base::MessageLoopProxy> IOMessageLoopProxy() {
+ return BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO);
}
base::ProcessHandle Launch(const std::string& name);
void WaitForConnect();
@@ -316,9 +327,8 @@ class CloudPrintProxyPolicyStartupTest : public base::MultiProcessTest,
}
protected:
- base::MessageLoopForUI message_loop_;
- content::TestBrowserThread ui_thread_;
- base::Thread io_thread_;
+ content::TestBrowserThreadBundle thread_bundle_;
+ base::ScopedTempDir temp_user_data_dir_;
std::string startup_channel_id_;
scoped_ptr<IPC::ChannelProxy> startup_channel_;
@@ -359,28 +369,43 @@ class CloudPrintProxyPolicyStartupTest : public base::MultiProcessTest,
};
CloudPrintProxyPolicyStartupTest::CloudPrintProxyPolicyStartupTest()
- : ui_thread_(content::BrowserThread::UI, &message_loop_),
- io_thread_("CloudPrintProxyPolicyTestThread") {
+ : thread_bundle_(content::TestBrowserThreadBundle::REAL_IO_THREAD) {
}
CloudPrintProxyPolicyStartupTest::~CloudPrintProxyPolicyStartupTest() {
}
void CloudPrintProxyPolicyStartupTest::SetUp() {
- base::Thread::Options options(base::MessageLoop::TYPE_IO, 0);
- ASSERT_TRUE(io_thread_.StartWithOptions(options));
-
#if defined(OS_MACOSX)
EXPECT_TRUE(temp_dir_.CreateUniqueTempDir());
EXPECT_TRUE(MockLaunchd::MakeABundle(temp_dir_.path(),
"CloudPrintProxyTest",
&bundle_path_,
&executable_path_));
- mock_launchd_.reset(new MockLaunchd(executable_path_, &message_loop_,
+ mock_launchd_.reset(new MockLaunchd(executable_path_,
+ base::MessageLoopForUI::current(),
true, false));
scoped_launchd_instance_.reset(
new Launchd::ScopedInstance(mock_launchd_.get()));
#endif
+
+ // Ensure test does not use the standard profile directory. This is copied
+ // from InProcessBrowserTest::SetUp(). These tests require a more complex
+ // process startup so they are unable to just inherit from
+ // InProcessBrowserTest.
+ CommandLine* command_line = CommandLine::ForCurrentProcess();
+ base::FilePath user_data_dir =
+ command_line->GetSwitchValuePath(switches::kUserDataDir);
+ if (user_data_dir.empty()) {
+ ASSERT_TRUE(temp_user_data_dir_.CreateUniqueTempDir() &&
+ temp_user_data_dir_.IsValid())
+ << "Could not create temporary user data directory \""
+ << temp_user_data_dir_.path().value() << "\".";
+
+ user_data_dir = temp_user_data_dir_.path();
+ command_line->AppendSwitchPath(switches::kUserDataDir, user_data_dir);
+ }
+ ASSERT_TRUE(test_launcher_utils::OverrideUserDataDir(user_data_dir));
}
base::ProcessHandle CloudPrintProxyPolicyStartupTest::Launch(
@@ -452,10 +477,21 @@ CommandLine CloudPrintProxyPolicyStartupTest::MakeCmdLine(
}
TEST_F(CloudPrintProxyPolicyStartupTest, StartAndShutdown) {
+ TestingBrowserProcess* browser_process =
+ TestingBrowserProcess::GetGlobal();
+ TestingProfileManager profile_manager(browser_process);
+ ASSERT_TRUE(profile_manager.SetUp());
+
+ // Must be created after the TestingProfileManager since that creates the
+ // LocalState for the BrowserProcess. Must be created before profiles are
+ // constructed.
+ chrome::TestingIOThreadState testing_io_thread_state;
+
base::ProcessHandle handle =
Launch("CloudPrintMockService_StartEnabledWaitForQuit");
WaitForConnect();
ShutdownAndWaitForExitWithTimeout(handle);
+ content::RunAllPendingInMessageLoop();
}
BrowserContextKeyedService* CloudPrintProxyServiceFactoryForPolicyTest(
@@ -470,11 +506,18 @@ TEST_F(CloudPrintProxyPolicyStartupTest, StartBrowserWithoutPolicy) {
base::ProcessHandle handle =
Launch("CloudPrintMockService_StartEnabledWaitForQuit");
+ // Setup the Browser Process with a full IOThread::Globals.
TestingBrowserProcess* browser_process =
TestingBrowserProcess::GetGlobal();
+
TestingProfileManager profile_manager(browser_process);
ASSERT_TRUE(profile_manager.SetUp());
+ // Must be created after the TestingProfileManager since that creates the
+ // LocalState for the BrowserProcess. Must be created before profiles are
+ // constructed.
+ chrome::TestingIOThreadState testing_io_thread_state;
+
TestingProfile* profile =
profile_manager.CreateTestingProfile("StartBrowserWithoutPolicy");
CloudPrintProxyServiceFactory::GetInstance()->
@@ -490,20 +533,22 @@ TEST_F(CloudPrintProxyPolicyStartupTest, StartBrowserWithoutPolicy) {
test_launcher_utils::PrepareBrowserCommandLineForTests(&command_line);
WaitForConnect();
+ base::RunLoop run_loop;
base::MessageLoop::current()->PostDelayedTask(
FROM_HERE,
- base::MessageLoop::QuitClosure(),
+ run_loop.QuitClosure(),
TestTimeouts::action_timeout());
- bool run_loop = LaunchBrowser(command_line, profile);
- EXPECT_FALSE(run_loop);
- if (run_loop)
- base::MessageLoop::current()->Run();
+ bool should_run_loop = LaunchBrowser(command_line, profile);
+ EXPECT_FALSE(should_run_loop);
+ if (should_run_loop)
+ run_loop.Run();
EXPECT_EQ(MockServiceIPCServer::EnabledUserId(),
prefs->GetString(prefs::kCloudPrintEmail));
ShutdownAndWaitForExitWithTimeout(handle);
+ content::RunAllPendingInMessageLoop();
profile_manager.DeleteTestingProfile("StartBrowserWithoutPolicy");
}
@@ -516,6 +561,11 @@ TEST_F(CloudPrintProxyPolicyStartupTest, StartBrowserWithPolicy) {
TestingProfileManager profile_manager(browser_process);
ASSERT_TRUE(profile_manager.SetUp());
+ // Must be created after the TestingProfileManager since that creates the
+ // LocalState for the BrowserProcess. Must be created before profiles are
+ // constructed.
+ chrome::TestingIOThreadState testing_io_thread_state;
+
TestingProfile* profile =
profile_manager.CreateTestingProfile("StartBrowserWithPolicy");
CloudPrintProxyServiceFactory::GetInstance()->
@@ -533,20 +583,22 @@ TEST_F(CloudPrintProxyPolicyStartupTest, StartBrowserWithPolicy) {
test_launcher_utils::PrepareBrowserCommandLineForTests(&command_line);
WaitForConnect();
+ base::RunLoop run_loop;
base::MessageLoop::current()->PostDelayedTask(
FROM_HERE,
- base::MessageLoop::QuitClosure(),
+ run_loop.QuitClosure(),
TestTimeouts::action_timeout());
- bool run_loop = LaunchBrowser(command_line, profile);
+ bool should_run_loop = LaunchBrowser(command_line, profile);
// No expectations on run_loop being true here; that would be a race
// condition.
- if (run_loop)
- base::MessageLoop::current()->Run();
+ if (should_run_loop)
+ run_loop.Run();
EXPECT_EQ("", prefs->GetString(prefs::kCloudPrintEmail));
ShutdownAndWaitForExitWithTimeout(handle);
+ content::RunAllPendingInMessageLoop();
profile_manager.DeleteTestingProfile("StartBrowserWithPolicy");
}
« no previous file with comments | « chrome/browser/policy/policy_service_impl_unittest.cc ('k') | chrome/browser/profiles/off_the_record_profile_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698