1 // Copyright (c) 2012 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 #include "chrome/browser/signin/about_signin_internals_factory.h" 6 7 #include "base/prefs/pref_service.h" 8 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/signin/chrome_signin_client_factory.h" 10 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 11 #include "chrome/browser/signin/signin_manager_factory.h" 12 #include "chrome/common/pref_names.h" 13 #include "components/keyed_service/content/browser_context_dependency_manager.h" 14 #include "components/pref_registry/pref_registry_syncable.h" 15 #include "components/signin/core/browser/about_signin_internals.h" 16 #include "components/signin/core/browser/signin_internals_util.h" 17 #include "components/signin/core/browser/signin_manager.h" 18 #include "google_apis/gaia/gaia_constants.h" 19 20 using namespace signin_internals_util; 21 AboutSigninInternalsFactory()22AboutSigninInternalsFactory::AboutSigninInternalsFactory() 23 : BrowserContextKeyedServiceFactory( 24 "AboutSigninInternals", 25 BrowserContextDependencyManager::GetInstance()) { 26 DependsOn(SigninManagerFactory::GetInstance()); 27 DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance()); 28 DependsOn(ChromeSigninClientFactory::GetInstance()); 29 } 30 ~AboutSigninInternalsFactory()31AboutSigninInternalsFactory::~AboutSigninInternalsFactory() {} 32 33 // static GetForProfile(Profile * profile)34AboutSigninInternals* AboutSigninInternalsFactory::GetForProfile( 35 Profile* profile) { 36 return static_cast<AboutSigninInternals*>( 37 GetInstance()->GetServiceForBrowserContext(profile, true)); 38 } 39 40 // static GetInstance()41AboutSigninInternalsFactory* AboutSigninInternalsFactory::GetInstance() { 42 return Singleton<AboutSigninInternalsFactory>::get(); 43 } 44 RegisterProfilePrefs(user_prefs::PrefRegistrySyncable * user_prefs)45void AboutSigninInternalsFactory::RegisterProfilePrefs( 46 user_prefs::PrefRegistrySyncable* user_prefs) { 47 // SigninManager information for about:signin-internals. 48 for (int i = UNTIMED_FIELDS_BEGIN; i < UNTIMED_FIELDS_END; ++i) { 49 const std::string pref_path = SigninStatusFieldToString( 50 static_cast<UntimedSigninStatusField>(i)); 51 user_prefs->RegisterStringPref( 52 pref_path.c_str(), 53 std::string(), 54 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 55 } 56 for (int i = TIMED_FIELDS_BEGIN; i < TIMED_FIELDS_END; ++i) { 57 const std::string value = SigninStatusFieldToString( 58 static_cast<TimedSigninStatusField>(i)) + ".value"; 59 const std::string time = SigninStatusFieldToString( 60 static_cast<TimedSigninStatusField>(i)) + ".time"; 61 user_prefs->RegisterStringPref( 62 value.c_str(), 63 std::string(), 64 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 65 user_prefs->RegisterStringPref( 66 time.c_str(), 67 std::string(), 68 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 69 } 70 } 71 BuildServiceInstanceFor(content::BrowserContext * context) const72KeyedService* AboutSigninInternalsFactory::BuildServiceInstanceFor( 73 content::BrowserContext* context) const { 74 Profile* profile = Profile::FromBrowserContext(context); 75 AboutSigninInternals* service = new AboutSigninInternals( 76 ProfileOAuth2TokenServiceFactory::GetForProfile(profile), 77 SigninManagerFactory::GetForProfile(profile)); 78 service->Initialize(ChromeSigninClientFactory::GetForProfile(profile)); 79 return service; 80 } 81