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

Unified Diff: chrome/browser/signin/account_reconcilor.h

Issue 219933002: Componentize AccountReconcilor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ChromeOS fix Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/signin/account_reconcilor.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/signin/account_reconcilor.h
diff --git a/chrome/browser/signin/account_reconcilor.h b/chrome/browser/signin/account_reconcilor.h
deleted file mode 100644
index f05721c449dd991b2fa63cd91ef55cd42d09e55b..0000000000000000000000000000000000000000
--- a/chrome/browser/signin/account_reconcilor.h
+++ /dev/null
@@ -1,246 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-#ifndef CHROME_BROWSER_SIGNIN_ACCOUNT_RECONCILOR_H_
-#define CHROME_BROWSER_SIGNIN_ACCOUNT_RECONCILOR_H_
-
-#include <deque>
-#include <functional>
-#include <set>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "base/basictypes.h"
-#include "base/callback_forward.h"
-#include "base/compiler_specific.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/scoped_vector.h"
-#include "components/keyed_service/core/keyed_service.h"
-#include "components/signin/core/browser/signin_manager.h"
-#include "google_apis/gaia/gaia_auth_consumer.h"
-#include "google_apis/gaia/google_service_auth_error.h"
-#include "google_apis/gaia/merge_session_helper.h"
-#include "google_apis/gaia/oauth2_token_service.h"
-
-class GaiaAuthFetcher;
-class Profile;
-class SigninClient;
-class SigninOAuthHelper;
-
-namespace net {
-class CanonicalCookie;
-}
-
-class AccountReconcilor : public KeyedService,
- public GaiaAuthConsumer,
- public MergeSessionHelper::Observer,
- public OAuth2TokenService::Consumer,
- public OAuth2TokenService::Observer,
- public SigninManagerBase::Observer {
- public:
- explicit AccountReconcilor(Profile* profile, SigninClient* client);
- virtual ~AccountReconcilor();
-
- void Initialize(bool start_reconcile_if_tokens_available);
-
- // KeyedService implementation.
- virtual void Shutdown() OVERRIDE;
-
- // Add or remove observers for the merge session notification.
- void AddMergeSessionObserver(MergeSessionHelper::Observer* observer);
- void RemoveMergeSessionObserver(MergeSessionHelper::Observer* observer);
-
- Profile* profile() { return profile_; }
-
- private:
- // An std::set<> for use with email addresses that uses
- // gaia::CanonicalizeEmail() during comparisons.
- // TODO(rogerta): this is a workaround for the fact that SigninManager and
- // SigninOAuthHelper use the gaia "email" property when adding accounts to
- // the token service, whereas gaia::ParseListAccountsData() returns email
- // addresses that have been passed through gaia::CanonicalizeEmail(). These
- // two types of email addresses are not directly comparable.
- class EmailLessFunc : public std::less<std::string> {
- public:
- bool operator()(const std::string& s1, const std::string& s2) const;
- };
- typedef std::set<std::string, EmailLessFunc> EmailSet;
-
- class RefreshTokenFetcher;
- class UserIdFetcher;
-
- bool IsPeriodicReconciliationRunning() const {
- return reconciliation_timer_.IsRunning();
- }
-
- bool IsRegisteredWithTokenService() const {
- return registered_with_token_service_;
- }
-
- bool AreGaiaAccountsSet() const { return are_gaia_accounts_set_; }
-
- bool AreAllRefreshTokensChecked() const;
-
- const std::vector<std::pair<std::string, bool> >&
- GetGaiaAccountsForTesting() const {
- return gaia_accounts_;
- }
-
- const EmailSet& GetValidChromeAccountsForTesting() const {
- return valid_chrome_accounts_;
- }
-
- const EmailSet& GetInvalidChromeAccountsForTesting() const {
- return invalid_chrome_accounts_;
- }
-
- // Used during GetAccountsFromCookie.
- // Stores a callback for the next action to perform.
- typedef base::Callback<void(
- const GoogleServiceAuthError& error,
- const std::vector<std::pair<std::string, bool> >&)>
- GetAccountsFromCookieCallback;
-
- friend class AccountReconcilorTest;
- FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, SigninManagerRegistration);
- FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, Reauth);
- FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, ProfileAlreadyConnected);
- FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, GetAccountsFromCookieSuccess);
- FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, GetAccountsFromCookieFailure);
- FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, ValidateAccountsFromTokens);
- FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest,
- ValidateAccountsFromTokensFailedUserInfo);
- FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest,
- ValidateAccountsFromTokensFailedTokenRequest);
- FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, StartReconcileNoop);
- FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, StartReconcileNoopWithDots);
- FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, StartReconcileNoopMultiple);
- FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, StartReconcileAddToCookie);
- FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, StartReconcileAddToChrome);
- FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, StartReconcileBadPrimary);
- FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest, StartReconcileOnlyOnce);
- FRIEND_TEST_ALL_PREFIXES(AccountReconcilorTest,
- StartReconcileWithSessionInfoExpiredDefault);
-
- // Register and unregister with dependent services.
- void RegisterForCookieChanges();
- void UnregisterForCookieChanges();
- void RegisterWithSigninManager();
- void UnregisterWithSigninManager();
- void RegisterWithTokenService();
- void UnregisterWithTokenService();
-
- bool IsProfileConnected();
-
- void DeleteFetchers();
-
- // Start and stop the periodic reconciliation.
- void StartPeriodicReconciliation();
- void StopPeriodicReconciliation();
- void PeriodicReconciliation();
-
- // All actions with side effects. Virtual so that they can be overridden
- // in tests.
- virtual void PerformMergeAction(const std::string& account_id);
- virtual void PerformAddToChromeAction(const std::string& account_id,
- int session_index);
- virtual void PerformLogoutAllAccountsAction();
-
- // Used to remove an account from chrome and the cookie jar.
- virtual void StartRemoveAction(const std::string& account_id);
- virtual void FinishRemoveAction(
- const std::string& account_id,
- const GoogleServiceAuthError& error,
- const std::vector<std::pair<std::string, bool> >& accounts);
-
- // Used during periodic reconciliation.
- void StartReconcile();
- void FinishReconcile();
- void AbortReconcile();
- void CalculateIfReconcileIsDone();
- void ScheduleStartReconcileIfChromeAccountsChanged();
- void HandleSuccessfulAccountIdCheck(const std::string& account_id);
- void HandleFailedAccountIdCheck(const std::string& account_id);
- void HandleRefreshTokenFetched(const std::string& account_id,
- const std::string& refresh_token);
-
- void GetAccountsFromCookie(GetAccountsFromCookieCallback callback);
- void ContinueReconcileActionAfterGetGaiaAccounts(
- const GoogleServiceAuthError& error,
- const std::vector<std::pair<std::string, bool> >& accounts);
- void ValidateAccountsFromTokenService();
-
- void OnCookieChanged(const net::CanonicalCookie* cookie);
-
- // Overriden from GaiaAuthConsumer.
- virtual void OnListAccountsSuccess(const std::string& data) OVERRIDE;
- virtual void OnListAccountsFailure(
- const GoogleServiceAuthError& error) OVERRIDE;
-
- // Overriden from MergeSessionHelper::Observer.
- virtual void MergeSessionCompleted(
- const std::string& account_id,
- const GoogleServiceAuthError& error) OVERRIDE;
-
- // Overriden from OAuth2TokenService::Consumer.
- virtual void OnGetTokenSuccess(const OAuth2TokenService::Request* request,
- const std::string& access_token,
- const base::Time& expiration_time) OVERRIDE;
- virtual void OnGetTokenFailure(const OAuth2TokenService::Request* request,
- const GoogleServiceAuthError& error) OVERRIDE;
-
- // Overriden from OAuth2TokenService::Observer.
- virtual void OnRefreshTokenAvailable(const std::string& account_id) OVERRIDE;
- virtual void OnRefreshTokenRevoked(const std::string& account_id) OVERRIDE;
- virtual void OnRefreshTokensLoaded() OVERRIDE;
-
- // Overriden from SigninManagerBase::Observer.
- virtual void GoogleSigninSucceeded(const std::string& username,
- const std::string& password) OVERRIDE;
- virtual void GoogleSignedOut(const std::string& username) OVERRIDE;
-
- void MayBeDoNextListAccounts();
-
- // The profile that this reconcilor belongs to.
- Profile* profile_;
-
- // The SigninClient associated with this reconcilor.
- SigninClient* client_;
-
- base::RepeatingTimer<AccountReconcilor> reconciliation_timer_;
- MergeSessionHelper merge_session_helper_;
- scoped_ptr<GaiaAuthFetcher> gaia_fetcher_;
- bool registered_with_token_service_;
-
- // True while the reconcilor is busy checking or managing the accounts in
- // this profile.
- bool is_reconcile_started_;
-
- // Used during reconcile action.
- // These members are used used to validate the gaia cookie. |gaia_accounts_|
- // holds the state of google accounts in the gaia cookie. Each element is
- // a pair that holds the email address of the account and a boolean that
- // indicates whether the account is valid or not. The accounts in the vector
- // are ordered the in same way as the gaia cookie.
- bool are_gaia_accounts_set_;
- std::vector<std::pair<std::string, bool> > gaia_accounts_;
-
- // Used during reconcile action.
- // These members are used to validate the tokens in OAuth2TokenService.
- std::string primary_account_;
- std::vector<std::string> chrome_accounts_;
- scoped_ptr<OAuth2TokenService::Request>* requests_;
- ScopedVector<UserIdFetcher> user_id_fetchers_;
- ScopedVector<SigninOAuthHelper> refresh_token_fetchers_;
- EmailSet valid_chrome_accounts_;
- EmailSet invalid_chrome_accounts_;
- std::vector<std::string> add_to_cookie_;
- std::vector<std::pair<std::string, int> > add_to_chrome_;
-
- std::deque<GetAccountsFromCookieCallback> get_gaia_accounts_callbacks_;
-
- DISALLOW_COPY_AND_ASSIGN(AccountReconcilor);
-};
-
-#endif // CHROME_BROWSER_SIGNIN_ACCOUNT_RECONCILOR_H_
« no previous file with comments | « no previous file | chrome/browser/signin/account_reconcilor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698