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

Side by Side Diff: chrome/browser/signin/chrome_signin_client.cc

Issue 2944713003: After signin token check failed, show force reauth dialog and start window closing countdown. (Closed)
Patch Set: nit Created 3 years, 5 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
« no previous file with comments | « no previous file | chrome/browser/signin/chrome_signin_client_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/signin/chrome_signin_client.h" 5 #include "chrome/browser/signin/chrome_signin_client.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 // Don't store password hash except when lock is available for the user. 266 // Don't store password hash except when lock is available for the user.
267 if (!password.empty() && profiles::IsLockAvailable(profile_)) 267 if (!password.empty() && profiles::IsLockAvailable(profile_))
268 LocalAuth::SetLocalAuthCredentials(profile_, password); 268 LocalAuth::SetLocalAuthCredentials(profile_, password);
269 #endif 269 #endif
270 } 270 }
271 271
272 void ChromeSigninClient::PreSignOut( 272 void ChromeSigninClient::PreSignOut(
273 const base::Callback<void()>& sign_out, 273 const base::Callback<void()>& sign_out,
274 signin_metrics::ProfileSignout signout_source_metric) { 274 signin_metrics::ProfileSignout signout_source_metric) {
275 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) 275 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
276
277 // These sign out won't remove the policy cache, keep the window opened.
278 bool keep_window_opened =
279 signout_source_metric ==
280 signin_metrics::GOOGLE_SERVICE_NAME_PATTERN_CHANGED ||
281 signout_source_metric == signin_metrics::SERVER_FORCED_DISABLE ||
282 signout_source_metric == signin_metrics::SIGNOUT_PREF_CHANGED;
276 if (signin_util::IsForceSigninEnabled() && !profile_->IsSystemProfile() && 283 if (signin_util::IsForceSigninEnabled() && !profile_->IsSystemProfile() &&
277 !profile_->IsGuestSession() && !profile_->IsSupervised()) { 284 !profile_->IsGuestSession() && !profile_->IsSupervised() &&
278 // TODO(zmin): force window closing based on the reason of sign-out. 285 !keep_window_opened) {
279 // This will be updated after force window closing CL is commited. 286 if (signout_source_metric ==
280 287 signin_metrics::SIGNIN_PREF_CHANGED_DURING_SIGNIN) {
281 // User can't abort the window closing unless user sign out manually. 288 // SIGNIN_PREF_CHANGED_DURING_SIGNIN will be triggered when SigninManager
282 BrowserList::CloseAllBrowsersWithProfile( 289 // is initialized before window opening, there is no need to close window.
283 profile_, 290 // Call OnCloseBrowsersSuccess to continue sign out and show UserManager
284 base::Bind(&ChromeSigninClient::OnCloseBrowsersSuccess, 291 // afterwards.
285 base::Unretained(this), sign_out, signout_source_metric), 292 should_display_user_manager_ = false; // Don't show UserManager twice.
286 base::Bind(&ChromeSigninClient::OnCloseBrowsersAborted, 293 OnCloseBrowsersSuccess(sign_out, signout_source_metric,
287 base::Unretained(this)), 294 profile_->GetPath());
288 false); 295 } else {
296 BrowserList::CloseAllBrowsersWithProfile(
297 profile_,
298 base::Bind(&ChromeSigninClient::OnCloseBrowsersSuccess,
299 base::Unretained(this), sign_out, signout_source_metric),
300 base::Bind(&ChromeSigninClient::OnCloseBrowsersAborted,
301 base::Unretained(this)),
302 signout_source_metric == signin_metrics::ABORT_SIGNIN ||
303 signout_source_metric ==
304 signin_metrics::AUTHENTICATION_FAILED_WITH_FORCE_SIGNIN ||
305 signout_source_metric == signin_metrics::TRANSFER_CREDENTIALS);
306 }
289 } else { 307 } else {
290 #else 308 #else
291 { 309 {
292 #endif 310 #endif
293 SigninClient::PreSignOut(sign_out, signout_source_metric); 311 SigninClient::PreSignOut(sign_out, signout_source_metric);
294 } 312 }
295 } 313 }
296 314
297 void ChromeSigninClient::OnErrorChanged() { 315 void ChromeSigninClient::OnErrorChanged() {
298 // Some tests don't have a ProfileManager. 316 // Some tests don't have a ProfileManager.
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 // the new profile soon. 452 // the new profile soon.
435 should_display_user_manager_ = false; 453 should_display_user_manager_ = false;
436 } 454 }
437 } 455 }
438 456
439 void ChromeSigninClient::OnCloseBrowsersSuccess( 457 void ChromeSigninClient::OnCloseBrowsersSuccess(
440 const base::Callback<void()>& sign_out, 458 const base::Callback<void()>& sign_out,
441 const signin_metrics::ProfileSignout signout_source_metric, 459 const signin_metrics::ProfileSignout signout_source_metric,
442 const base::FilePath& profile_path) { 460 const base::FilePath& profile_path) {
443 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) 461 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
444 if (signin_util::IsForceSigninEnabled() && force_signin_verifier_.get()) 462 if (signin_util::IsForceSigninEnabled() && force_signin_verifier_.get()) {
445 force_signin_verifier_->Cancel(); 463 force_signin_verifier_->Cancel();
464 force_signin_verifier_->AbortSignoutCountdownIfExisted();
465 }
446 #endif 466 #endif
447 SigninClient::PreSignOut(sign_out, signout_source_metric); 467 SigninClient::PreSignOut(sign_out, signout_source_metric);
448 468
449 LockForceSigninProfile(profile_path); 469 LockForceSigninProfile(profile_path);
450 // After sign out, lock the profile and show UserManager if necessary. 470 // After sign out, lock the profile and show UserManager if necessary.
451 if (should_display_user_manager_) { 471 if (should_display_user_manager_) {
452 ShowUserManager(profile_path); 472 ShowUserManager(profile_path);
453 } else { 473 } else {
454 should_display_user_manager_ = true; 474 should_display_user_manager_ = true;
455 } 475 }
(...skipping 15 matching lines...) Expand all
471 return; 491 return;
472 entry->LockForceSigninProfile(true); 492 entry->LockForceSigninProfile(true);
473 } 493 }
474 494
475 void ChromeSigninClient::ShowUserManager(const base::FilePath& profile_path) { 495 void ChromeSigninClient::ShowUserManager(const base::FilePath& profile_path) {
476 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS) 496 #if !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
477 UserManager::Show(profile_path, 497 UserManager::Show(profile_path,
478 profiles::USER_MANAGER_SELECT_PROFILE_NO_ACTION); 498 profiles::USER_MANAGER_SELECT_PROFILE_NO_ACTION);
479 #endif 499 #endif
480 } 500 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/signin/chrome_signin_client_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698