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

Side by Side Diff: chrome/browser/ui/ash/multi_user/multi_user_util.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/multi_user/multi_user_util.h" 5 #include "chrome/browser/ui/ash/multi_user/multi_user_util.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
11 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/browser/profiles/profile_manager.h" 12 #include "chrome/browser/profiles/profile_manager.h"
13 #include "components/user_manager/user_id.h"
13 #include "google_apis/gaia/gaia_auth_util.h" 14 #include "google_apis/gaia/gaia_auth_util.h"
14 15
15 #if defined(OS_CHROMEOS) 16 #if defined(OS_CHROMEOS)
16 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h" 17 #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h"
17 #include "components/user_manager/user_manager.h" 18 #include "components/user_manager/user_manager.h"
18 #endif 19 #endif
19 20
20 namespace multi_user_util { 21 namespace multi_user_util {
21 22
22 std::string GetUserIDFromProfile(Profile* profile) { 23 user_manager::UserID GetUserIDFromProfile(Profile* profile) {
23 return GetUserIDFromEmail( 24 return GetUserIDFromEmail(
24 profile->GetOriginalProfile()->GetProfileUserName()); 25 profile->GetOriginalProfile()->GetProfileUserName());
25 } 26 }
26 27
27 std::string GetUserIDFromEmail(const std::string& email) { 28 user_manager::UserID GetUserIDFromEmail(const std::string& email) {
28 // |email| and profile name could be empty if not yet logged in or guest mode. 29 // |email| and profile name could be empty if not yet logged in or guest mode.
29 return email.empty() ? 30 return user_manager::UserID::FromUserEmail(email.empty() ?
30 email : gaia::CanonicalizeEmail(gaia::SanitizeEmail(email)); 31 email : gaia::CanonicalizeEmail(gaia::SanitizeEmail(email)));
31 } 32 }
32 33
33 Profile* GetProfileFromUserID(const std::string& user_id) { 34 Profile* GetProfileFromUserID(const user_manager::UserID& user_id) {
34 // Unit tests can end up here without a |g_browser_process|. 35 // Unit tests can end up here without a |g_browser_process|.
35 if (!g_browser_process || !g_browser_process->profile_manager()) 36 if (!g_browser_process || !g_browser_process->profile_manager())
36 return NULL; 37 return NULL;
37 38
38 std::vector<Profile*> profiles = 39 std::vector<Profile*> profiles =
39 g_browser_process->profile_manager()->GetLoadedProfiles(); 40 g_browser_process->profile_manager()->GetLoadedProfiles();
40 41
41 std::vector<Profile*>::const_iterator profile_iterator = profiles.begin(); 42 std::vector<Profile*>::const_iterator profile_iterator = profiles.begin();
42 for (; profile_iterator != profiles.end(); ++profile_iterator) { 43 for (; profile_iterator != profiles.end(); ++profile_iterator) {
43 if (GetUserIDFromProfile(*profile_iterator) == user_id) 44 if (GetUserIDFromProfile(*profile_iterator) == user_id)
44 return *profile_iterator; 45 return *profile_iterator;
45 } 46 }
46 return NULL; 47 return NULL;
47 } 48 }
48 49
49 Profile* GetProfileFromWindow(aura::Window* window) { 50 Profile* GetProfileFromWindow(aura::Window* window) {
50 #if defined(OS_CHROMEOS) 51 #if defined(OS_CHROMEOS)
51 chrome::MultiUserWindowManager* manager = 52 chrome::MultiUserWindowManager* manager =
52 chrome::MultiUserWindowManager::GetInstance(); 53 chrome::MultiUserWindowManager::GetInstance();
53 // We might come here before the manager got created - or in a unit test. 54 // We might come here before the manager got created - or in a unit test.
54 if (!manager) 55 if (!manager)
55 return NULL; 56 return NULL;
56 const std::string user_id = manager->GetUserPresentingWindow(window); 57 const user_manager::UserID user_id = manager->GetUserPresentingWindow(window);
57 return user_id.empty() ? NULL : 58 return user_id.empty() ? NULL :
58 multi_user_util::GetProfileFromUserID(user_id); 59 multi_user_util::GetProfileFromUserID(user_id);
59 #else 60 #else
60 return NULL; 61 return NULL;
61 #endif 62 #endif
62 } 63 }
63 64
64 bool IsProfileFromActiveUser(Profile* profile) { 65 bool IsProfileFromActiveUser(Profile* profile) {
65 #if defined(OS_CHROMEOS) 66 #if defined(OS_CHROMEOS)
66 return GetUserIDFromProfile(profile) == 67 return GetUserIDFromProfile(profile) ==
67 user_manager::UserManager::Get()->GetActiveUser()->email(); 68 user_manager::UserManager::Get()->GetActiveUser()->GetUserID();
68 #else 69 #else
69 // In non Chrome OS configurations this will be always true since this only 70 // In non Chrome OS configurations this will be always true since this only
70 // makes sense in separate desktop mode. 71 // makes sense in separate desktop mode.
71 return true; 72 return true;
72 #endif 73 #endif
73 } 74 }
74 75
75 const std::string& GetCurrentUserId() { 76 const user_manager::UserID& GetCurrentUserId() {
76 #if defined(OS_CHROMEOS) 77 #if defined(OS_CHROMEOS)
77 return user_manager::UserManager::Get()->GetActiveUser()->email(); 78 return user_manager::UserManager::Get()->GetActiveUser()->GetUserID();
78 #else 79 #else
79 return base::EmptyString(); 80 return user_manager::UserID(std::string(), std::string());
80 #endif 81 #endif
81 } 82 }
82 83
83 // Move the window to the current user's desktop. 84 // Move the window to the current user's desktop.
84 void MoveWindowToCurrentDesktop(aura::Window* window) { 85 void MoveWindowToCurrentDesktop(aura::Window* window) {
85 #if defined(OS_CHROMEOS) 86 #if defined(OS_CHROMEOS)
86 chrome::MultiUserWindowManager::GetInstance()->ShowWindowForUser( 87 chrome::MultiUserWindowManager::GetInstance()->ShowWindowForUser(
87 window, 88 window,
88 GetCurrentUserId()); 89 GetCurrentUserId());
89 #endif 90 #endif
90 } 91 }
91 92
92 } // namespace multi_user_util 93 } // namespace multi_user_util
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698