Index: chrome/browser/ui/ash/launcher/chrome_launcher_app_menu_item_tab.cc |
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_app_menu_item_tab.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_app_menu_item_tab.cc |
index b1ce6d6d3ca34b2ca2e68cbeb8a3693ee46ed11f..11ae08ef671499f450dbfa442074bd3f1cdf473e 100644 |
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_app_menu_item_tab.cc |
+++ b/chrome/browser/ui/ash/launcher/chrome_launcher_app_menu_item_tab.cc |
@@ -11,6 +11,10 @@ |
#include "chrome/browser/ui/tabs/tab_strip_model.h" |
#include "ui/events/event_constants.h" |
+#if defined(OS_CHROMEOS) |
+#include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h" |
+#endif |
+ |
ChromeLauncherAppMenuItemTab::ChromeLauncherAppMenuItemTab( |
const base::string16 title, |
const gfx::Image* icon, |
@@ -43,6 +47,20 @@ void ChromeLauncherAppMenuItemTab::Execute(int event_flags) { |
if (event_flags & (ui::EF_SHIFT_DOWN | ui::EF_MIDDLE_MOUSE_BUTTON)) { |
tab_strip->CloseWebContentsAt(index, TabStripModel::CLOSE_USER_GESTURE); |
} else { |
+#if defined(OS_CHROMEOS) |
+ // In multiprofile scenario we might need to teleport the window back to |
+ // the current user desktop. |
+ if (chrome::MultiUserWindowManager::GetMultiProfileMode() == |
+ chrome::MultiUserWindowManager::MULTI_PROFILE_MODE_SEPARATED) { |
+ aura::Window* window = browser->window()->GetNativeWindow(); |
+ chrome::MultiUserWindowManager* window_manager = |
+ chrome::MultiUserWindowManager::GetInstance(); |
+ if (!window_manager->IsWindowOnDesktopOfUser( |
+ window, window_manager->GetWindowOwner(window))) |
Mr4D (OOO till 08-26)
2015/05/03 19:53:45
You need to add {} around this since it's more the
|
+ window_manager->ShowWindowForUser( |
+ window, window_manager->GetWindowOwner(window)); |
+ } |
+#endif |
tab_strip->ActivateTabAt(index, false); |
browser->window()->Show(); |
// Need this check to prevent unit tests from crashing. |