Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / ash / multi_user / multi_user_notification_blocker_chromeos_unittest.cc
index 03809e0..88bf046 100644 (file)
@@ -2,12 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "ash/session_state_delegate.h"
+#include "ash/session/session_state_delegate.h"
+#include "ash/session/user_info.h"
 #include "ash/shell.h"
 #include "ash/system/system_notifier.h"
 #include "ash/test/ash_test_base.h"
+#include "ash/test/test_session_state_delegate.h"
 #include "ash/test/test_shell_delegate.h"
-#include "ash/wm/window_state.h"
 #include "chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos.h"
 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h"
 #include "chrome/test/base/testing_browser_process.h"
@@ -21,7 +22,6 @@ class MultiUserNotificationBlockerChromeOSTest
  public:
   MultiUserNotificationBlockerChromeOSTest()
       : state_changed_count_(0),
-        is_logged_in_(false),
         testing_profile_manager_(TestingBrowserProcess::GetGlobal()),
         window_id_(0) {}
   virtual ~MultiUserNotificationBlockerChromeOSTest() {}
@@ -31,12 +31,23 @@ class MultiUserNotificationBlockerChromeOSTest
     ash::test::AshTestBase::SetUp();
     ASSERT_TRUE(testing_profile_manager_.SetUp());
 
+    // MultiUserWindowManager is initialized after the log in.
+    testing_profile_manager_.CreateTestingProfile(GetDefaultUserId());
+
     ash::test::TestShellDelegate* shell_delegate =
         static_cast<ash::test::TestShellDelegate*>(
             ash::Shell::GetInstance()->delegate());
     shell_delegate->set_multi_profiles_enabled(true);
     chrome::MultiUserWindowManager::CreateInstance();
 
+    ash::test::TestSessionStateDelegate* session_state_delegate =
+        static_cast<ash::test::TestSessionStateDelegate*>(
+            ash::Shell::GetInstance()->session_state_delegate());
+    session_state_delegate->AddUser("test2@example.com");
+
+    // Disable any animations for the test.
+    GetMultiUserWindowManager()->SetAnimationSpeedForTest(
+        chrome::MultiUserWindowManagerChromeOS::ANIMATION_SPEED_DISABLED);
     GetMultiUserWindowManager()->notification_blocker_->AddObserver(this);
   }
 
@@ -59,16 +70,19 @@ class MultiUserNotificationBlockerChromeOSTest
         chrome::MultiUserWindowManager::GetInstance());
   }
 
+  const std::string GetDefaultUserId() {
+    return ash::Shell::GetInstance()
+        ->session_state_delegate()
+        ->GetUserInfo(0)
+        ->GetUserID();
+  }
+
   const message_center::NotificationBlocker* blocker() {
     return GetMultiUserWindowManager()->notification_blocker_.get();
   }
 
   void CreateProfile(const std::string& name) {
     testing_profile_manager_.CreateTestingProfile(name);
-    if (!is_logged_in_) {
-      SwitchActiveUser(name);
-      is_logged_in_ = true;
-    }
   }
 
   void SwitchActiveUser(const std::string& name) {
@@ -111,7 +125,6 @@ class MultiUserNotificationBlockerChromeOSTest
 
  private:
   int state_changed_count_;
-  bool is_logged_in_;
   TestingProfileManager testing_profile_manager_;
   int window_id_;
 
@@ -132,45 +145,35 @@ TEST_F(MultiUserNotificationBlockerChromeOSTest, Basic) {
   message_center::NotifierId random_system_notifier(
       message_center::NotifierId::SYSTEM_COMPONENT, "random_system_component");
 
-  // Nothing is created, active_user_id_ should be empty.
-  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, ""));
-  EXPECT_TRUE(ShouldShowNotificationAsPopup(ash_system_notifier, ""));
-  EXPECT_TRUE(ShouldShowNotificationAsPopup(random_system_notifier, ""));
-  EXPECT_TRUE(ShouldShowNotification(notifier_id, ""));
-  EXPECT_TRUE(ShouldShowNotification(ash_system_notifier, ""));
-  EXPECT_TRUE(ShouldShowNotification(random_system_notifier, ""));
-
-  CreateProfile("test@example.com");
-  EXPECT_EQ(1, GetStateChangedCountAndReset());
   EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, ""));
   EXPECT_TRUE(ShouldShowNotificationAsPopup(ash_system_notifier, ""));
   EXPECT_FALSE(ShouldShowNotificationAsPopup(random_system_notifier, ""));
