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

Side by Side Diff: chrome/browser/printing/cloud_print/test/cloud_print_proxy_process_browsertest.cc

Issue 14113053: chrome: Use base::MessageLoop. (Part 3) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase again Created 7 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 // Create a service process that uses a Mock to respond to the browser in order 5 // Create a service process that uses a Mock to respond to the browser in order
6 // to test launching the browser using the cloud print policy check command 6 // to test launching the browser using the cloud print policy check command
7 // line switch. 7 // line switch.
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 } 85 }
86 }; 86 };
87 87
88 } // namespace 88 } // namespace
89 89
90 class TestServiceProcess : public ServiceProcess { 90 class TestServiceProcess : public ServiceProcess {
91 public: 91 public:
92 TestServiceProcess() { } 92 TestServiceProcess() { }
93 virtual ~TestServiceProcess() { } 93 virtual ~TestServiceProcess() { }
94 94
95 bool Initialize(MessageLoopForUI* message_loop, ServiceProcessState* state); 95 bool Initialize(base::MessageLoopForUI* message_loop,
96 ServiceProcessState* state);
96 97
97 base::MessageLoopProxy* IOMessageLoopProxy() { 98 base::MessageLoopProxy* IOMessageLoopProxy() {
98 return io_thread_->message_loop_proxy(); 99 return io_thread_->message_loop_proxy();
99 } 100 }
100 }; 101 };
101 102
102 bool TestServiceProcess::Initialize(MessageLoopForUI* message_loop, 103 bool TestServiceProcess::Initialize(base::MessageLoopForUI* message_loop,
103 ServiceProcessState* state) { 104 ServiceProcessState* state) {
104 main_message_loop_ = message_loop; 105 main_message_loop_ = message_loop;
105 106
106 service_process_state_.reset(state); 107 service_process_state_.reset(state);
107 108
108 base::Thread::Options options(MessageLoop::TYPE_IO, 0); 109 base::Thread::Options options(base::MessageLoop::TYPE_IO, 0);
109 io_thread_.reset(new base::Thread("TestServiceProcess_IO")); 110 io_thread_.reset(new base::Thread("TestServiceProcess_IO"));
110 return io_thread_->StartWithOptions(options); 111 return io_thread_->StartWithOptions(options);
111 } 112 }
112 113
113 // This mocks the service side IPC message handler, allowing us to have a 114 // This mocks the service side IPC message handler, allowing us to have a
114 // minimal service process. 115 // minimal service process.
115 class MockServiceIPCServer : public ServiceIPCServer { 116 class MockServiceIPCServer : public ServiceIPCServer {
116 public: 117 public:
117 static std::string EnabledUserId(); 118 static std::string EnabledUserId();
118 119
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 return true; 196 return true;
196 } 197 }
197 198
198 typedef base::Callback<void(MockServiceIPCServer* server)> 199 typedef base::Callback<void(MockServiceIPCServer* server)>
199 SetExpectationsCallback; 200 SetExpectationsCallback;
200 201
201 // The return value from this routine is used as the exit code for the mock 202 // The return value from this routine is used as the exit code for the mock
202 // service process. Any non-zero return value will be printed out and can help 203 // service process. Any non-zero return value will be printed out and can help
203 // determine the failure. 204 // determine the failure.
204 int CloudPrintMockService_Main(SetExpectationsCallback set_expectations) { 205 int CloudPrintMockService_Main(SetExpectationsCallback set_expectations) {
205 MessageLoopForUI main_message_loop; 206 base::MessageLoopForUI main_message_loop;
206 main_message_loop.set_thread_name("Main Thread"); 207 main_message_loop.set_thread_name("Main Thread");
207 208
208 #if defined(OS_MACOSX) 209 #if defined(OS_MACOSX)
209 CommandLine* cl = CommandLine::ForCurrentProcess(); 210 CommandLine* cl = CommandLine::ForCurrentProcess();
210 if (!cl->HasSwitch(kTestExecutablePath)) 211 if (!cl->HasSwitch(kTestExecutablePath))
211 return kMissingSwitch; 212 return kMissingSwitch;
212 base::FilePath executable_path = cl->GetSwitchValuePath(kTestExecutablePath); 213 base::FilePath executable_path = cl->GetSwitchValuePath(kTestExecutablePath);
213 EXPECT_FALSE(executable_path.empty()); 214 EXPECT_FALSE(executable_path.empty());
214 MockLaunchd mock_launchd(executable_path, &main_message_loop, true, true); 215 MockLaunchd mock_launchd(executable_path, &main_message_loop, true, true);
215 Launchd::ScopedInstance use_mock(&mock_launchd); 216 Launchd::ScopedInstance use_mock(&mock_launchd);
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 309
309 bool LaunchBrowser(const CommandLine& command_line, Profile* profile) { 310 bool LaunchBrowser(const CommandLine& command_line, Profile* profile) {
310 int return_code = 0; 311 int return_code = 0;
311 StartupBrowserCreator browser_creator; 312 StartupBrowserCreator browser_creator;
312 return StartupBrowserCreator::ProcessCmdLineImpl( 313 return StartupBrowserCreator::ProcessCmdLineImpl(
313 command_line, base::FilePath(), false, profile, 314 command_line, base::FilePath(), false, profile,
314 StartupBrowserCreator::Profiles(), &return_code, &browser_creator); 315 StartupBrowserCreator::Profiles(), &return_code, &browser_creator);
315 } 316 }
316 317
317 protected: 318 protected:
318 MessageLoopForUI message_loop_; 319 base::MessageLoopForUI message_loop_;
319 content::TestBrowserThread ui_thread_; 320 content::TestBrowserThread ui_thread_;
320 base::Thread io_thread_; 321 base::Thread io_thread_;
321 322
322 std::string startup_channel_id_; 323 std::string startup_channel_id_;
323 scoped_ptr<IPC::ChannelProxy> startup_channel_; 324 scoped_ptr<IPC::ChannelProxy> startup_channel_;
324 325
325 #if defined(OS_MACOSX) 326 #if defined(OS_MACOSX)
326 base::ScopedTempDir temp_dir_; 327 base::ScopedTempDir temp_dir_;
327 base::FilePath executable_path_, bundle_path_; 328 base::FilePath executable_path_, bundle_path_;
328 scoped_ptr<MockLaunchd> mock_launchd_; 329 scoped_ptr<MockLaunchd> mock_launchd_;
(...skipping 10 matching lines...) Expand all
339 void Wait() { 340 void Wait() {
340 if (seen_) 341 if (seen_)
341 return; 342 return;
342 running_ = true; 343 running_ = true;
343 content::RunMessageLoop(); 344 content::RunMessageLoop();
344 } 345 }
345 346
346 void Notify() { 347 void Notify() {
347 seen_ = true; 348 seen_ = true;
348 if (running_) 349 if (running_)
349 MessageLoopForUI::current()->Quit(); 350 base::MessageLoopForUI::current()->Quit();
350 } 351 }
351 352
352 private: 353 private:
353 bool seen_; 354 bool seen_;
354 bool running_; 355 bool running_;
355 }; 356 };
356 357
357 WindowedChannelConnectionObserver observer_; 358 WindowedChannelConnectionObserver observer_;
358 }; 359 };
359 360
360 CloudPrintProxyPolicyStartupTest::CloudPrintProxyPolicyStartupTest() 361 CloudPrintProxyPolicyStartupTest::CloudPrintProxyPolicyStartupTest()
361 : ui_thread_(content::BrowserThread::UI, &message_loop_), 362 : ui_thread_(content::BrowserThread::UI, &message_loop_),
362 io_thread_("CloudPrintProxyPolicyTestThread") { 363 io_thread_("CloudPrintProxyPolicyTestThread") {
363 } 364 }
364 365
365 CloudPrintProxyPolicyStartupTest::~CloudPrintProxyPolicyStartupTest() { 366 CloudPrintProxyPolicyStartupTest::~CloudPrintProxyPolicyStartupTest() {
366 } 367 }
367 368
368 void CloudPrintProxyPolicyStartupTest::SetUp() { 369 void CloudPrintProxyPolicyStartupTest::SetUp() {
369 base::Thread::Options options(MessageLoop::TYPE_IO, 0); 370 base::Thread::Options options(base::MessageLoop::TYPE_IO, 0);
370 ASSERT_TRUE(io_thread_.StartWithOptions(options)); 371 ASSERT_TRUE(io_thread_.StartWithOptions(options));
371 372
372 #if defined(OS_MACOSX) 373 #if defined(OS_MACOSX)
373 EXPECT_TRUE(temp_dir_.CreateUniqueTempDir()); 374 EXPECT_TRUE(temp_dir_.CreateUniqueTempDir());
374 EXPECT_TRUE(MockLaunchd::MakeABundle(temp_dir_.path(), 375 EXPECT_TRUE(MockLaunchd::MakeABundle(temp_dir_.path(),
375 "CloudPrintProxyTest", 376 "CloudPrintProxyTest",
376 &bundle_path_, 377 &bundle_path_,
377 &executable_path_)); 378 &executable_path_));
378 mock_launchd_.reset(new MockLaunchd(executable_path_, &message_loop_, 379 mock_launchd_.reset(new MockLaunchd(executable_path_, &message_loop_,
379 true, false)); 380 true, false));
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
480 TestingPrefServiceSyncable* prefs = profile->GetTestingPrefService(); 481 TestingPrefServiceSyncable* prefs = profile->GetTestingPrefService();
481 prefs->SetUserPref(prefs::kCloudPrintEmail, 482 prefs->SetUserPref(prefs::kCloudPrintEmail,
482 Value::CreateStringValue( 483 Value::CreateStringValue(
483 MockServiceIPCServer::EnabledUserId())); 484 MockServiceIPCServer::EnabledUserId()));
484 485
485 CommandLine command_line(CommandLine::NO_PROGRAM); 486 CommandLine command_line(CommandLine::NO_PROGRAM);
486 command_line.AppendSwitch(switches::kCheckCloudPrintConnectorPolicy); 487 command_line.AppendSwitch(switches::kCheckCloudPrintConnectorPolicy);
487 test_launcher_utils::PrepareBrowserCommandLineForTests(&command_line); 488 test_launcher_utils::PrepareBrowserCommandLineForTests(&command_line);
488 489
489 WaitForConnect(); 490 WaitForConnect();
490 MessageLoop::current()->PostDelayedTask(FROM_HERE, 491 base::MessageLoop::current()->PostDelayedTask(
491 MessageLoop::QuitClosure(), 492 FROM_HERE,
492 TestTimeouts::action_timeout()); 493 base::MessageLoop::QuitClosure(),
494 TestTimeouts::action_timeout());
493 495
494 bool run_loop = LaunchBrowser(command_line, profile); 496 bool run_loop = LaunchBrowser(command_line, profile);
495 EXPECT_FALSE(run_loop); 497 EXPECT_FALSE(run_loop);
496 if (run_loop) 498 if (run_loop)
497 MessageLoop::current()->Run(); 499 base::MessageLoop::current()->Run();
498 500
499 EXPECT_EQ(MockServiceIPCServer::EnabledUserId(), 501 EXPECT_EQ(MockServiceIPCServer::EnabledUserId(),
500 prefs->GetString(prefs::kCloudPrintEmail)); 502 prefs->GetString(prefs::kCloudPrintEmail));
501 503
502 ShutdownAndWaitForExitWithTimeout(handle); 504 ShutdownAndWaitForExitWithTimeout(handle);
503 profile_manager.DeleteTestingProfile("StartBrowserWithoutPolicy"); 505 profile_manager.DeleteTestingProfile("StartBrowserWithoutPolicy");
504 } 506 }
505 507
506 TEST_F(CloudPrintProxyPolicyStartupTest, StartBrowserWithPolicy) { 508 TEST_F(CloudPrintProxyPolicyStartupTest, StartBrowserWithPolicy) {
507 base::ProcessHandle handle = 509 base::ProcessHandle handle =
(...skipping 14 matching lines...) Expand all
522 Value::CreateStringValue( 524 Value::CreateStringValue(
523 MockServiceIPCServer::EnabledUserId())); 525 MockServiceIPCServer::EnabledUserId()));
524 prefs->SetManagedPref(prefs::kCloudPrintProxyEnabled, 526 prefs->SetManagedPref(prefs::kCloudPrintProxyEnabled,
525 Value::CreateBooleanValue(false)); 527 Value::CreateBooleanValue(false));
526 528
527 CommandLine command_line(CommandLine::NO_PROGRAM); 529 CommandLine command_line(CommandLine::NO_PROGRAM);
528 command_line.AppendSwitch(switches::kCheckCloudPrintConnectorPolicy); 530 command_line.AppendSwitch(switches::kCheckCloudPrintConnectorPolicy);
529 test_launcher_utils::PrepareBrowserCommandLineForTests(&command_line); 531 test_launcher_utils::PrepareBrowserCommandLineForTests(&command_line);
530 532
531 WaitForConnect(); 533 WaitForConnect();
532 MessageLoop::current()->PostDelayedTask(FROM_HERE, 534 base::MessageLoop::current()->PostDelayedTask(
533 MessageLoop::QuitClosure(), 535 FROM_HERE,
534 TestTimeouts::action_timeout()); 536 base::MessageLoop::QuitClosure(),
537 TestTimeouts::action_timeout());
535 538
536 bool run_loop = LaunchBrowser(command_line, profile); 539 bool run_loop = LaunchBrowser(command_line, profile);
537 540
538 // No expectations on run_loop being true here; that would be a race 541 // No expectations on run_loop being true here; that would be a race
539 // condition. 542 // condition.
540 if (run_loop) 543 if (run_loop)
541 MessageLoop::current()->Run(); 544 base::MessageLoop::current()->Run();
542 545
543 EXPECT_EQ("", prefs->GetString(prefs::kCloudPrintEmail)); 546 EXPECT_EQ("", prefs->GetString(prefs::kCloudPrintEmail));
544 547
545 ShutdownAndWaitForExitWithTimeout(handle); 548 ShutdownAndWaitForExitWithTimeout(handle);
546 profile_manager.DeleteTestingProfile("StartBrowserWithPolicy"); 549 profile_manager.DeleteTestingProfile("StartBrowserWithPolicy");
547 } 550 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698