- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / favicon / favicon_service_factory.cc
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
16 FaviconService* 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
34 FaviconServiceFactory* FaviconServiceFactory::GetInstance() {
35   return Singleton<FaviconServiceFactory>::get();
36 }
37
38 FaviconServiceFactory::FaviconServiceFactory()
39     : BrowserContextKeyedServiceFactory(
40         "FaviconService",
41         BrowserContextDependencyManager::GetInstance()) {
42   DependsOn(HistoryServiceFactory::GetInstance());
43 }
44
45 FaviconServiceFactory::~FaviconServiceFactory() {}
46
47 BrowserContextKeyedService* 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
54 bool FaviconServiceFactory::ServiceIsNULLWhileTesting() const {
55   return true;
56 }