-  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, "test@example.com"));
+  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, GetDefaultUserId()));
   EXPECT_FALSE(ShouldShowNotification(notifier_id, ""));
   EXPECT_TRUE(ShouldShowNotification(ash_system_notifier, ""));
   EXPECT_FALSE(ShouldShowNotification(random_system_notifier, ""));
-  EXPECT_TRUE(ShouldShowNotification(notifier_id, "test@example.com"));
+  EXPECT_TRUE(ShouldShowNotification(notifier_id, GetDefaultUserId()));
   EXPECT_TRUE(ShouldShowNotification(random_system_notifier,
-                                     "test@example.com"));
+                                     GetDefaultUserId()));
 
   CreateProfile("test2@example.com");
   EXPECT_EQ(0, GetStateChangedCountAndReset());
   EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, ""));
   EXPECT_TRUE(ShouldShowNotificationAsPopup(ash_system_notifier, ""));
   EXPECT_FALSE(ShouldShowNotificationAsPopup(random_system_notifier, ""));
-  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, "test@example.com"));
+  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, GetDefaultUserId()));
   EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, "test2@example.com"));
   EXPECT_TRUE(ShouldShowNotificationAsPopup(random_system_notifier,
-                                            "test@example.com"));
+                                            GetDefaultUserId()));
   EXPECT_FALSE(ShouldShowNotificationAsPopup(random_system_notifier,
                                              "test2@example.com"));
   EXPECT_FALSE(ShouldShowNotification(notifier_id, ""));
   EXPECT_TRUE(ShouldShowNotification(ash_system_notifier, ""));
   EXPECT_FALSE(ShouldShowNotification(random_system_notifier, ""));
-  EXPECT_TRUE(ShouldShowNotification(notifier_id, "test@example.com"));
+  EXPECT_TRUE(ShouldShowNotification(notifier_id, GetDefaultUserId()));
   EXPECT_FALSE(ShouldShowNotification(notifier_id, "test2@example.com"));
   EXPECT_TRUE(ShouldShowNotification(random_system_notifier,
-                                     "test@example.com"));
+                                     GetDefaultUserId()));
   EXPECT_FALSE(ShouldShowNotification(random_system_notifier,
                                       "test2@example.com"));
 
@@ -178,124 +181,39 @@ TEST_F(MultiUserNotificationBlockerChromeOSTest, Basic) {
   EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, ""));
   EXPECT_TRUE(ShouldShowNotificationAsPopup(ash_system_notifier, ""));
   EXPECT_FALSE(ShouldShowNotificationAsPopup(random_system_notifier, ""));
-  EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, "test@example.com"));
+  EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, GetDefaultUserId()));
   EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, "test2@example.com"));
   EXPECT_FALSE(ShouldShowNotificationAsPopup(random_system_notifier,
-                                             "test@example.com"));
+                                             GetDefaultUserId()));
   EXPECT_TRUE(ShouldShowNotificationAsPopup(random_system_notifier,
                                             "test2@example.com"));
   EXPECT_FALSE(ShouldShowNotification(notifier_id, ""));
   EXPECT_TRUE(ShouldShowNotification(ash_system_notifier, ""));
   EXPECT_FALSE(ShouldShowNotification(random_system_notifier, ""));
-  EXPECT_FALSE(ShouldShowNotification(notifier_id, "test@example.com"));
+  EXPECT_FALSE(ShouldShowNotification(notifier_id, GetDefaultUserId()));
   EXPECT_TRUE(ShouldShowNotification(notifier_id, "test2@example.com"));
   EXPECT_FALSE(ShouldShowNotification(random_system_notifier,
-                                      "test@example.com"));
+                                      GetDefaultUserId()));
   EXPECT_TRUE(ShouldShowNotification(random_system_notifier,
                                      "test2@example.com"));
 
-  SwitchActiveUser("test@example.com");
+  SwitchActiveUser(GetDefaultUserId());
   EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, ""));
   EXPECT_TRUE(ShouldShowNotificationAsPopup(ash_system_notifier, ""));
   EXPECT_FALSE(ShouldShowNotificationAsPopup(random_system_notifier, ""));
