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

Side by Side Diff: chrome/browser/ui/webui/options/create_profile_handler.cc

Issue 316863002: Rename "managed (mode|user)" to "supervised user" (part 1) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 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 | Annotate | Revision Log
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/webui/options/create_profile_handler.h" 5 #include "chrome/browser/ui/webui/options/create_profile_handler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 "cancelCreateProfile", 47 "cancelCreateProfile",
48 base::Bind(&CreateProfileHandler::HandleCancelProfileCreation, 48 base::Bind(&CreateProfileHandler::HandleCancelProfileCreation,
49 base::Unretained(this))); 49 base::Unretained(this)));
50 web_ui()->RegisterMessageCallback( 50 web_ui()->RegisterMessageCallback(
51 "createProfile", 51 "createProfile",
52 base::Bind(&CreateProfileHandler::CreateProfile, 52 base::Bind(&CreateProfileHandler::CreateProfile,
53 base::Unretained(this))); 53 base::Unretained(this)));
54 } 54 }
55 55
56 void CreateProfileHandler::CreateProfile(const base::ListValue* args) { 56 void CreateProfileHandler::CreateProfile(const base::ListValue* args) {
57 // This handler could have been called in managed mode, for example because 57 // This handler could have been called for a supervised user, for example
58 // the user fiddled with the web inspector. Silently return in this case. 58 // because the user fiddled with the web inspector. Silently return in this
59 // case.
59 Profile* current_profile = Profile::FromWebUI(web_ui()); 60 Profile* current_profile = Profile::FromWebUI(web_ui());
60 if (current_profile->IsManaged()) 61 if (current_profile->IsSupervised())
61 return; 62 return;
62 63
63 if (!profiles::IsMultipleProfilesEnabled()) 64 if (!profiles::IsMultipleProfilesEnabled())
64 return; 65 return;
65 66
66 // We can have only one in progress profile creation 67 // We can have only one in progress profile creation
67 // at any given moment, if new ones are initiated just 68 // at any given moment, if new ones are initiated just
68 // ignore them until we are done with the old one. 69 // ignore them until we are done with the old one.
69 if (profile_creation_type_ != NO_CREATION_IN_PROGRESS) 70 if (profile_creation_type_ != NO_CREATION_IN_PROGRESS)
70 return; 71 return;
71 72
72 profile_creation_type_ = NON_SUPERVISED_PROFILE_CREATION; 73 profile_creation_type_ = NON_SUPERVISED_PROFILE_CREATION;
73 74
74 DCHECK(profile_path_being_created_.empty()); 75 DCHECK(profile_path_being_created_.empty());
75 profile_creation_start_time_ = base::TimeTicks::Now(); 76 profile_creation_start_time_ = base::TimeTicks::Now();
76 77
77 base::string16 name; 78 base::string16 name;
78 base::string16 icon; 79 base::string16 icon;
79 std::string managed_user_id; 80 std::string supervised_user_id;
80 bool create_shortcut = false; 81 bool create_shortcut = false;
81 bool managed_user = false; 82 bool supervised_user = false;
82 if (args->GetString(0, &name) && args->GetString(1, &icon)) { 83 if (args->GetString(0, &name) && args->GetString(1, &icon)) {
83 if (args->GetBoolean(2, &create_shortcut)) { 84 if (args->GetBoolean(2, &create_shortcut)) {
84 bool success = args->GetBoolean(3, &managed_user); 85 bool success = args->GetBoolean(3, &supervised_user);
85 DCHECK(success); 86 DCHECK(success);
86 success = args->GetString(4, &managed_user_id); 87 success = args->GetString(4, &supervised_user_id);
87 DCHECK(success); 88 DCHECK(success);
88 } 89 }
89 } 90 }
90 91
91 if (managed_user) { 92 if (supervised_user) {
92 if (!IsValidExistingManagedUserId(managed_user_id)) 93 if (!IsValidExistingSupervisedUserId(supervised_user_id))
93 return; 94 return;
94 95
95 profile_creation_type_ = SUPERVISED_PROFILE_IMPORT; 96 profile_creation_type_ = SUPERVISED_PROFILE_IMPORT;
96 if (managed_user_id.empty()) { 97 if (supervised_user_id.empty()) {
97 profile_creation_type_ = SUPERVISED_PROFILE_CREATION; 98 profile_creation_type_ = SUPERVISED_PROFILE_CREATION;
98 managed_user_id = 99 supervised_user_id =
99 ManagedUserRegistrationUtility::GenerateNewManagedUserId(); 100 ManagedUserRegistrationUtility::GenerateNewManagedUserId();
100 101
101 // If sync is not yet fully initialized, the creation may take extra time, 102 // If sync is not yet fully initialized, the creation may take extra time,
102 // so show a message. Import doesn't wait for an acknowledgement, so it 103 // so show a message. Import doesn't wait for an acknowledgement, so it
103 // won't have the same potential delay. 104 // won't have the same potential delay.
104 ProfileSyncService* sync_service = 105 ProfileSyncService* sync_service =
105 ProfileSyncServiceFactory::GetInstance()->GetForProfile( 106 ProfileSyncServiceFactory::GetInstance()->GetForProfile(
106 current_profile); 107 current_profile);
107 ProfileSyncService::SyncStatusSummary status = 108 ProfileSyncService::SyncStatusSummary status =
108 sync_service->QuerySyncStatusSummary(); 109 sync_service->QuerySyncStatusSummary();
109 if (status == ProfileSyncService::DATATYPES_NOT_INITIALIZED) { 110 if (status == ProfileSyncService::DATATYPES_NOT_INITIALIZED) {
110 ShowProfileCreationWarning(l10n_util::GetStringUTF16( 111 ShowProfileCreationWarning(l10n_util::GetStringUTF16(
111 IDS_PROFILES_CREATE_MANAGED_JUST_SIGNED_IN)); 112 IDS_PROFILES_CREATE_MANAGED_JUST_SIGNED_IN));
112 } 113 }
113 } 114 }
114 } 115 }
115 116
116 ProfileMetrics::LogProfileAddNewUser(ProfileMetrics::ADD_NEW_USER_DIALOG); 117 ProfileMetrics::LogProfileAddNewUser(ProfileMetrics::ADD_NEW_USER_DIALOG);
117 118
118 profile_path_being_created_ = ProfileManager::CreateMultiProfileAsync( 119 profile_path_being_created_ = ProfileManager::CreateMultiProfileAsync(
119 name, icon, 120 name, icon,
120 base::Bind(&CreateProfileHandler::OnProfileCreated, 121 base::Bind(&CreateProfileHandler::OnProfileCreated,
121 weak_ptr_factory_.GetWeakPtr(), 122 weak_ptr_factory_.GetWeakPtr(),
122 create_shortcut, 123 create_shortcut,
123 helper::GetDesktopType(web_ui()), 124 helper::GetDesktopType(web_ui()),
124 managed_user_id), 125 supervised_user_id),
125 managed_user_id); 126 supervised_user_id);
126 } 127 }
127 128
128 void CreateProfileHandler::OnProfileCreated( 129 void CreateProfileHandler::OnProfileCreated(
129 bool create_shortcut, 130 bool create_shortcut,
130 chrome::HostDesktopType desktop_type, 131 chrome::HostDesktopType desktop_type,
131 const std::string& managed_user_id, 132 const std::string& supervised_user_id,
132 Profile* profile, 133 Profile* profile,
133 Profile::CreateStatus status) { 134 Profile::CreateStatus status) {
134 if (status != Profile::CREATE_STATUS_CREATED) 135 if (status != Profile::CREATE_STATUS_CREATED)
135 RecordProfileCreationMetrics(status); 136 RecordProfileCreationMetrics(status);
136 137
137 switch (status) { 138 switch (status) {
138 case Profile::CREATE_STATUS_LOCAL_FAIL: { 139 case Profile::CREATE_STATUS_LOCAL_FAIL: {
139 ShowProfileCreationError(profile, 140 ShowProfileCreationError(profile,
140 GetProfileCreationErrorMessage(LOCAL_ERROR)); 141 GetProfileCreationErrorMessage(LOCAL_ERROR));
141 break; 142 break;
142 } 143 }
143 case Profile::CREATE_STATUS_CREATED: { 144 case Profile::CREATE_STATUS_CREATED: {
144 // Do nothing for an intermediate status. 145 // Do nothing for an intermediate status.
145 break; 146 break;
146 } 147 }
147 case Profile::CREATE_STATUS_INITIALIZED: { 148 case Profile::CREATE_STATUS_INITIALIZED: {
148 HandleProfileCreationSuccess(create_shortcut, desktop_type, 149 HandleProfileCreationSuccess(create_shortcut, desktop_type,
149 managed_user_id, profile); 150 supervised_user_id, profile);
150 break; 151 break;
151 } 152 }
152 // User-initiated cancellation is handled in CancelProfileRegistration and 153 // User-initiated cancellation is handled in CancelProfileRegistration and
153 // does not call this callback. 154 // does not call this callback.
154 case Profile::CREATE_STATUS_CANCELED: 155 case Profile::CREATE_STATUS_CANCELED:
155 // Managed user registration errors are handled in 156 // Supervised user registration errors are handled in
156 // OnManagedUserRegistered(). 157 // OnSupervisedUserRegistered().
157 case Profile::CREATE_STATUS_REMOTE_FAIL: 158 case Profile::CREATE_STATUS_REMOTE_FAIL:
158 case Profile::MAX_CREATE_STATUS: { 159 case Profile::MAX_CREATE_STATUS: {
159 NOTREACHED(); 160 NOTREACHED();
160 break; 161 break;
161 } 162 }
162 } 163 }
163 } 164 }
164 165
165 void CreateProfileHandler::HandleProfileCreationSuccess( 166 void CreateProfileHandler::HandleProfileCreationSuccess(
166 bool create_shortcut, 167 bool create_shortcut,
167 chrome::HostDesktopType desktop_type, 168 chrome::HostDesktopType desktop_type,
168 const std::string& managed_user_id, 169 const std::string& supervised_user_id,
169 Profile* profile) { 170 Profile* profile) {
170 switch (profile_creation_type_) { 171 switch (profile_creation_type_) {
171 case NON_SUPERVISED_PROFILE_CREATION: { 172 case NON_SUPERVISED_PROFILE_CREATION: {
172 DCHECK(managed_user_id.empty()); 173 DCHECK(supervised_user_id.empty());
173 CreateShortcutAndShowSuccess(create_shortcut, desktop_type, profile); 174 CreateShortcutAndShowSuccess(create_shortcut, desktop_type, profile);
174 break; 175 break;
175 } 176 }
176 case SUPERVISED_PROFILE_CREATION: 177 case SUPERVISED_PROFILE_CREATION:
177 case SUPERVISED_PROFILE_IMPORT: 178 case SUPERVISED_PROFILE_IMPORT:
178 RegisterManagedUser(create_shortcut, desktop_type, 179 RegisterSupervisedUser(create_shortcut, desktop_type,
179 managed_user_id, profile); 180 supervised_user_id, profile);
180 break; 181 break;
181 case NO_CREATION_IN_PROGRESS: 182 case NO_CREATION_IN_PROGRESS:
182 NOTREACHED(); 183 NOTREACHED();
183 break; 184 break;
184 } 185 }
185 } 186 }
186 187
187 void CreateProfileHandler::RegisterManagedUser( 188 void CreateProfileHandler::RegisterSupervisedUser(
188 bool create_shortcut, 189 bool create_shortcut,
189 chrome::HostDesktopType desktop_type, 190 chrome::HostDesktopType desktop_type,
190 const std::string& managed_user_id, 191 const std::string& supervised_user_id,
191 Profile* new_profile) { 192 Profile* new_profile) {
192 DCHECK_EQ(profile_path_being_created_.value(), 193 DCHECK_EQ(profile_path_being_created_.value(),
193 new_profile->GetPath().value()); 194 new_profile->GetPath().value());
194 195
195 ManagedUserService* managed_user_service = 196 ManagedUserService* managed_user_service =
196 ManagedUserServiceFactory::GetForProfile(new_profile); 197 ManagedUserServiceFactory::GetForProfile(new_profile);
197 198
198 // Register the managed user using the profile of the custodian. 199 // Register the supervised user using the profile of the custodian.
199 managed_user_registration_utility_ = 200 managed_user_registration_utility_ =
200 ManagedUserRegistrationUtility::Create(Profile::FromWebUI(web_ui())); 201 ManagedUserRegistrationUtility::Create(Profile::FromWebUI(web_ui()));
201 managed_user_service->RegisterAndInitSync( 202 managed_user_service->RegisterAndInitSync(
202 managed_user_registration_utility_.get(), 203 managed_user_registration_utility_.get(),
203 Profile::FromWebUI(web_ui()), 204 Profile::FromWebUI(web_ui()),
204 managed_user_id, 205 supervised_user_id,
205 base::Bind(&CreateProfileHandler::OnManagedUserRegistered, 206 base::Bind(&CreateProfileHandler::OnSupervisedUserRegistered,
206 weak_ptr_factory_.GetWeakPtr(), 207 weak_ptr_factory_.GetWeakPtr(),
207 create_shortcut, 208 create_shortcut,
208 desktop_type, 209 desktop_type,
209 new_profile)); 210 new_profile));
210 } 211 }
211 212
212 void CreateProfileHandler::OnManagedUserRegistered( 213 void CreateProfileHandler::OnSupervisedUserRegistered(
213 bool create_shortcut, 214 bool create_shortcut,
214 chrome::HostDesktopType desktop_type, 215 chrome::HostDesktopType desktop_type,
215 Profile* profile, 216 Profile* profile,
216 const GoogleServiceAuthError& error) { 217 const GoogleServiceAuthError& error) {
217 GoogleServiceAuthError::State state = error.state(); 218 GoogleServiceAuthError::State state = error.state();
218 RecordSupervisedProfileCreationMetrics(state); 219 RecordSupervisedProfileCreationMetrics(state);
219 if (state == GoogleServiceAuthError::NONE) { 220 if (state == GoogleServiceAuthError::NONE) {
220 CreateShortcutAndShowSuccess(create_shortcut, desktop_type, profile); 221 CreateShortcutAndShowSuccess(create_shortcut, desktop_type, profile);
221 return; 222 return;
222 } 223 }
(...skipping 22 matching lines...) Expand all
245 shortcut_manager->CreateProfileShortcut(profile->GetPath()); 246 shortcut_manager->CreateProfileShortcut(profile->GetPath());
246 } 247 }
247 248
248 DCHECK_EQ(profile_path_being_created_.value(), profile->GetPath().value()); 249 DCHECK_EQ(profile_path_being_created_.value(), profile->GetPath().value());
249 profile_path_being_created_.clear(); 250 profile_path_being_created_.clear();
250 DCHECK_NE(NO_CREATION_IN_PROGRESS, profile_creation_type_); 251 DCHECK_NE(NO_CREATION_IN_PROGRESS, profile_creation_type_);
251 base::DictionaryValue dict; 252 base::DictionaryValue dict;
252 dict.SetString("name", 253 dict.SetString("name",
253 profile->GetPrefs()->GetString(prefs::kProfileName)); 254 profile->GetPrefs()->GetString(prefs::kProfileName));
254 dict.Set("filePath", base::CreateFilePathValue(profile->GetPath())); 255 dict.Set("filePath", base::CreateFilePathValue(profile->GetPath()));
255 bool is_managed = 256 bool is_supervised =
256 profile_creation_type_ == SUPERVISED_PROFILE_CREATION || 257 profile_creation_type_ == SUPERVISED_PROFILE_CREATION ||
257 profile_creation_type_ == SUPERVISED_PROFILE_IMPORT; 258 profile_creation_type_ == SUPERVISED_PROFILE_IMPORT;
258 dict.SetBoolean("isManaged", is_managed); 259 dict.SetBoolean("isManaged", is_supervised);
259 web_ui()->CallJavascriptFunction( 260 web_ui()->CallJavascriptFunction(
260 GetJavascriptMethodName(PROFILE_CREATION_SUCCESS), dict); 261 GetJavascriptMethodName(PROFILE_CREATION_SUCCESS), dict);
261 262
262 // If the new profile is a supervised user, instead of opening a new window 263 // If the new profile is a supervised user, instead of opening a new window
263 // right away, a confirmation overlay will be shown by JS from the creation 264 // right away, a confirmation overlay will be shown by JS from the creation
264 // dialog. If we are importing an existing supervised profile or creating a 265 // dialog. If we are importing an existing supervised profile or creating a
265 // new non-supervised user profile we don't show any confirmation, so open 266 // new non-supervised user profile we don't show any confirmation, so open
266 // the new window now. 267 // the new window now.
267 if (profile_creation_type_ != SUPERVISED_PROFILE_CREATION) { 268 if (profile_creation_type_ != SUPERVISED_PROFILE_CREATION) {
268 // Opening the new window must be the last action, after all callbacks 269 // Opening the new window must be the last action, after all callbacks
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 301
301 void CreateProfileHandler::CancelProfileRegistration(bool user_initiated) { 302 void CreateProfileHandler::CancelProfileRegistration(bool user_initiated) {
302 if (profile_path_being_created_.empty()) 303 if (profile_path_being_created_.empty())
303 return; 304 return;
304 305
305 ProfileManager* manager = g_browser_process->profile_manager(); 306 ProfileManager* manager = g_browser_process->profile_manager();
306 Profile* new_profile = manager->GetProfileByPath(profile_path_being_created_); 307 Profile* new_profile = manager->GetProfileByPath(profile_path_being_created_);
307 if (!new_profile) 308 if (!new_profile)
308 return; 309 return;
309 310
310 // Non-managed user creation cannot be canceled. (Creating a non-managed 311 // Non-supervised user creation cannot be canceled. (Creating a non-supervised
311 // profile shouldn't take significant time, and it can easily be deleted 312 // profile shouldn't take significant time, and it can easily be deleted
312 // afterward.) 313 // afterward.)
313 if (!new_profile->IsManaged()) 314 if (!new_profile->IsSupervised())
314 return; 315 return;
315 316
316 if (user_initiated) { 317 if (user_initiated) {
317 UMA_HISTOGRAM_MEDIUM_TIMES( 318 UMA_HISTOGRAM_MEDIUM_TIMES(
318 "Profile.CreateTimeCanceledNoTimeout", 319 "Profile.CreateTimeCanceledNoTimeout",
319 base::TimeTicks::Now() - profile_creation_start_time_); 320 base::TimeTicks::Now() - profile_creation_start_time_);
320 RecordProfileCreationMetrics(Profile::CREATE_STATUS_CANCELED); 321 RecordProfileCreationMetrics(Profile::CREATE_STATUS_CANCELED);
321 } 322 }
322 323
323 DCHECK(managed_user_registration_utility_.get()); 324 DCHECK(managed_user_registration_utility_.get());
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 case PROFILE_CREATION_ERROR: 400 case PROFILE_CREATION_ERROR:
400 return profile_creation_type_ == SUPERVISED_PROFILE_IMPORT ? 401 return profile_creation_type_ == SUPERVISED_PROFILE_IMPORT ?
401 "BrowserOptions.showManagedUserImportError" : 402 "BrowserOptions.showManagedUserImportError" :
402 "BrowserOptions.showCreateProfileError"; 403 "BrowserOptions.showCreateProfileError";
403 } 404 }
404 405
405 NOTREACHED(); 406 NOTREACHED();
406 return std::string(); 407 return std::string();
407 } 408 }
408 409
409 bool CreateProfileHandler::IsValidExistingManagedUserId( 410 bool CreateProfileHandler::IsValidExistingSupervisedUserId(
410 const std::string& existing_managed_user_id) const { 411 const std::string& existing_supervised_user_id) const {
411 if (existing_managed_user_id.empty()) 412 if (existing_supervised_user_id.empty())
412 return true; 413 return true;
413 414
414 Profile* profile = Profile::FromWebUI(web_ui()); 415 Profile* profile = Profile::FromWebUI(web_ui());
415 const base::DictionaryValue* dict = 416 const base::DictionaryValue* dict =
416 ManagedUserSyncServiceFactory::GetForProfile(profile)->GetManagedUsers(); 417 ManagedUserSyncServiceFactory::GetForProfile(profile)->GetManagedUsers();
417 if (!dict->HasKey(existing_managed_user_id)) 418 if (!dict->HasKey(existing_supervised_user_id))
418 return false; 419 return false;
419 420
420 // Check if this managed user already exists on this machine. 421 // Check if this supervised user already exists on this machine.
421 const ProfileInfoCache& cache = 422 const ProfileInfoCache& cache =
422 g_browser_process->profile_manager()->GetProfileInfoCache(); 423 g_browser_process->profile_manager()->GetProfileInfoCache();
423 for (size_t i = 0; i < cache.GetNumberOfProfiles(); ++i) { 424 for (size_t i = 0; i < cache.GetNumberOfProfiles(); ++i) {
424 if (existing_managed_user_id == cache.GetManagedUserIdOfProfileAtIndex(i)) 425 if (existing_supervised_user_id ==
426 cache.GetSupervisedUserIdOfProfileAtIndex(i))
425 return false; 427 return false;
426 } 428 }
427 return true; 429 return true;
428 } 430 }
429 431
430 } // namespace options 432 } // namespace options
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/options/create_profile_handler.h ('k') | chrome/browser/ui/webui/options/manage_profile_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698