diff options
Diffstat (limited to 'chromium/chrome/browser/signin/signin_profile_attributes_updater_factory.cc')
-rw-r--r-- | chromium/chrome/browser/signin/signin_profile_attributes_updater_factory.cc | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/chromium/chrome/browser/signin/signin_profile_attributes_updater_factory.cc b/chromium/chrome/browser/signin/signin_profile_attributes_updater_factory.cc new file mode 100644 index 00000000000..86c62a2ce6e --- /dev/null +++ b/chromium/chrome/browser/signin/signin_profile_attributes_updater_factory.cc @@ -0,0 +1,53 @@ +// Copyright 2018 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. + +#include "chrome/browser/signin/signin_profile_attributes_updater_factory.h" + +#include "chrome/browser/browser_process.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/browser/profiles/profile_manager.h" +#include "chrome/browser/signin/identity_manager_factory.h" +#include "chrome/browser/signin/signin_profile_attributes_updater.h" +#include "components/keyed_service/content/browser_context_dependency_manager.h" + +// static +SigninProfileAttributesUpdater* +SigninProfileAttributesUpdaterFactory::GetForProfile(Profile* profile) { + return static_cast<SigninProfileAttributesUpdater*>( + GetInstance()->GetServiceForBrowserContext(profile, true)); +} + +// static +SigninProfileAttributesUpdaterFactory* +SigninProfileAttributesUpdaterFactory::GetInstance() { + return base::Singleton<SigninProfileAttributesUpdaterFactory>::get(); +} + +SigninProfileAttributesUpdaterFactory::SigninProfileAttributesUpdaterFactory() + : BrowserContextKeyedServiceFactory( + "SigninProfileAttributesUpdater", + BrowserContextDependencyManager::GetInstance()) { + DependsOn(IdentityManagerFactory::GetInstance()); +} + +SigninProfileAttributesUpdaterFactory:: + ~SigninProfileAttributesUpdaterFactory() {} + +KeyedService* SigninProfileAttributesUpdaterFactory::BuildServiceInstanceFor( + content::BrowserContext* context) const { + Profile* profile = Profile::FromBrowserContext(context); + // Some tests don't have a ProfileManager, disable this service. + if (!g_browser_process->profile_manager()) + return nullptr; + + return new SigninProfileAttributesUpdater( + IdentityManagerFactory::GetForProfile(profile), + &g_browser_process->profile_manager()->GetProfileAttributesStorage(), + profile->GetPath(), profile->GetPrefs()); +} + +bool SigninProfileAttributesUpdaterFactory::ServiceIsCreatedWithBrowserContext() + const { + return true; +} |