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

Unified Diff: chrome/common/multi_process_notification_unittest.cc

Issue 6029014: Revert 70629 - Add multi-process notification class.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 11 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 | « chrome/common/multi_process_notification_mac.mm ('k') | chrome/common/multi_process_notification_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/common/multi_process_notification_unittest.cc
===================================================================
--- chrome/common/multi_process_notification_unittest.cc (revision 70638)
+++ chrome/common/multi_process_notification_unittest.cc (working copy)
@@ -1,222 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/common/multi_process_notification.h"
-
-#include "base/basictypes.h"
-#include "base/environment.h"
-#include "base/logging.h"
-#include "base/message_loop.h"
-#include "base/test/multiprocess_test.h"
-#include "base/test/test_timeouts.h"
-#include "base/time.h"
-#include "testing/multiprocess_func_list.h"
-
-#if defined(OS_MACOSX)
-// TODO(dmaclach): Remove defined(OS_MACOSX) once
-// MultiProcessNotification is implemented on Win/Linux.
-
-namespace {
-
-const char kStartedNotificationName[] = "MultiProcessTestStartedNotification";
-const char kQuitNotificationName[] = "MultiProcessTestQuitNotification";
-
-void SpinRunLoop(int milliseconds) {
- MessageLoopForIO *loop = MessageLoopForIO::current();
-
- // Post a quit task so that this loop eventually ends and we don't hang
- // in the case of a bad test. Usually, the run loop will quit sooner than
- // that because all tests use a MultiProcessNotificationTestQuit which quits
- // the current run loop when it gets a notification.
- loop->PostDelayedTask(FROM_HERE, new MessageLoop::QuitTask(), milliseconds);
- loop->Run();
-}
-
-int MultiProcessNotificationMain(multi_process_notification::Domain domain) {
- MessageLoop io_loop(MessageLoop::TYPE_IO);
- multi_process_notification::PerformTaskOnNotification quitter(
- new MessageLoop::QuitTask());
- multi_process_notification::Listener listener(
- kQuitNotificationName, domain, &quitter);
- EXPECT_TRUE(listener.Start());
- EXPECT_TRUE(multi_process_notification::Post(kStartedNotificationName,
- domain));
- SpinRunLoop(TestTimeouts::action_max_timeout_ms());
- EXPECT_TRUE(quitter.WasNotificationReceived());
- return 0;
-}
-
-} // namespace
-
-class MultiProcessNotificationTest : public base::MultiProcessTest {
- public:
- MultiProcessNotificationTest();
-
- void PostNotificationTest(multi_process_notification::Domain domain);
- void CrossPostNotificationTest(multi_process_notification::Domain domain);
-
- private:
- MessageLoop io_loop_;
-};
-
-MultiProcessNotificationTest::MultiProcessNotificationTest()
- : io_loop_(MessageLoop::TYPE_IO) {
-}
-
-void MultiProcessNotificationTest::PostNotificationTest(
- multi_process_notification::Domain domain) {
- multi_process_notification::PerformTaskOnNotification process_started(
- new MessageLoop::QuitTask());
- multi_process_notification::Listener listener(kStartedNotificationName,
- domain,
- &process_started);
- ASSERT_TRUE(listener.Start());
- std::string process_name;
- switch (domain) {
- case multi_process_notification::ProfileDomain:
- process_name = "MultiProcessProfileNotificationMain";
- break;
-
- case multi_process_notification::UserDomain:
- process_name = "MultiProcessUserNotificationMain";
- break;
-
- case multi_process_notification::SystemDomain:
- process_name = "MultiProcessSystemNotificationMain";
- break;
- }
- base::ProcessHandle handle = SpawnChild(process_name, false);
- ASSERT_TRUE(handle);
- SpinRunLoop(TestTimeouts::action_max_timeout_ms());
- ASSERT_TRUE(process_started.WasNotificationReceived());
- ASSERT_TRUE(multi_process_notification::Post(kQuitNotificationName, domain));
- int exit_code = 0;
- EXPECT_TRUE(base::WaitForExitCodeWithTimeout(
- handle, &exit_code, TestTimeouts::action_max_timeout_ms()));
-}
-
-void MultiProcessNotificationTest::CrossPostNotificationTest(
- multi_process_notification::Domain domain) {
- // Check to make sure notifications sent to user domain aren't picked up
- // by system domain listeners and vice versa.
- std::string local_notification("QuitLocalNotification");
- std::string final_notification("FinalQuitLocalNotification");
- multi_process_notification::PerformTaskOnNotification profile_quitter(
- new MessageLoop::QuitTask());
- multi_process_notification::PerformTaskOnNotification user_quitter(
- new MessageLoop::QuitTask());
- multi_process_notification::PerformTaskOnNotification system_quitter(
- new MessageLoop::QuitTask());
- multi_process_notification::PerformTaskOnNotification final_quitter(
- new MessageLoop::QuitTask());
- multi_process_notification::Listener profile_listener(
- local_notification, multi_process_notification::ProfileDomain,
- &profile_quitter);
- multi_process_notification::Listener user_listener(
- local_notification, multi_process_notification::UserDomain,
- &user_quitter);
- multi_process_notification::Listener system_listener(
- local_notification, multi_process_notification::SystemDomain,
- &system_quitter);
- multi_process_notification::Listener final_listener(
- final_notification, multi_process_notification::UserDomain,
- &final_quitter);
-
- ASSERT_TRUE(profile_listener.Start());
- ASSERT_TRUE(user_listener.Start());
- ASSERT_TRUE(system_listener.Start());
- ASSERT_TRUE(multi_process_notification::Post(local_notification, domain));
- SpinRunLoop(TestTimeouts::action_timeout_ms());
-
- // Now send out a final_notification to queue up a notification
- // after the local_notification and make sure that all listeners have had a
- // chance to process local_notification before we check to see if they
- // were called.
- ASSERT_TRUE(final_listener.Start());
- ASSERT_TRUE(multi_process_notification::Post(
- final_notification, multi_process_notification::UserDomain));
- SpinRunLoop(TestTimeouts::action_timeout_ms());
- ASSERT_TRUE(final_quitter.WasNotificationReceived());
- switch (domain) {
- case multi_process_notification::ProfileDomain:
- ASSERT_TRUE(profile_quitter.WasNotificationReceived());
- ASSERT_FALSE(user_quitter.WasNotificationReceived());
- ASSERT_FALSE(system_quitter.WasNotificationReceived());
- break;
-
- case multi_process_notification::UserDomain:
- ASSERT_FALSE(profile_quitter.WasNotificationReceived());
- ASSERT_TRUE(user_quitter.WasNotificationReceived());
- ASSERT_FALSE(system_quitter.WasNotificationReceived());
- break;
-
- case multi_process_notification::SystemDomain:
- ASSERT_FALSE(profile_quitter.WasNotificationReceived());
- ASSERT_FALSE(user_quitter.WasNotificationReceived());
- ASSERT_TRUE(system_quitter.WasNotificationReceived());
- break;
- }
-}
-
-TEST_F(MultiProcessNotificationTest, BasicCreationTest) {
- multi_process_notification::Listener local_listener(
- "BasicCreationTest", multi_process_notification::UserDomain, NULL);
- ASSERT_TRUE(local_listener.Start());
- multi_process_notification::Listener system_listener(
- "BasicCreationTest", multi_process_notification::SystemDomain, NULL);
- ASSERT_TRUE(system_listener.Start());
-}
-
-TEST_F(MultiProcessNotificationTest, PostInProcessNotification) {
- std::string local_notification("QuitLocalNotification");
- multi_process_notification::PerformTaskOnNotification quitter(
- new MessageLoop::QuitTask());
- multi_process_notification::Listener listener(
- local_notification, multi_process_notification::UserDomain, &quitter);
-
- ASSERT_TRUE(listener.Start());
- ASSERT_TRUE(multi_process_notification::Post(
- local_notification, multi_process_notification::UserDomain));
- SpinRunLoop(TestTimeouts::action_max_timeout_ms());
- ASSERT_TRUE(quitter.WasNotificationReceived());
-}
-
-TEST_F(MultiProcessNotificationTest, PostProfileNotification) {
- PostNotificationTest(multi_process_notification::ProfileDomain);
-}
-
-TEST_F(MultiProcessNotificationTest, PostUserNotification) {
- PostNotificationTest(multi_process_notification::UserDomain);
-}
-
-TEST_F(MultiProcessNotificationTest, PostSystemNotification) {
- PostNotificationTest(multi_process_notification::SystemDomain);
-}
-
-TEST_F(MultiProcessNotificationTest, ProfileCrossDomainPosting) {
- CrossPostNotificationTest(multi_process_notification::ProfileDomain);
-}
-
-TEST_F(MultiProcessNotificationTest, UserCrossDomainPosting) {
- CrossPostNotificationTest(multi_process_notification::UserDomain);
-}
-
-TEST_F(MultiProcessNotificationTest, SystemCrossDomainPosting) {
- CrossPostNotificationTest(multi_process_notification::SystemDomain);
-}
-
-MULTIPROCESS_TEST_MAIN(MultiProcessProfileNotificationMain) {
- return MultiProcessNotificationMain(
- multi_process_notification::ProfileDomain);
-}
-
-MULTIPROCESS_TEST_MAIN(MultiProcessUserNotificationMain) {
- return MultiProcessNotificationMain(multi_process_notification::UserDomain);
-}
-
-MULTIPROCESS_TEST_MAIN(MultiProcessSystemNotificationMain) {
- return MultiProcessNotificationMain(multi_process_notification::SystemDomain);
-}
-
-#endif // defined(OS_MACOSX)
« no previous file with comments | « chrome/common/multi_process_notification_mac.mm ('k') | chrome/common/multi_process_notification_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698