summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/ash
diff options
context:
space:
mode:
authormukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-21 21:18:04 +0000
committermukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-21 21:18:04 +0000
commiteba034d99aedf32dfa59ac23d5404b51b72a6a8d (patch)
tree5f647bddeff2595e1aa0a9e32c9b6f1f7ba68554 /chrome/browser/ui/ash
parent1a490a0ea77f9d5341ff9e387f5de90f3eba33b4 (diff)
downloadchromium_src-eba034d99aedf32dfa59ac23d5404b51b72a6a8d.zip
chromium_src-eba034d99aedf32dfa59ac23d5404b51b72a6a8d.tar.gz
chromium_src-eba034d99aedf32dfa59ac23d5404b51b72a6a8d.tar.bz2
Removes the handling of teleported windows in the notification blocker.
Our approach of notification blocking logic for multi-user was not ideal. Using teleported windows would be more confusing to the users. BUG=363276 R=skuhne@chromium.org Review URL: https://codereview.chromium.org/237553004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@265072 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/ash')
-rw-r--r--chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos.cc39
-rw-r--r--chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos.h16
-rw-r--r--chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos_unittest.cc87
-rw-r--r--chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.cc2
4 files changed, 3 insertions, 141 deletions
diff --git a/chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos.cc b/chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos.cc
index 55c62fa..b515a90 100644
--- a/chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos.cc
+++ b/chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos.cc
@@ -4,38 +4,19 @@
#include "chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos.h"
-#include "ash/shell.h"
-#include "ash/shell_window_ids.h"
#include "ash/system/system_notifier.h"
-#include "chrome/browser/ui/ash/multi_user/multi_user_util.h"
#include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h"
-#include "ui/aura/window.h"
#include "ui/message_center/message_center.h"
#include "ui/message_center/notifier_settings.h"
MultiUserNotificationBlockerChromeOS::MultiUserNotificationBlockerChromeOS(
message_center::MessageCenter* message_center,
- chrome::MultiUserWindowManager* multi_user_window_manager,
const std::string& initial_user_id)
: NotificationBlocker(message_center),
- multi_user_window_manager_(multi_user_window_manager),
active_user_id_(initial_user_id) {
- UpdateWindowOwners();
- multi_user_window_manager_->AddObserver(this);
}
MultiUserNotificationBlockerChromeOS::~MultiUserNotificationBlockerChromeOS() {
- multi_user_window_manager_->RemoveObserver(this);
-}
-
-void MultiUserNotificationBlockerChromeOS::UpdateWindowOwners() {
- std::set<std::string> new_ids;
- multi_user_window_manager_->GetOwnersOfVisibleWindows(&new_ids);
-
- if (current_user_ids_ != new_ids) {
- current_user_ids_.swap(new_ids);
- NotifyBlockingStateChanged();
- }
}
bool MultiUserNotificationBlockerChromeOS::ShouldShowNotification(
@@ -51,24 +32,7 @@ bool MultiUserNotificationBlockerChromeOS::ShouldShowNotification(
bool MultiUserNotificationBlockerChromeOS::ShouldShowNotificationAsPopup(
const message_center::NotifierId& notifier_id) const {
- return (current_user_ids_.find(notifier_id.profile_id) !=
- current_user_ids_.end()) ||
- ShouldShowNotification(notifier_id);
-}
-
-void MultiUserNotificationBlockerChromeOS::OnOwnerEntryAdded(
- aura::Window* window) {
- UpdateWindowOwners();
-}
-
-void MultiUserNotificationBlockerChromeOS::OnOwnerEntryChanged(
- aura::Window* window) {
- UpdateWindowOwners();
-}
-
-void MultiUserNotificationBlockerChromeOS::OnOwnerEntryRemoved(
- aura::Window* window) {
- UpdateWindowOwners();
+ return ShouldShowNotification(notifier_id);
}
void MultiUserNotificationBlockerChromeOS::ActiveUserChanged(
@@ -84,7 +48,6 @@ void MultiUserNotificationBlockerChromeOS::ActiveUserChanged(
iter->second != message_center()->IsQuietMode()) {
message_center()->SetQuietMode(iter->second);
}
- UpdateWindowOwners();
NotifyBlockingStateChanged();
}
diff --git a/chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos.h b/chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos.h
index a570781..8c812f0 100644
--- a/chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos.h
+++ b/chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos.h
@@ -9,18 +9,15 @@
#include <set>
#include <string>
-#include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h"
#include "ui/message_center/notification_blocker.h"
// A notification blocker for per-profile stream switching. Owned and controlled
// by MultiUserWindowManagerChromeOS.
class MultiUserNotificationBlockerChromeOS
- : public message_center::NotificationBlocker,
- public chrome::MultiUserWindowManager::Observer {
+ : public message_center::NotificationBlocker {
public:
MultiUserNotificationBlockerChromeOS(
message_center::MessageCenter* message_center,
- chrome::MultiUserWindowManager* multi_user_window_manager,
const std::string& initial_user_id);
virtual ~MultiUserNotificationBlockerChromeOS();
@@ -33,23 +30,12 @@ class MultiUserNotificationBlockerChromeOS
virtual bool ShouldShowNotificationAsPopup(
const message_center::NotifierId& notifier_id) const OVERRIDE;
- // chrome::MultiUserWindowManager::Observer overrides:
- virtual void OnOwnerEntryAdded(aura::Window* window) OVERRIDE;
- virtual void OnOwnerEntryChanged(aura::Window* window) OVERRIDE;
- virtual void OnOwnerEntryRemoved(aura::Window* window) OVERRIDE;
-
private:
// Returns true if this blocker is actively working.
bool IsActive() const;
- // Checks the current desktop and update the list of users which owns windows
- // on the current desktop.
- void UpdateWindowOwners();
-
- chrome::MultiUserWindowManager* multi_user_window_manager_; // Weak.
std::string active_user_id_;
std::map<std::string, bool> quiet_modes_;
- std::set<std::string> current_user_ids_;
DISALLOW_COPY_AND_ASSIGN(MultiUserNotificationBlockerChromeOS);
};
diff --git a/chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos_unittest.cc b/chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos_unittest.cc
index 1f73c3d..2d1bc91 100644
--- a/chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos_unittest.cc
+++ b/chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos_unittest.cc
@@ -7,7 +7,6 @@
#include "ash/system/system_notifier.h"
#include "ash/test/ash_test_base.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"
@@ -208,89 +207,3 @@ TEST_F(MultiUserNotificationBlockerChromeOSTest, Basic) {
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 = GetDefaultUserId();
- ash::SessionStateDelegate* delegate =
- ash::Shell::GetInstance()->session_state_delegate();
- std::string u2 = delegate->GetUserID(1);
- std::string u3 = delegate->GetUserID(2);
- 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(0, 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(u1, multi_user_window_manager->GetUserPresentingWindow(w23.get()));
- EXPECT_EQ(0, GetStateChangedCountAndReset());
- EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, u1));
- EXPECT_TRUE(ShouldShowNotificationAsPopup(notifier_id, u2));
- EXPECT_FALSE(ShouldShowNotificationAsPopup(notifier_id, u3));
-}
diff --git a/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.cc b/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.cc
index a8a26cf..d1e344e4 100644
--- a/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.cc
+++ b/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.cc
@@ -210,7 +210,7 @@ MultiUserWindowManagerChromeOS::MultiUserWindowManagerChromeOS(
const std::string& current_user_id)
: current_user_id_(current_user_id),
notification_blocker_(new MultiUserNotificationBlockerChromeOS(
- message_center::MessageCenter::Get(), this, current_user_id)),
+ message_center::MessageCenter::Get(), current_user_id)),
suppress_visibility_changes_(false),
animation_speed_(ANIMATION_SPEED_NORMAL) {
// Add a session state observer to be able to monitor session changes.