12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/signin/about_signin_internals_factory.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h" 8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "chrome/browser/profiles/profile.h" 9e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "chrome/browser/signin/chrome_signin_client_factory.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 11e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "chrome/browser/signin/signin_manager_factory.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/pref_names.h" 13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_dependency_manager.h" 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/pref_registry/pref_registry_syncable.h" 15e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "components/signin/core/browser/about_signin_internals.h" 16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "components/signin/core/browser/signin_internals_util.h" 17e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "components/signin/core/browser/signin_manager.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "google_apis/gaia/gaia_constants.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using namespace signin_internals_util; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AboutSigninInternalsFactory::AboutSigninInternalsFactory() 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) : BrowserContextKeyedServiceFactory( 2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) "AboutSigninInternals", 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) BrowserContextDependencyManager::GetInstance()) { 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DependsOn(SigninManagerFactory::GetInstance()); 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DependsOn(ProfileOAuth2TokenServiceFactory::GetInstance()); 28e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch DependsOn(ChromeSigninClientFactory::GetInstance()); 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AboutSigninInternalsFactory::~AboutSigninInternalsFactory() {} 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AboutSigninInternals* AboutSigninInternalsFactory::GetForProfile( 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Profile* profile) { 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return static_cast<AboutSigninInternals*>( 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) GetInstance()->GetServiceForBrowserContext(profile, true)); 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AboutSigninInternalsFactory* AboutSigninInternalsFactory::GetInstance() { 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return Singleton<AboutSigninInternalsFactory>::get(); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochvoid AboutSigninInternalsFactory::RegisterProfilePrefs( 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable* user_prefs) { 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // SigninManager information for about:signin-internals. 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int i = UNTIMED_FIELDS_BEGIN; i < UNTIMED_FIELDS_END; ++i) { 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string pref_path = SigninStatusFieldToString( 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<UntimedSigninStatusField>(i)); 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs->RegisterStringPref( 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) pref_path.c_str(), 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string(), 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (int i = TIMED_FIELDS_BEGIN; i < TIMED_FIELDS_END; ++i) { 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string value = SigninStatusFieldToString( 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<TimedSigninStatusField>(i)) + ".value"; 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string time = SigninStatusFieldToString( 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<TimedSigninStatusField>(i)) + ".time"; 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs->RegisterStringPref( 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) value.c_str(), 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string(), 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs->RegisterStringPref( 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) time.c_str(), 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string(), 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)KeyedService* AboutSigninInternalsFactory::BuildServiceInstanceFor( 73e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch content::BrowserContext* context) const { 74e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch Profile* profile = Profile::FromBrowserContext(context); 75e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch AboutSigninInternals* service = new AboutSigninInternals( 76e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ProfileOAuth2TokenServiceFactory::GetForProfile(profile), 77e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch SigninManagerFactory::GetForProfile(profile)); 78e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch service->Initialize(ChromeSigninClientFactory::GetForProfile(profile)); 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return service; 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 81