| OLD | NEW |
| 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 #ifndef CHROME_BROWSER_SIGNIN_PROFILE_OAUTH2_TOKEN_SERVICE_H_ | 5 #ifndef CHROME_BROWSER_SIGNIN_PROFILE_OAUTH2_TOKEN_SERVICE_H_ |
| 6 #define CHROME_BROWSER_SIGNIN_PROFILE_OAUTH2_TOKEN_SERVICE_H_ | 6 #define CHROME_BROWSER_SIGNIN_PROFILE_OAUTH2_TOKEN_SERVICE_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/gtest_prod_util.h" | 10 #include "base/gtest_prod_util.h" |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 | 51 |
| 52 // Initializes this token service with the profile. | 52 // Initializes this token service with the profile. |
| 53 virtual void Initialize(Profile* profile); | 53 virtual void Initialize(Profile* profile); |
| 54 | 54 |
| 55 // BrowserContextKeyedService implementation. | 55 // BrowserContextKeyedService implementation. |
| 56 virtual void Shutdown() OVERRIDE; | 56 virtual void Shutdown() OVERRIDE; |
| 57 | 57 |
| 58 // SigninGlobalError::AuthStatusProvider implementation. | 58 // SigninGlobalError::AuthStatusProvider implementation. |
| 59 virtual GoogleServiceAuthError GetAuthStatus() const OVERRIDE; | 59 virtual GoogleServiceAuthError GetAuthStatus() const OVERRIDE; |
| 60 | 60 |
| 61 // Takes injected TokenService for testing. | 61 // Gets an account id of the primary account related to the profile. |
| 62 bool ShouldCacheForRefreshToken(TokenService *token_service, | 62 std::string GetPrimaryAccountId(); |
| 63 const std::string& refresh_token); | 63 |
| 64 // Lists account IDs of all accounts with a refresh token. |
| 65 virtual std::vector<std::string> GetAccounts() OVERRIDE; |
| 64 | 66 |
| 65 // Updates a |refresh_token| for an |account_id|. Credentials are persisted, | 67 // Updates a |refresh_token| for an |account_id|. Credentials are persisted, |
| 66 // and avialable through |LoadCredentials| after service is restarted. | 68 // and avialable through |LoadCredentials| after service is restarted. |
| 67 void UpdateCredentials(const std::string& account_id, | 69 void UpdateCredentials(const std::string& account_id, |
| 68 const std::string& refresh_token); | 70 const std::string& refresh_token); |
| 69 | 71 |
| 70 // Revokes credentials related to |account_id|. | 72 // Revokes credentials related to |account_id|. |
| 71 void RevokeCredentials(const std::string& account_id); | 73 void RevokeCredentials(const std::string& account_id); |
| 72 | 74 |
| 73 // Revokes all credentials handled by the object. | 75 // Revokes all credentials handled by the object. |
| 74 void RevokeAllCredentials(); | 76 void RevokeAllCredentials(); |
| 75 | 77 |
| 76 SigninGlobalError* signin_global_error() { | 78 SigninGlobalError* signin_global_error() { |
| 77 return signin_global_error_.get(); | 79 return signin_global_error_.get(); |
| 78 } | 80 } |
| 79 | 81 |
| 80 const SigninGlobalError* signin_global_error() const { | 82 const SigninGlobalError* signin_global_error() const { |
| 81 return signin_global_error_.get(); | 83 return signin_global_error_.get(); |
| 82 } | 84 } |
| 83 | 85 |
| 84 Profile* profile() const { return profile_; } | 86 Profile* profile() const { return profile_; } |
| 85 | 87 |
| 86 protected: | 88 protected: |
| 87 friend class ProfileOAuth2TokenServiceFactory; | 89 friend class ProfileOAuth2TokenServiceFactory; |
| 88 ProfileOAuth2TokenService(); | 90 ProfileOAuth2TokenService(); |
| 89 virtual ~ProfileOAuth2TokenService(); | 91 virtual ~ProfileOAuth2TokenService(); |
| 90 | 92 |
| 91 // OAuth2TokenService overrides. | 93 // OAuth2TokenService overrides. |
| 92 virtual std::string GetRefreshToken() OVERRIDE; | 94 virtual std::string GetRefreshToken(const std::string& account_id) OVERRIDE; |
| 93 | 95 |
| 94 // OAuth2TokenService implementation. | 96 // OAuth2TokenService implementation. |
| 95 virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE; | 97 virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE; |
| 96 | 98 |
| 97 // Updates the internal cache of the result from the most-recently-completed | 99 // Updates the internal cache of the result from the most-recently-completed |
| 98 // auth request (used for reporting errors to the user). | 100 // auth request (used for reporting errors to the user). |
| 99 virtual void UpdateAuthError(const GoogleServiceAuthError& error) OVERRIDE; | 101 virtual void UpdateAuthError( |
| 102 const std::string& account_id, |
| 103 const GoogleServiceAuthError& error) OVERRIDE; |
| 100 | 104 |
| 101 // Overridden to not cache tokens if the TokenService refresh token | 105 // Persists credentials for |account_id|. Enables overriding for |
| 102 // changes while a token fetch is in-flight. If the user logs out and | 106 // testing purposes, or other cases, when accessing the DB is not desired. |
| 103 // logs back in with a different account, then any in-flight token | 107 virtual void PersistCredentials(const std::string& account_id, |
| 104 // fetches will be for the old account's refresh token. Therefore | 108 const std::string& refresh_token); |
| 105 // when they come back, they shouldn't be cached. | 109 |
| 106 virtual void RegisterCacheEntry(const std::string& client_id, | 110 // Clears credentials persisted for |account_id|. Enables overriding for |
| 107 const std::string& refresh_token, | 111 // testing purposes, or other cases, when accessing the DB is not desired. |
| 108 const ScopeSet& scopes, | 112 virtual void ClearPersistedCredentials(const std::string& account_id); |
| 109 const std::string& access_token, | |
| 110 const base::Time& expiration_date) OVERRIDE; | |
| 111 | 113 |
| 112 private: | 114 private: |
| 113 FRIEND_TEST_ALL_PREFIXES(ProfileOAuth2TokenServiceTest, | 115 FRIEND_TEST_ALL_PREFIXES(ProfileOAuth2TokenServiceTest, |
| 114 StaleRefreshTokensNotCached); | |
| 115 FRIEND_TEST_ALL_PREFIXES(ProfileOAuth2TokenServiceTest, | |
| 116 TokenServiceUpdateClearsCache); | 116 TokenServiceUpdateClearsCache); |
| 117 FRIEND_TEST_ALL_PREFIXES(ProfileOAuth2TokenServiceTest, | 117 FRIEND_TEST_ALL_PREFIXES(ProfileOAuth2TokenServiceTest, |
| 118 PersistenceDBUpgrade); | 118 PersistenceDBUpgrade); |
| 119 FRIEND_TEST_ALL_PREFIXES(ProfileOAuth2TokenServiceTest, | 119 FRIEND_TEST_ALL_PREFIXES(ProfileOAuth2TokenServiceTest, |
| 120 PersistenceLoadCredentials); | 120 PersistenceLoadCredentials); |
| 121 | 121 |
| 122 // WebDataServiceConsumer implementation: | 122 // WebDataServiceConsumer implementation: |
| 123 virtual void OnWebDataServiceRequestDone( | 123 virtual void OnWebDataServiceRequestDone( |
| 124 WebDataServiceBase::Handle handle, | 124 WebDataServiceBase::Handle handle, |
| 125 const WDTypedResult* result) OVERRIDE; | 125 const WDTypedResult* result) OVERRIDE; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 154 // The auth status from the most-recently-completed request. | 154 // The auth status from the most-recently-completed request. |
| 155 GoogleServiceAuthError last_auth_error_; | 155 GoogleServiceAuthError last_auth_error_; |
| 156 | 156 |
| 157 // Registrar for notifications from the TokenService. | 157 // Registrar for notifications from the TokenService. |
| 158 content::NotificationRegistrar registrar_; | 158 content::NotificationRegistrar registrar_; |
| 159 | 159 |
| 160 DISALLOW_COPY_AND_ASSIGN(ProfileOAuth2TokenService); | 160 DISALLOW_COPY_AND_ASSIGN(ProfileOAuth2TokenService); |
| 161 }; | 161 }; |
| 162 | 162 |
| 163 #endif // CHROME_BROWSER_SIGNIN_PROFILE_OAUTH2_TOKEN_SERVICE_H_ | 163 #endif // CHROME_BROWSER_SIGNIN_PROFILE_OAUTH2_TOKEN_SERVICE_H_ |
| OLD | NEW |