Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Side by Side Diff: chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc

Issue 1165323004: We should use UserID object to identify users instead of username. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/launcher/chrome_launcher_controller.h" 5 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "ash/ash_switches.h" 9 #include "ash/ash_switches.h"
10 #include "ash/desktop_background/desktop_background_controller.h" 10 #include "ash/desktop_background/desktop_background_controller.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 #include "chrome/browser/ui/extensions/extension_enable_flow.h" 60 #include "chrome/browser/ui/extensions/extension_enable_flow.h"
61 #include "chrome/browser/ui/host_desktop.h" 61 #include "chrome/browser/ui/host_desktop.h"
62 #include "chrome/browser/ui/tabs/tab_strip_model.h" 62 #include "chrome/browser/ui/tabs/tab_strip_model.h"
63 #include "chrome/browser/web_applications/web_app.h" 63 #include "chrome/browser/web_applications/web_app.h"
64 #include "chrome/common/chrome_switches.h" 64 #include "chrome/common/chrome_switches.h"
65 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" 65 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
66 #include "chrome/common/pref_names.h" 66 #include "chrome/common/pref_names.h"
67 #include "chrome/common/url_constants.h" 67 #include "chrome/common/url_constants.h"
68 #include "chrome/grit/generated_resources.h" 68 #include "chrome/grit/generated_resources.h"
69 #include "components/favicon/content/content_favicon_driver.h" 69 #include "components/favicon/content/content_favicon_driver.h"
70 #include "components/user_manager/user_id.h"
70 #include "content/public/browser/navigation_entry.h" 71 #include "content/public/browser/navigation_entry.h"
71 #include "content/public/browser/notification_registrar.h" 72 #include "content/public/browser/notification_registrar.h"
72 #include "content/public/browser/notification_service.h" 73 #include "content/public/browser/notification_service.h"
73 #include "content/public/browser/web_contents.h" 74 #include "content/public/browser/web_contents.h"
74 #include "extensions/browser/extension_prefs.h" 75 #include "extensions/browser/extension_prefs.h"
75 #include "extensions/browser/extension_registry.h" 76 #include "extensions/browser/extension_registry.h"
76 #include "extensions/browser/extension_system.h" 77 #include "extensions/browser/extension_system.h"
77 #include "extensions/browser/extension_util.h" 78 #include "extensions/browser/extension_util.h"
78 #include "extensions/common/constants.h" 79 #include "extensions/common/constants.h"
79 #include "extensions/common/extension.h" 80 #include "extensions/common/extension.h"
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 309
309 // The owning ChromeLauncherController. 310 // The owning ChromeLauncherController.
310 ChromeLauncherController* controller_; 311 ChromeLauncherController* controller_;
311 312
312 // The notification registrar to track the Profile creations after a user got 313 // The notification registrar to track the Profile creations after a user got
313 // added to the session (if required). 314 // added to the session (if required).
314 content::NotificationRegistrar registrar_; 315 content::NotificationRegistrar registrar_;
315 316
316 // Users which were just added to the system, but which profiles were not yet 317 // Users which were just added to the system, but which profiles were not yet
317 // (fully) loaded. 318 // (fully) loaded.
318 std::set<std::string> added_user_ids_waiting_for_profiles_; 319 std::set<user_manager::UserID> added_user_ids_waiting_for_profiles_;
319 320
320 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerUserSwitchObserverChromeOS); 321 DISALLOW_COPY_AND_ASSIGN(ChromeLauncherControllerUserSwitchObserverChromeOS);
321 }; 322 };
322 323
323 void ChromeLauncherControllerUserSwitchObserverChromeOS::UserAddedToSession( 324 void ChromeLauncherControllerUserSwitchObserverChromeOS::UserAddedToSession(
324 const user_manager::User* active_user) { 325 const user_manager::User* active_user) {
325 Profile* profile = multi_user_util::GetProfileFromUserID( 326 Profile* profile = multi_user_util::GetProfileFromUserID(
326 active_user->email()); 327 active_user->GetUserID());
327 // If we do not have a profile yet, we postpone forwarding the notification 328 // If we do not have a profile yet, we postpone forwarding the notification
328 // until it is loaded. 329 // until it is loaded.
329 if (!profile) 330 if (!profile)
330 added_user_ids_waiting_for_profiles_.insert(active_user->email()); 331 added_user_ids_waiting_for_profiles_.insert(active_user->GetUserID());
331 else 332 else
332 AddUser(profile); 333 AddUser(profile);
333 } 334 }
334 335
335 void ChromeLauncherControllerUserSwitchObserverChromeOS::Observe( 336 void ChromeLauncherControllerUserSwitchObserverChromeOS::Observe(
336 int type, 337 int type,
337 const content::NotificationSource& source, 338 const content::NotificationSource& source,
338 const content::NotificationDetails& details) { 339 const content::NotificationDetails& details) {
339 if (type == chrome::NOTIFICATION_PROFILE_ADDED && 340 if (type == chrome::NOTIFICATION_PROFILE_ADDED &&
340 !added_user_ids_waiting_for_profiles_.empty()) { 341 !added_user_ids_waiting_for_profiles_.empty()) {
341 // Check if the profile is from a user which was on the waiting list. 342 // Check if the profile is from a user which was on the waiting list.
342 Profile* profile = content::Source<Profile>(source).ptr(); 343 Profile* profile = content::Source<Profile>(source).ptr();
343 std::string user_id = multi_user_util::GetUserIDFromProfile(profile); 344 user_manager::UserID user_id = multi_user_util::GetUserIDFromProfile(profile );
344 std::set<std::string>::iterator it = std::find( 345 std::set<user_manager::UserID>::iterator it = std::find(
345 added_user_ids_waiting_for_profiles_.begin(), 346 added_user_ids_waiting_for_profiles_.begin(),
346 added_user_ids_waiting_for_profiles_.end(), 347 added_user_ids_waiting_for_profiles_.end(),
347 user_id); 348 user_id);
348 if (it != added_user_ids_waiting_for_profiles_.end()) { 349 if (it != added_user_ids_waiting_for_profiles_.end()) {
349 added_user_ids_waiting_for_profiles_.erase(it); 350 added_user_ids_waiting_for_profiles_.erase(it);
350 AddUser(profile->GetOriginalProfile()); 351 AddUser(profile->GetOriginalProfile());
351 } 352 }
352 } 353 }
353 } 354 }
354 355
(...skipping 738 matching lines...) Expand 10 before | Expand all | Expand 10 after
1093 1094
1094 ash::ShelfItemDelegate::PerformedAction 1095 ash::ShelfItemDelegate::PerformedAction
1095 ChromeLauncherController::ActivateWindowOrMinimizeIfActive( 1096 ChromeLauncherController::ActivateWindowOrMinimizeIfActive(
1096 ui::BaseWindow* window, 1097 ui::BaseWindow* window,
1097 bool allow_minimize) { 1098 bool allow_minimize) {
1098 // In separated desktop mode we might have to teleport a window back to the 1099 // In separated desktop mode we might have to teleport a window back to the
1099 // current user. 1100 // current user.
1100 if (chrome::MultiUserWindowManager::GetMultiProfileMode() == 1101 if (chrome::MultiUserWindowManager::GetMultiProfileMode() ==
1101 chrome::MultiUserWindowManager::MULTI_PROFILE_MODE_SEPARATED) { 1102 chrome::MultiUserWindowManager::MULTI_PROFILE_MODE_SEPARATED) {
1102 aura::Window* native_window = window->GetNativeWindow(); 1103 aura::Window* native_window = window->GetNativeWindow();
1103 const std::string& current_user = 1104 const user_manager::UserID& current_user =
1104 multi_user_util::GetUserIDFromProfile(profile()); 1105 multi_user_util::GetUserIDFromProfile(profile());
1105 chrome::MultiUserWindowManager* manager = 1106 chrome::MultiUserWindowManager* manager =
1106 chrome::MultiUserWindowManager::GetInstance(); 1107 chrome::MultiUserWindowManager::GetInstance();
1107 if (!manager->IsWindowOnDesktopOfUser(native_window, current_user)) { 1108 if (!manager->IsWindowOnDesktopOfUser(native_window, current_user)) {
1108 ash::MultiProfileUMA::RecordTeleportAction( 1109 ash::MultiProfileUMA::RecordTeleportAction(
1109 ash::MultiProfileUMA::TELEPORT_WINDOW_RETURN_BY_LAUNCHER); 1110 ash::MultiProfileUMA::TELEPORT_WINDOW_RETURN_BY_LAUNCHER);
1110 manager->ShowWindowForUser(native_window, current_user); 1111 manager->ShowWindowForUser(native_window, current_user);
1111 window->Activate(); 1112 window->Activate();
1112 return ash::ShelfItemDelegate::kExistingWindowActivated; 1113 return ash::ShelfItemDelegate::kExistingWindowActivated;
1113 } 1114 }
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1173 1174
1174 void ChromeLauncherController::ShelfItemChanged( 1175 void ChromeLauncherController::ShelfItemChanged(
1175 int index, 1176 int index,
1176 const ash::ShelfItem& old_item) { 1177 const ash::ShelfItem& old_item) {
1177 } 1178 }
1178 1179
1179 void ChromeLauncherController::ShelfStatusChanged() { 1180 void ChromeLauncherController::ShelfStatusChanged() {
1180 } 1181 }
1181 1182
1182 void ChromeLauncherController::ActiveUserChanged( 1183 void ChromeLauncherController::ActiveUserChanged(
1183 const std::string& user_email) { 1184 const user_manager::UserID& user_id) {
1184 // Store the order of running applications for the user which gets inactive. 1185 // Store the order of running applications for the user which gets inactive.
1185 RememberUnpinnedRunningApplicationOrder(); 1186 RememberUnpinnedRunningApplicationOrder();
1186 // Coming here the default profile is already switched. All profile specific 1187 // Coming here the default profile is already switched. All profile specific
1187 // resources get released and the new profile gets attached instead. 1188 // resources get released and the new profile gets attached instead.
1188 ReleaseProfile(); 1189 ReleaseProfile();
1189 // When coming here, the active user has already be changed so that we can 1190 // When coming here, the active user has already be changed so that we can
1190 // set it as active. 1191 // set it as active.
1191 AttachProfile(ProfileManager::GetActiveUserProfile()); 1192 AttachProfile(ProfileManager::GetActiveUserProfile());
1192 // Update the V1 applications. 1193 // Update the V1 applications.
1193 browser_status_monitor_->ActiveUserChanged(user_email); 1194 browser_status_monitor_->ActiveUserChanged(user_id);
1194 // Switch the running applications to the new user. 1195 // Switch the running applications to the new user.
1195 app_window_controller_->ActiveUserChanged(user_email); 1196 app_window_controller_->ActiveUserChanged(user_id);
1196 // Update the user specific shell properties from the new user profile. 1197 // Update the user specific shell properties from the new user profile.
1197 UpdateAppLaunchersFromPref(); 1198 UpdateAppLaunchersFromPref();
1198 SetShelfAlignmentFromPrefs(); 1199 SetShelfAlignmentFromPrefs();
1199 SetShelfAutoHideBehaviorFromPrefs(); 1200 SetShelfAutoHideBehaviorFromPrefs();
1200 SetShelfBehaviorsFromPrefs(); 1201 SetShelfBehaviorsFromPrefs();
1201 #if defined(OS_CHROMEOS) 1202 #if defined(OS_CHROMEOS)
1202 SetVirtualKeyboardBehaviorFromPrefs(); 1203 SetVirtualKeyboardBehaviorFromPrefs();
1203 #endif // defined(OS_CHROMEOS) 1204 #endif // defined(OS_CHROMEOS)
1204 // Restore the order of running, but unpinned applications for the activated 1205 // Restore the order of running, but unpinned applications for the activated
1205 // user. 1206 // user.
1206 RestoreUnpinnedRunningApplicationOrder(user_email); 1207 RestoreUnpinnedRunningApplicationOrder(user_id);
1207 // Inform the system tray of the change. 1208 // Inform the system tray of the change.
1208 ash::Shell::GetInstance()->system_tray_delegate()->ActiveUserWasChanged(); 1209 ash::Shell::GetInstance()->system_tray_delegate()->ActiveUserWasChanged();
1209 // Force on-screen keyboard to reset. 1210 // Force on-screen keyboard to reset.
1210 if (keyboard::IsKeyboardEnabled()) 1211 if (keyboard::IsKeyboardEnabled())
1211 ash::Shell::GetInstance()->CreateKeyboard(); 1212 ash::Shell::GetInstance()->CreateKeyboard();
1212 } 1213 }
1213 1214
1214 void ChromeLauncherController::AdditionalUserAddedToSession(Profile* profile) { 1215 void ChromeLauncherController::AdditionalUserAddedToSession(Profile* profile) {
1215 // Switch the running applications to the new user. 1216 // Switch the running applications to the new user.
1216 app_window_controller_->AdditionalUserAddedToSession(profile); 1217 app_window_controller_->AdditionalUserAddedToSession(profile);
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
1446 for (int i = 0; i < model_->item_count(); i++) { 1447 for (int i = 0; i < model_->item_count(); i++) {
1447 ash::ShelfItemType type = model_->items()[i].type; 1448 ash::ShelfItemType type = model_->items()[i].type;
1448 if (type == ash::TYPE_WINDOWED_APP || type == ash::TYPE_PLATFORM_APP) 1449 if (type == ash::TYPE_WINDOWED_APP || type == ash::TYPE_PLATFORM_APP)
1449 list.push_back(GetAppIDForShelfID(model_->items()[i].id)); 1450 list.push_back(GetAppIDForShelfID(model_->items()[i].id));
1450 } 1451 }
1451 last_used_running_application_order_[ 1452 last_used_running_application_order_[
1452 multi_user_util::GetUserIDFromProfile(profile_)] = list; 1453 multi_user_util::GetUserIDFromProfile(profile_)] = list;
1453 } 1454 }
1454 1455
1455 void ChromeLauncherController::RestoreUnpinnedRunningApplicationOrder( 1456 void ChromeLauncherController::RestoreUnpinnedRunningApplicationOrder(
1456 const std::string& user_id) { 1457 const user_manager::UserID& user_id) {
1457 const RunningAppListIdMap::iterator app_id_list = 1458 const RunningAppListIdMap::iterator app_id_list =
1458 last_used_running_application_order_.find(user_id); 1459 last_used_running_application_order_.find(user_id);
1459 if (app_id_list == last_used_running_application_order_.end()) 1460 if (app_id_list == last_used_running_application_order_.end())
1460 return; 1461 return;
1461 1462
1462 // Find the first insertion point for running applications. 1463 // Find the first insertion point for running applications.
1463 int running_index = model_->FirstRunningAppIndex(); 1464 int running_index = model_->FirstRunningAppIndex();
1464 for (RunningAppListIds::iterator app_id = app_id_list->second.begin(); 1465 for (RunningAppListIds::iterator app_id = app_id_list->second.begin();
1465 app_id != app_id_list->second.end(); ++app_id) { 1466 app_id != app_id_list->second.end(); ++app_id) {
1466 ash::ShelfID shelf_id = GetShelfIDForAppID(*app_id); 1467 ash::ShelfID shelf_id = GetShelfIDForAppID(*app_id);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1499 // If running multi user mode with separate desktops, we have to check if the 1500 // If running multi user mode with separate desktops, we have to check if the
1500 // browser is from the active user. 1501 // browser is from the active user.
1501 if (chrome::MultiUserWindowManager::GetMultiProfileMode() != 1502 if (chrome::MultiUserWindowManager::GetMultiProfileMode() !=
1502 chrome::MultiUserWindowManager::MULTI_PROFILE_MODE_SEPARATED) 1503 chrome::MultiUserWindowManager::MULTI_PROFILE_MODE_SEPARATED)
1503 return true; 1504 return true;
1504 return multi_user_util::IsProfileFromActiveUser(browser->profile()); 1505 return multi_user_util::IsProfileFromActiveUser(browser->profile());
1505 } 1506 }
1506 1507
1507 bool ChromeLauncherController::ShelfBoundsChangesProbablyWithUser( 1508 bool ChromeLauncherController::ShelfBoundsChangesProbablyWithUser(
1508 aura::Window* root_window, 1509 aura::Window* root_window,
1509 const std::string& user_id) const { 1510 const user_manager::UserID& user_id) const {
1510 Profile* other_profile = multi_user_util::GetProfileFromUserID(user_id); 1511 Profile* other_profile = multi_user_util::GetProfileFromUserID(user_id);
1511 DCHECK_NE(other_profile, profile_); 1512 DCHECK_NE(other_profile, profile_);
1512 1513
1513 // Note: The Auto hide state from preferences is not the same as the actual 1514 // Note: The Auto hide state from preferences is not the same as the actual
1514 // visibility of the shelf. Depending on all the various states (full screen, 1515 // visibility of the shelf. Depending on all the various states (full screen,
1515 // no window on desktop, multi user, ..) the shelf could be shown - or not. 1516 // no window on desktop, multi user, ..) the shelf could be shown - or not.
1516 bool currently_shown = ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER == 1517 bool currently_shown = ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER ==
1517 GetShelfAutoHideBehaviorFromPrefs(profile_, root_window); 1518 GetShelfAutoHideBehaviorFromPrefs(profile_, root_window);
1518 bool other_shown = ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER == 1519 bool other_shown = ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER ==
1519 GetShelfAutoHideBehaviorFromPrefs(other_profile, root_window); 1520 GetShelfAutoHideBehaviorFromPrefs(other_profile, root_window);
(...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after
2139 void ChromeLauncherController::ReleaseProfile() { 2140 void ChromeLauncherController::ReleaseProfile() {
2140 if (app_sync_ui_state_) 2141 if (app_sync_ui_state_)
2141 app_sync_ui_state_->RemoveObserver(this); 2142 app_sync_ui_state_->RemoveObserver(this);
2142 2143
2143 extensions::ExtensionRegistry::Get(profile_)->RemoveObserver(this); 2144 extensions::ExtensionRegistry::Get(profile_)->RemoveObserver(this);
2144 2145
2145 PrefServiceSyncable::FromProfile(profile_)->RemoveObserver(this); 2146 PrefServiceSyncable::FromProfile(profile_)->RemoveObserver(this);
2146 2147
2147 pref_change_registrar_.RemoveAll(); 2148 pref_change_registrar_.RemoveAll();
2148 } 2149 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698