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

Side by Side Diff: components/signin/core/browser/account_reconcilor.cc

Issue 344513005: Revert "Improve the no-op reconcilor so that it doesn't "hang" after the first execution, but inste… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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
« no previous file with comments | « components/signin/core/browser/account_reconcilor.h ('k') | no next file » | 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 "components/signin/core/browser/account_reconcilor.h" 5 #include "components/signin/core/browser/account_reconcilor.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/json/json_reader.h" 10 #include "base/json/json_reader.h"
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 VLOG(1) << "AccountReconcilor::GoogleSignedOut: signed out"; 352 VLOG(1) << "AccountReconcilor::GoogleSignedOut: signed out";
353 gaia_fetcher_.reset(); 353 gaia_fetcher_.reset();
354 get_gaia_accounts_callbacks_.clear(); 354 get_gaia_accounts_callbacks_.clear();
355 AbortReconcile(); 355 AbortReconcile();
356 UnregisterWithTokenService(); 356 UnregisterWithTokenService();
357 UnregisterForCookieChanges(); 357 UnregisterForCookieChanges();
358 PerformLogoutAllAccountsAction(); 358 PerformLogoutAllAccountsAction();
359 } 359 }
360 360
361 void AccountReconcilor::PerformMergeAction(const std::string& account_id) { 361 void AccountReconcilor::PerformMergeAction(const std::string& account_id) {
362 if (!switches::IsNewProfileManagement()) { 362 if (!switches::IsNewProfileManagement())
363 MarkAccountAsAddedToCookie(account_id);
364 return; 363 return;
365 }
366 VLOG(1) << "AccountReconcilor::PerformMergeAction: " << account_id; 364 VLOG(1) << "AccountReconcilor::PerformMergeAction: " << account_id;
367 merge_session_helper_.LogIn(account_id); 365 merge_session_helper_.LogIn(account_id);
368 } 366 }
369 367
370 void AccountReconcilor::PerformStartRemoveAction( 368 void AccountReconcilor::PerformStartRemoveAction(
371 const std::string& account_id) { 369 const std::string& account_id) {
372 VLOG(1) << "AccountReconcilor::PerformStartRemoveAction: " << account_id; 370 VLOG(1) << "AccountReconcilor::PerformStartRemoveAction: " << account_id;
373 GetAccountsFromCookie(base::Bind( 371 GetAccountsFromCookie(base::Bind(
374 &AccountReconcilor::PerformFinishRemoveAction, 372 &AccountReconcilor::PerformFinishRemoveAction,
375 base::Unretained(this), 373 base::Unretained(this),
(...skipping 17 matching lines...) Expand all
393 ++i) { 391 ++i) {
394 accounts_only.push_back(i->first); 392 accounts_only.push_back(i->first);
395 } 393 }
396 merge_session_helper_.LogOut(account_id, accounts_only); 394 merge_session_helper_.LogOut(account_id, accounts_only);
397 } 395 }
398 // Wait for the next ReconcileAction if there is an error. 396 // Wait for the next ReconcileAction if there is an error.
399 } 397 }
400 398
401 void AccountReconcilor::PerformAddToChromeAction(const std::string& account_id, 399 void AccountReconcilor::PerformAddToChromeAction(const std::string& account_id,
402 int session_index) { 400 int session_index) {
403 if (!switches::IsNewProfileManagement()) { 401 if (!switches::IsNewProfileManagement())
404 MarkAccountAsAddedToChrome(account_id);
405 return; 402 return;
406 }
407 VLOG(1) << "AccountReconcilor::PerformAddToChromeAction:" 403 VLOG(1) << "AccountReconcilor::PerformAddToChromeAction:"
408 << " account=" << account_id << " session_index=" << session_index; 404 << " account=" << account_id << " session_index=" << session_index;
409 405
410 #if !defined(OS_ANDROID) && !defined(OS_IOS) 406 #if !defined(OS_ANDROID) && !defined(OS_IOS)
411 refresh_token_fetchers_.push_back( 407 refresh_token_fetchers_.push_back(
412 new RefreshTokenFetcher(this, account_id, session_index)); 408 new RefreshTokenFetcher(this, account_id, session_index));
413 #endif 409 #endif
414 } 410 }
415 411
416 void AccountReconcilor::PerformLogoutAllAccountsAction() { 412 void AccountReconcilor::PerformLogoutAllAccountsAction() {
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 std::vector<std::string> new_chrome_accounts(token_service_->GetAccounts()); 699 std::vector<std::string> new_chrome_accounts(token_service_->GetAccounts());
704 std::sort(reconciled_accounts.begin(), reconciled_accounts.end()); 700 std::sort(reconciled_accounts.begin(), reconciled_accounts.end());
705 std::sort(new_chrome_accounts.begin(), new_chrome_accounts.end()); 701 std::sort(new_chrome_accounts.begin(), new_chrome_accounts.end());
706 if (reconciled_accounts != new_chrome_accounts) { 702 if (reconciled_accounts != new_chrome_accounts) {
707 base::MessageLoop::current()->PostTask( 703 base::MessageLoop::current()->PostTask(
708 FROM_HERE, 704 FROM_HERE,
709 base::Bind(&AccountReconcilor::StartReconcile, base::Unretained(this))); 705 base::Bind(&AccountReconcilor::StartReconcile, base::Unretained(this)));
710 } 706 }
711 } 707 }
712 708
713 // Remove the account from the list that is being merged. 709 void AccountReconcilor::MergeSessionCompleted(
714 void AccountReconcilor::MarkAccountAsAddedToCookie( 710 const std::string& account_id,
715 const std::string& account_id) { 711 const GoogleServiceAuthError& error) {
712 VLOG(1) << "AccountReconcilor::MergeSessionCompleted: account_id="
713 << account_id;
714
715 // Remove the account from the list that is being merged.
716 for (std::vector<std::string>::iterator i = add_to_cookie_.begin(); 716 for (std::vector<std::string>::iterator i = add_to_cookie_.begin();
717 i != add_to_cookie_.end(); 717 i != add_to_cookie_.end();
718 ++i) { 718 ++i) {
719 if (account_id == *i) { 719 if (account_id == *i) {
720 add_to_cookie_.erase(i); 720 add_to_cookie_.erase(i);
721 break; 721 break;
722 } 722 }
723 } 723 }
724 }
725 724
726 void AccountReconcilor::MergeSessionCompleted(
727 const std::string& account_id,
728 const GoogleServiceAuthError& error) {
729 VLOG(1) << "AccountReconcilor::MergeSessionCompleted: account_id="
730 << account_id;
731
732 MarkAccountAsAddedToCookie(account_id);
733 CalculateIfReconcileIsDone(); 725 CalculateIfReconcileIsDone();
734 ScheduleStartReconcileIfChromeAccountsChanged(); 726 ScheduleStartReconcileIfChromeAccountsChanged();
735 } 727 }
736 728
737 void AccountReconcilor::HandleSuccessfulAccountIdCheck( 729 void AccountReconcilor::HandleSuccessfulAccountIdCheck(
738 const std::string& account_id) { 730 const std::string& account_id) {
739 valid_chrome_accounts_.insert(account_id); 731 valid_chrome_accounts_.insert(account_id);
740 FinishReconcile(); 732 FinishReconcile();
741 } 733 }
742 734
743 void AccountReconcilor::HandleFailedAccountIdCheck( 735 void AccountReconcilor::HandleFailedAccountIdCheck(
744 const std::string& account_id) { 736 const std::string& account_id) {
745 invalid_chrome_accounts_.insert(account_id); 737 invalid_chrome_accounts_.insert(account_id);
746 FinishReconcile(); 738 FinishReconcile();
747 } 739 }
748 740
749 void AccountReconcilor::PerformAddAccountToTokenService( 741 void AccountReconcilor::PerformAddAccountToTokenService(
750 const std::string& account_id, 742 const std::string& account_id,
751 const std::string& refresh_token) { 743 const std::string& refresh_token) {
752 // The flow should never get to this method if new_profile_management is 744 // The flow should never get to this method if new_profile_management is
753 // false, but better safe than sorry. 745 // false, but better safe than sorry.
754 if (!switches::IsNewProfileManagement()) 746 if (!switches::IsNewProfileManagement())
755 return; 747 return;
756 token_service_->UpdateCredentials(account_id, refresh_token); 748 token_service_->UpdateCredentials(account_id, refresh_token);
757 } 749 }
758 750
759 // Remove the account from the list that is being updated. 751 void AccountReconcilor::HandleRefreshTokenFetched(
760 void AccountReconcilor::MarkAccountAsAddedToChrome( 752 const std::string& account_id,
761 const std::string& account_id) { 753 const std::string& refresh_token) {
754 if (!refresh_token.empty()) {
755 PerformAddAccountToTokenService(account_id, refresh_token);
756 }
757 // Remove the account from the list that is being updated.
762 for (std::vector<std::pair<std::string, int> >::iterator i = 758 for (std::vector<std::pair<std::string, int> >::iterator i =
763 add_to_chrome_.begin(); 759 add_to_chrome_.begin();
764 i != add_to_chrome_.end(); 760 i != add_to_chrome_.end();
765 ++i) { 761 ++i) {
766 if (gaia::AreEmailsSame(account_id, i->first)) { 762 if (gaia::AreEmailsSame(account_id, i->first)) {
767 add_to_chrome_.erase(i); 763 add_to_chrome_.erase(i);
768 break; 764 break;
769 } 765 }
770 } 766 }
771 }
772 767
773 void AccountReconcilor::HandleRefreshTokenFetched(
774 const std::string& account_id,
775 const std::string& refresh_token) {
776 if (!refresh_token.empty())
777 PerformAddAccountToTokenService(account_id, refresh_token);
778
779 MarkAccountAsAddedToChrome(account_id);
780 CalculateIfReconcileIsDone(); 768 CalculateIfReconcileIsDone();
781 } 769 }
OLDNEW
« no previous file with comments | « components/signin/core/browser/account_reconcilor.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698