Chromium Code Reviews| Index: chrome/browser/ui/ash/launcher/shell_window_launcher_controller.cc |
| diff --git a/chrome/browser/ui/ash/launcher/shell_window_launcher_controller.cc b/chrome/browser/ui/ash/launcher/shell_window_launcher_controller.cc |
| index 6ebf06107cc58961c0315ea5f18771bb0de307fc..d7915a8130e5ecb9953adf98d6fa4a5d7e6976f2 100644 |
| --- a/chrome/browser/ui/ash/launcher/shell_window_launcher_controller.cc |
| +++ b/chrome/browser/ui/ash/launcher/shell_window_launcher_controller.cc |
| @@ -15,6 +15,10 @@ |
| #include "ui/aura/client/activation_client.h" |
| #include "ui/aura/root_window.h" |
| +#if defined(OS_CHROMEOS) |
| +#include "chrome/browser/ui/ash/multi_user_window_manager.h" |
| +#endif |
| + |
| using apps::ShellWindow; |
| namespace { |
| @@ -35,9 +39,11 @@ bool ControlsWindow(aura::Window* window) { |
| ShellWindowLauncherController::ShellWindowLauncherController( |
| ChromeLauncherController* owner) |
| : owner_(owner), |
| - registry_(apps::ShellWindowRegistry::Get(owner->profile())), |
| activation_client_(NULL) { |
| - registry_->AddObserver(this); |
| + apps::ShellWindowRegistry* registry = |
| + apps::ShellWindowRegistry::Get(owner->profile()); |
| + registry_.insert(registry); |
| + registry->AddObserver(this); |
| if (ash::Shell::HasInstance()) { |
| if (ash::Shell::GetInstance()->GetPrimaryRootWindow()) { |
| activation_client_ = aura::client::GetActivationClient( |
| @@ -49,7 +55,10 @@ ShellWindowLauncherController::ShellWindowLauncherController( |
| } |
| ShellWindowLauncherController::~ShellWindowLauncherController() { |
| - registry_->RemoveObserver(this); |
| + for (std::set<apps::ShellWindowRegistry*>::iterator it = registry_.begin(); |
| + it != registry_.end(); ++it) |
| + (*it)->RemoveObserver(this); |
| + |
| if (activation_client_) |
| activation_client_->RemoveObserver(this); |
| for (WindowToAppLauncherIdMap::iterator iter = |
| @@ -59,6 +68,24 @@ ShellWindowLauncherController::~ShellWindowLauncherController() { |
| } |
| } |
| +void ShellWindowLauncherController::AdditionalUserAddedToSession( |
| + Profile* profile) { |
| +#if defined(OS_CHROMEOS) |
| + // TODO(skuhne): This was added for the legacy side by side mode in M32. If |
| + // this mode gets no longer persued this special case can be removed. |
|
Daniel Erat
2013/11/04 20:16:22
nit: s/persued/pursued/
Mr4D (OOO till 08-26)
2013/11/04 20:21:10
Done.
|
| + if (chrome::MultiUserWindowManager::GetMultiProfileMode() != |
| + chrome::MultiUserWindowManager::MULTI_PROFILE_MODE_MIXED) |
| + return; |
| + |
| + apps::ShellWindowRegistry* registry = apps::ShellWindowRegistry::Get(profile); |
| + if (registry_.find(registry) != registry_.end()) |
| + return; |
| + |
| + registry->AddObserver(this); |
| + registry_.insert(registry); |
| +#endif |
| +} |
| + |
| void ShellWindowLauncherController::OnShellWindowAdded( |
| ShellWindow* shell_window) { |
| if (!ControlsWindow(shell_window->GetNativeWindow())) |