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/favicon/favicon_service_factory.h" 6 7 #include "base/memory/singleton.h" 8 #include "base/prefs/pref_service.h" 9 #include "chrome/browser/favicon/chrome_favicon_client_factory.h" 10 #include "chrome/browser/favicon/favicon_service.h" 11 #include "chrome/browser/history/history_service.h" 12 #include "chrome/browser/history/history_service_factory.h" 13 #include "chrome/common/pref_names.h" 14 #include "components/keyed_service/content/browser_context_dependency_manager.h" 15 16 // static GetForProfile(Profile * profile,Profile::ServiceAccessType sat)17FaviconService* FaviconServiceFactory::GetForProfile( 18 Profile* profile, Profile::ServiceAccessType sat) { 19 if (!profile->IsOffTheRecord()) { 20 return static_cast<FaviconService*>( 21 GetInstance()->GetServiceForBrowserContext(profile, true)); 22 } else if (sat == Profile::EXPLICIT_ACCESS) { 23 // Profile must be OffTheRecord in this case. 24 return static_cast<FaviconService*>( 25 GetInstance()->GetServiceForBrowserContext( 26 profile->GetOriginalProfile(), true)); 27 } 28 29 // Profile is OffTheRecord without access. 30 NOTREACHED() << "This profile is OffTheRecord"; 31 return NULL; 32 } 33 34 // static GetInstance()35FaviconServiceFactory* FaviconServiceFactory::GetInstance() { 36 return Singleton<FaviconServiceFactory>::get(); 37 } 38 FaviconServiceFactory()39FaviconServiceFactory::FaviconServiceFactory() 40 : BrowserContextKeyedServiceFactory( 41 "FaviconService", 42 BrowserContextDependencyManager::GetInstance()) { 43 DependsOn(HistoryServiceFactory::GetInstance()); 44 DependsOn(ChromeFaviconClientFactory::GetInstance()); 45 } 46 ~FaviconServiceFactory()47FaviconServiceFactory::~FaviconServiceFactory() {} 48 BuildServiceInstanceFor(content::BrowserContext * profile) const49KeyedService* FaviconServiceFactory::BuildServiceInstanceFor( 50 content::BrowserContext* profile) const { 51 FaviconClient* favicon_client = 52 ChromeFaviconClientFactory::GetForProfile(static_cast<Profile*>(profile)); 53 return new FaviconService(static_cast<Profile*>(profile), favicon_client); 54 } 55 ServiceIsNULLWhileTesting() const56bool FaviconServiceFactory::ServiceIsNULLWhileTesting() const { 57 return true; 58 } 59