1 // Copyright 2019 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/signin_manager_android_factory.h"
6 
7 #include "chrome/browser/android/signin/signin_manager_android.h"
8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/signin/identity_manager_factory.h"
10 #include "components/keyed_service/content/browser_context_dependency_manager.h"
11 
SigninManagerAndroidFactory()12 SigninManagerAndroidFactory::SigninManagerAndroidFactory()
13     : BrowserContextKeyedServiceFactory(
14           "SigninManagerAndroid",
15           BrowserContextDependencyManager::GetInstance()) {
16   DependsOn(IdentityManagerFactory::GetInstance());
17 }
18 
~SigninManagerAndroidFactory()19 SigninManagerAndroidFactory::~SigninManagerAndroidFactory() {}
20 
21 // static
22 base::android::ScopedJavaLocalRef<jobject>
GetJavaObjectForProfile(Profile * profile)23 SigninManagerAndroidFactory::GetJavaObjectForProfile(Profile* profile) {
24   return static_cast<SigninManagerAndroid*>(
25              GetInstance()->GetServiceForBrowserContext(profile, true))
26       ->GetJavaObject();
27 }
28 
29 // static
GetInstance()30 SigninManagerAndroidFactory* SigninManagerAndroidFactory::GetInstance() {
31   static base::NoDestructor<SigninManagerAndroidFactory> instance;
32   return instance.get();
33 }
34 
BuildServiceInstanceFor(content::BrowserContext * context) const35 KeyedService* SigninManagerAndroidFactory::BuildServiceInstanceFor(
36     content::BrowserContext* context) const {
37   Profile* profile = Profile::FromBrowserContext(context);
38   auto* identity_manager = IdentityManagerFactory::GetForProfile(profile);
39 
40   return new SigninManagerAndroid(profile, identity_manager);
41 }
42