Update To 11.40.268.0
[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/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 "components/keyed_service/content/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   DependsOn(ChromeFaviconClientFactory::GetInstance());
44 }
45
46 FaviconServiceFactory::~FaviconServiceFactory() {}
47
48 KeyedService* FaviconServiceFactory::BuildServiceInstanceFor(
49     content::BrowserContext* profile) const {
50   FaviconClient* favicon_client =
51       ChromeFaviconClientFactory::GetForProfile(static_cast<Profile*>(profile));
52   return new FaviconService(static_cast<Profile*>(profile), favicon_client);
53 }
54
55 bool FaviconServiceFactory::ServiceIsNULLWhileTesting() const {
56   return true;
57 }