1 // Copyright 2014 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/supervised_user/chromeos/manager_password_service_factory.h" 6 7 #include "chrome/browser/chromeos/login/users/supervised_user_manager.h" 8 #include "chrome/browser/chromeos/login/users/user.h" 9 #include "chrome/browser/chromeos/login/users/user_manager.h" 10 #include "chrome/browser/profiles/incognito_helpers.h" 11 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/supervised_user/chromeos/manager_password_service.h" 13 #include "chrome/browser/supervised_user/supervised_user_shared_settings_service_factory.h" 14 #include "chrome/browser/supervised_user/supervised_user_sync_service_factory.h" 15 #include "components/keyed_service/content/browser_context_dependency_manager.h" 16 17 namespace chromeos { 18 19 // static 20 ManagerPasswordService* GetForProfile(Profile * profile)21ManagerPasswordServiceFactory::GetForProfile(Profile* profile) { 22 return static_cast<ManagerPasswordService*>( 23 GetInstance()->GetServiceForBrowserContext(profile, true)); 24 } 25 26 // static 27 ManagerPasswordServiceFactory* GetInstance()28ManagerPasswordServiceFactory::GetInstance() { 29 return Singleton<ManagerPasswordServiceFactory>::get(); 30 } 31 ManagerPasswordServiceFactory()32ManagerPasswordServiceFactory::ManagerPasswordServiceFactory() 33 : BrowserContextKeyedServiceFactory( 34 "ManagerPasswordService", 35 BrowserContextDependencyManager::GetInstance()) { 36 DependsOn(SupervisedUserSharedSettingsServiceFactory::GetInstance()); 37 DependsOn(SupervisedUserSyncServiceFactory::GetInstance()); 38 } 39 40 ManagerPasswordServiceFactory:: ~ManagerPasswordServiceFactory()41 ~ManagerPasswordServiceFactory() {} 42 BuildServiceInstanceFor(content::BrowserContext * context) const43KeyedService* ManagerPasswordServiceFactory::BuildServiceInstanceFor( 44 content::BrowserContext* context) const { 45 Profile* profile= static_cast<Profile*>(context); 46 chromeos::User* user = chromeos::UserManager::Get()-> 47 GetUserByProfile(profile); 48 if (chromeos::UserManager::Get()->GetSupervisedUserManager()-> 49 HasSupervisedUsers(user->email())) { 50 ManagerPasswordService* result = new ManagerPasswordService(); 51 result->Init( 52 user->email(), 53 SupervisedUserSyncServiceFactory::GetForProfile(profile), 54 SupervisedUserSharedSettingsServiceFactory::GetForBrowserContext( 55 profile)); 56 return result; 57 } 58 return NULL; 59 } 60 61 content::BrowserContext* GetBrowserContextToUse(content::BrowserContext * context) const62ManagerPasswordServiceFactory::GetBrowserContextToUse( 63 content::BrowserContext* context) const { 64 return chrome::GetBrowserContextRedirectedInIncognito(context); 65 } 66 67 } // namespace chromeos 68