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 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_SIGNIN_SIGNIN_ACCOUNT_ID_HELPER_H_ 6 #define CHROME_BROWSER_SIGNIN_SIGNIN_ACCOUNT_ID_HELPER_H_ 7 8 #include "content/public/browser/notification_observer.h" 9 #include "content/public/browser/notification_registrar.h" 10 #include "google_apis/gaia/gaia_oauth_client.h" 11 #include "google_apis/gaia/oauth2_token_service.h" 12 13 class CookieSettings; 14 class GaiaAuthFetcher; 15 class Profile; 16 17 // The helper class for managing the obfuscated account ID of the primary 18 // account. It fetches the ID when user first signs into Chrome or when user 19 // opens a connected Chrome profile without an obfuscated account ID, and stores 20 // the ID in the profile preference. 21 class SigninAccountIdHelper 22 : public content::NotificationObserver, 23 public OAuth2TokenService::Observer { 24 public: 25 explicit SigninAccountIdHelper(Profile* profile); 26 virtual ~SigninAccountIdHelper(); 27 28 // content::NotificationObserver 29 virtual void Observe(int type, 30 const content::NotificationSource& source, 31 const content::NotificationDetails& details) OVERRIDE; 32 33 // OAuth2TokenService::Observer: 34 virtual void OnRefreshTokenAvailable(const std::string& email) OVERRIDE; 35 36 // Disables network requests for testing to avoid messing up with irrelevant 37 // tests. 38 static void SetDisableForTest(bool disable_for_test); 39 40 private: 41 // Invoked when receiving the response for |account_id_fetcher_|. 42 void OnPrimaryAccountIdFetched(const std::string& account_id); 43 44 // Helper class for fetching the obfuscated account ID. 45 class AccountIdFetcher; 46 scoped_ptr<AccountIdFetcher> id_fetcher_; 47 48 static bool disable_for_test_; 49 50 Profile* profile_; 51 content::NotificationRegistrar registrar_; 52 53 DISALLOW_COPY_AND_ASSIGN(SigninAccountIdHelper); 54 }; 55 56 #endif // CHROME_BROWSER_SIGNIN_SIGNIN_ACCOUNT_ID_HELPER_H_ 57