-  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, "test@example.com"));
+  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, GetDefaultUserId()));
   EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, "test2@example.com"));
   EXPECT_TRUE(ShouldShowNotificationAsPopup(random_system_notifier,
-                                            "test@example.com"));
+                                            GetDefaultUserId()));
   EXPECT_FALSE(ShouldShowNotificationAsPopup(random_system_notifier,
                                              "test2@example.com"));
   EXPECT_FALSE(ShouldShowNotification(notifier_id, ""));
   EXPECT_TRUE(ShouldShowNotification(ash_system_notifier, ""));
   EXPECT_FALSE(ShouldShowNotification(random_system_notifier, ""));
-  EXPECT_TRUE(ShouldShowNotification(notifier_id, "test@example.com"));
+  EXPECT_TRUE(ShouldShowNotification(notifier_id, GetDefaultUserId()));
   EXPECT_FALSE(ShouldShowNotification(notifier_id, "test2@example.com"));
   EXPECT_TRUE(ShouldShowNotification(random_system_notifier,
-                                     "test@example.com"));
+                                     GetDefaultUserId()));
   EXPECT_FALSE(ShouldShowNotification(random_system_notifier,
                                       "test2@example.com"));
 }
-
-TEST_F(MultiUserNotificationBlockerChromeOSTest, TeleportedWindows) {
-  ASSERT_EQ(chrome::MultiUserWindowManager::MULTI_PROFILE_MODE_SEPARATED,
-            chrome::MultiUserWindowManager::GetMultiProfileMode());
-
-  std::string u1 = "test@example.com";
-  std::string u2 = "test2@example.com";
-  std::string u3 = "test3@example.com";
-  CreateProfile(u1);
-  CreateProfile(u2);
-  CreateProfile(u3);
-
-  chrome::MultiUserWindowManager* multi_user_window_manager =
-      chrome::MultiUserWindowManager::GetInstance();
-
-  message_center::NotifierId notifier_id(
-      message_center::NotifierId::APPLICATION, "test-app");
-
-  // Initial status: only notifications for u1 should be shown.
-  EXPECT_EQ(1, GetStateChangedCountAndReset());
-  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, u1));
-  EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, u2));
-  EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, u3));
-
-  // Create a new window in u2.
-  SwitchActiveUser(u2);
-  scoped_ptr<aura::Window> w2(CreateWindowForProfile(u2));
-  EXPECT_EQ(2, GetStateChangedCountAndReset());
-  EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, u1));
-  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, u2));
-  EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, u3));
-
-  // Moves w2 to u1 desktop.
-  multi_user_window_manager->ShowWindowForUser(w2.get(), u1);
-  EXPECT_EQ(1, GetStateChangedCountAndReset());
-  EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, u1));
-  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, u2));
-  EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, u3));
-
-  // Switch back to u1 desktop. Notification for u2 should be shown as a popup
-  // because w2 is visiting to u1.
-  SwitchActiveUser(u1);
-  EXPECT_EQ(2, GetStateChangedCountAndReset());
-  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, u1));
-  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, u2));
-  EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, u3));
-
-  // Notifications for u2 is not shown in the center.
-  EXPECT_TRUE(ShouldShowNotification(notifier_id, u1));
-  EXPECT_FALSE(ShouldShowNotification(notifier_id, u2));
-  EXPECT_FALSE(ShouldShowNotification(notifier_id, u3));
-
-  // Moves w2 back.
-  multi_user_window_manager->ShowWindowForUser(w2.get(), u2);
-  EXPECT_EQ(1, GetStateChangedCountAndReset());
-  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, u1));
-  EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, u2));
-  EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, u3));
-
-  // Close/remove the visiting window.
-  scoped_ptr<aura::Window> w22(CreateWindowForProfile(u2));
-  multi_user_window_manager->ShowWindowForUser(w22.get(), u1);
-  EXPECT_EQ(1, GetStateChangedCountAndReset());
-  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, u1));
-  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, u2));
-  EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, u3));
-
-  w22.reset();
-  EXPECT_EQ(1, GetStateChangedCountAndReset());
-  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, u1));
-  EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, u2));
-  EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, u3));
-
-  // Minimize the visiting window.
-  scoped_ptr<aura::Window> w23(CreateWindowForProfile(u2));
-  multi_user_window_manager->ShowWindowForUser(w23.get(), u1);
-  EXPECT_EQ(1, GetStateChangedCountAndReset());
-
-  ash::wm::GetWindowState(w23.get())->Minimize();
-  EXPECT_EQ(u2, multi_user_window_manager->GetUserPresentingWindow(w23.get()));
-  EXPECT_EQ(1, GetStateChangedCountAndReset());
-  EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, u1));
-  EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, u2));
-  EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, u3));
-}