| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h" | 5 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h" |
| 6 | 6 |
| 7 #include "apps/shell_window.h" | 7 #include "apps/shell_window.h" |
| 8 #include "apps/shell_window_registry.h" | 8 #include "apps/shell_window_registry.h" |
| 9 #include "ash/ash_switches.h" | 9 #include "ash/ash_switches.h" |
| 10 #include "ash/multi_profile_uma.h" | 10 #include "ash/multi_profile_uma.h" |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 // will add the children but not the owner to the transient children map. | 202 // will add the children but not the owner to the transient children map. |
| 203 AddTransientOwnerRecursive(window, window); | 203 AddTransientOwnerRecursive(window, window); |
| 204 | 204 |
| 205 if (!IsWindowOnDesktopOfUser(window, current_user_id_)) | 205 if (!IsWindowOnDesktopOfUser(window, current_user_id_)) |
| 206 SetWindowVisibility(window, false); | 206 SetWindowVisibility(window, false); |
| 207 } | 207 } |
| 208 | 208 |
| 209 const std::string& MultiUserWindowManagerChromeOS::GetWindowOwner( | 209 const std::string& MultiUserWindowManagerChromeOS::GetWindowOwner( |
| 210 aura::Window* window) { | 210 aura::Window* window) { |
| 211 WindowToEntryMap::iterator it = window_to_entry_.find(window); | 211 WindowToEntryMap::iterator it = window_to_entry_.find(window); |
| 212 return it != window_to_entry_.end() ? it->second->owner() : EmptyString(); | 212 return it != window_to_entry_.end() ? it->second->owner() |
| 213 : base::EmptyString(); |
| 213 } | 214 } |
| 214 | 215 |
| 215 void MultiUserWindowManagerChromeOS::ShowWindowForUser( | 216 void MultiUserWindowManagerChromeOS::ShowWindowForUser( |
| 216 aura::Window* window, | 217 aura::Window* window, |
| 217 const std::string& user_id) { | 218 const std::string& user_id) { |
| 218 // If there is either no owner, or the owner is the current user, no action | 219 // If there is either no owner, or the owner is the current user, no action |
| 219 // is required. | 220 // is required. |
| 220 const std::string& owner = GetWindowOwner(window); | 221 const std::string& owner = GetWindowOwner(window); |
| 221 if (owner.empty() || | 222 if (owner.empty() || |
| 222 (owner == user_id && IsWindowOnDesktopOfUser(window, user_id))) | 223 (owner == user_id && IsWindowOnDesktopOfUser(window, user_id))) |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 const std::string& presenting_user = GetUserPresentingWindow(window); | 258 const std::string& presenting_user = GetUserPresentingWindow(window); |
| 258 return presenting_user.empty() || presenting_user == user_id; | 259 return presenting_user.empty() || presenting_user == user_id; |
| 259 } | 260 } |
| 260 | 261 |
| 261 const std::string& MultiUserWindowManagerChromeOS::GetUserPresentingWindow( | 262 const std::string& MultiUserWindowManagerChromeOS::GetUserPresentingWindow( |
| 262 aura::Window* window) { | 263 aura::Window* window) { |
| 263 WindowToEntryMap::iterator it = window_to_entry_.find(window); | 264 WindowToEntryMap::iterator it = window_to_entry_.find(window); |
| 264 // If the window is not owned by anyone it is shown on all desktops and we | 265 // If the window is not owned by anyone it is shown on all desktops and we |
| 265 // return the empty string. | 266 // return the empty string. |
| 266 if (it == window_to_entry_.end()) | 267 if (it == window_to_entry_.end()) |
| 267 return EmptyString(); | 268 return base::EmptyString(); |
| 268 // Otherwise we ask the object for its desktop. | 269 // Otherwise we ask the object for its desktop. |
| 269 return it->second->show_for_user(); | 270 return it->second->show_for_user(); |
| 270 } | 271 } |
| 271 | 272 |
| 272 void MultiUserWindowManagerChromeOS::AddUser(Profile* profile) { | 273 void MultiUserWindowManagerChromeOS::AddUser(Profile* profile) { |
| 273 const std::string& user_id = multi_user_util::GetUserIDFromProfile(profile); | 274 const std::string& user_id = multi_user_util::GetUserIDFromProfile(profile); |
| 274 if (user_id_to_app_observer_.find(user_id) != user_id_to_app_observer_.end()) | 275 if (user_id_to_app_observer_.find(user_id) != user_id_to_app_observer_.end()) |
| 275 return; | 276 return; |
| 276 | 277 |
| 277 user_id_to_app_observer_[user_id] = new AppObserver(user_id); | 278 user_id_to_app_observer_[user_id] = new AppObserver(user_id); |
| (...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 584 // To prevent these commands from being recorded as any other commands, we | 585 // To prevent these commands from being recorded as any other commands, we |
| 585 // are suppressing any window entry changes while this is going on. | 586 // are suppressing any window entry changes while this is going on. |
| 586 // Instead of calling SetWindowVisible, only show gets called here since all | 587 // Instead of calling SetWindowVisible, only show gets called here since all |
| 587 // dependents have been shown previously already. | 588 // dependents have been shown previously already. |
| 588 base::AutoReset<bool> suppressor(&suppress_visibility_changes_, true); | 589 base::AutoReset<bool> suppressor(&suppress_visibility_changes_, true); |
| 589 window->Show(); | 590 window->Show(); |
| 590 } | 591 } |
| 591 } | 592 } |
| 592 | 593 |
| 593 } // namespace chrome | 594 } // namespace chrome |
| OLD | NEW |