| Index: chrome/browser/services/gcm/gcm_account_tracker.h
|
| diff --git a/chrome/browser/services/gcm/gcm_account_tracker.h b/chrome/browser/services/gcm/gcm_account_tracker.h
|
| deleted file mode 100644
|
| index 39f357e34c6904765974d8f42a65d5f6aa870e29..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/services/gcm/gcm_account_tracker.h
|
| +++ /dev/null
|
| @@ -1,165 +0,0 @@
|
| -// Copyright 2014 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_SERVICES_GCM_GCM_ACCOUNT_TRACKER_H_
|
| -#define CHROME_BROWSER_SERVICES_GCM_GCM_ACCOUNT_TRACKER_H_
|
| -
|
| -#include <map>
|
| -#include <string>
|
| -
|
| -#include "base/memory/scoped_vector.h"
|
| -#include "components/gcm_driver/gcm_client.h"
|
| -#include "components/gcm_driver/gcm_connection_observer.h"
|
| -#include "google_apis/gaia/account_tracker.h"
|
| -#include "google_apis/gaia/oauth2_token_service.h"
|
| -
|
| -namespace base {
|
| -class Time;
|
| -}
|
| -
|
| -namespace gcm {
|
| -
|
| -class GCMDriver;
|
| -
|
| -// Class for reporting back which accounts are signed into. It is only meant to
|
| -// be used when the user is signed into sync.
|
| -//
|
| -// This class makes a check for tokens periodically, to make sure the user is
|
| -// still logged into the profile, so that in the case that the user is not, we
|
| -// can immediately report that to the GCM and stop messages addressed to that
|
| -// user from ever reaching Chrome.
|
| -class GCMAccountTracker : public gaia::AccountTracker::Observer,
|
| - public OAuth2TokenService::Consumer,
|
| - public GCMConnectionObserver {
|
| - public:
|
| - // State of the account.
|
| - // Allowed transitions:
|
| - // TOKEN_NEEDED - account info was created.
|
| - // TOKEN_NEEDED -> GETTING_TOKEN - access token was requested.
|
| - // GETTING_TOKEN -> TOKEN_NEEDED - access token fetching failed.
|
| - // GETTING_TOKEN -> TOKEN_PRESENT - access token fetching succeeded.
|
| - // GETTING_TOKEN -> ACCOUNT_REMOVED - account was removed.
|
| - // TOKEN_NEEDED -> ACCOUNT_REMOVED - account was removed.
|
| - // TOKEN_PRESENT -> ACCOUNT_REMOVED - account was removed.
|
| - enum AccountState {
|
| - TOKEN_NEEDED, // Needs a token (AccountInfo was recently created or
|
| - // token request failed).
|
| - GETTING_TOKEN, // There is a pending token request.
|
| - TOKEN_PRESENT, // We have a token for the account.
|
| - ACCOUNT_REMOVED, // Account was removed, and we didn't report it yet.
|
| - };
|
| -
|
| - // Stores necessary account information and state of token fetching.
|
| - struct AccountInfo {
|
| - AccountInfo(const std::string& email, AccountState state);
|
| - ~AccountInfo();
|
| -
|
| - // Email address of the tracked account.
|
| - std::string email;
|
| - // OAuth2 access token, when |state| is TOKEN_PRESENT.
|
| - std::string access_token;
|
| - // Expiration time of the access tokens.
|
| - base::Time expiration_time;
|
| - // Status of the token fetching.
|
| - AccountState state;
|
| - };
|
| -
|
| - // |account_tracker| is used to deliver information about the accounts present
|
| - // in the browser context to |driver|.
|
| - GCMAccountTracker(scoped_ptr<gaia::AccountTracker> account_tracker,
|
| - GCMDriver* driver);
|
| - ~GCMAccountTracker() override;
|
| -
|
| - // Shuts down the tracker ensuring a proper clean up. After Shutdown() is
|
| - // called Start() and Stop() should no longer be used. Must be called before
|
| - // destruction.
|
| - void Shutdown();
|
| -
|
| - // Starts tracking accounts.
|
| - void Start();
|
| -
|
| - // Gets the number of pending token requests. Only used for testing.
|
| - size_t get_pending_token_request_count() const {
|
| - return pending_token_requests_.size();
|
| - }
|
| -
|
| - private:
|
| - friend class GCMAccountTrackerTest;
|
| -
|
| - // Maps account keys to account states. Keyed by account_ids as used by
|
| - // OAuth2TokenService.
|
| - typedef std::map<std::string, AccountInfo> AccountInfos;
|
| -
|
| - // AccountTracker::Observer overrides.
|
| - void OnAccountAdded(const gaia::AccountIds& ids) override;
|
| - void OnAccountRemoved(const gaia::AccountIds& ids) override;
|
| - void OnAccountSignInChanged(const gaia::AccountIds& ids,
|
| - bool is_signed_in) override;
|
| -
|
| - // OAuth2TokenService::Consumer overrides.
|
| - void OnGetTokenSuccess(const OAuth2TokenService::Request* request,
|
| - const std::string& access_token,
|
| - const base::Time& expiration_time) override;
|
| - void OnGetTokenFailure(const OAuth2TokenService::Request* request,
|
| - const GoogleServiceAuthError& error) override;
|
| -
|
| - // GCMConnectionObserver overrides.
|
| - void OnConnected(const net::IPEndPoint& ip_endpoint) override;
|
| - void OnDisconnected() override;
|
| -
|
| - // Schedules token reporting.
|
| - void ScheduleReportTokens();
|
| - // Report the list of accounts with OAuth2 tokens back using the |callback_|
|
| - // function. If there are token requests in progress, do nothing.
|
| - void ReportTokens();
|
| - // Verify that all of the tokens are ready to be passed down to the GCM
|
| - // Driver, e.g. none of them has expired or is missing. Returns true if not
|
| - // all tokens are valid and a fetching yet more tokens is required.
|
| - void SanitizeTokens();
|
| - // Indicates whether token reporting is required, either because it is due, or
|
| - // some of the accounts were removed.
|
| - bool IsTokenReportingRequired() const;
|
| - // Indicates whether there are tokens that still need fetching.
|
| - bool IsTokenFetchingRequired() const;
|
| - // Gets the time until next token reporting.
|
| - base::TimeDelta GetTimeToNextTokenReporting() const;
|
| - // Deletes a token request. Should be called from OnGetTokenSuccess(..) or
|
| - // OnGetTokenFailure(..).
|
| - void DeleteTokenRequest(const OAuth2TokenService::Request* request);
|
| - // Checks on all known accounts, and calls GetToken(..) for those with
|
| - // |state == TOKEN_NEEDED|.
|
| - void GetAllNeededTokens();
|
| - // Starts fetching the OAuth2 token for the GCM group scope.
|
| - void GetToken(AccountInfos::iterator& account_iter);
|
| -
|
| - // Handling of actual sign in and sign out for accounts.
|
| - void OnAccountSignedIn(const gaia::AccountIds& ids);
|
| - void OnAccountSignedOut(const gaia::AccountIds& ids);
|
| -
|
| - OAuth2TokenService* GetTokenService();
|
| -
|
| - // Account tracker.
|
| - scoped_ptr<gaia::AccountTracker> account_tracker_;
|
| -
|
| - // GCM Driver. Not owned.
|
| - GCMDriver* driver_;
|
| -
|
| - // State of the account.
|
| - AccountInfos account_infos_;
|
| -
|
| - // Indicates whether shutdown has been called.
|
| - bool shutdown_called_;
|
| -
|
| - ScopedVector<OAuth2TokenService::Request> pending_token_requests_;
|
| -
|
| - // Creates weak pointers used to postpone reporting tokens. See
|
| - // ScheduleReportTokens.
|
| - base::WeakPtrFactory<GCMAccountTracker> reporting_weak_ptr_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(GCMAccountTracker);
|
| -};
|
| -
|
| -} // namespace gcm
|
| -
|
| -#endif // CHROME_BROWSER_SERVICES_GCM_GCM_ACCOUNT_TRACKER_H_
|
|
|