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