extension_system_factory.cc revision 90dce4d38c5ff5333bea97d859d4e484e27edf0c
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/extensions/extension_system_factory.h"
6
7#include "chrome/browser/extensions/extension_prefs_factory.h"
8#include "chrome/browser/extensions/extension_system.h"
9#include "chrome/browser/policy/profile_policy_connector_factory.h"
10#include "chrome/browser/profiles/incognito_helpers.h"
11#include "chrome/browser/profiles/profile.h"
12#include "chrome/browser/themes/theme_service_factory.h"
13#include "chrome/browser/ui/global_error/global_error_service_factory.h"
14#include "components/browser_context_keyed_service/browser_context_dependency_manager.h"
15
16namespace extensions {
17
18// ExtensionSystemSharedFactory
19
20// static
21ExtensionSystemImpl::Shared*
22ExtensionSystemSharedFactory::GetForProfile(Profile* profile) {
23  return static_cast<ExtensionSystemImpl::Shared*>(
24      GetInstance()->GetServiceForBrowserContext(profile, true));
25}
26
27// static
28ExtensionSystemSharedFactory* ExtensionSystemSharedFactory::GetInstance() {
29  return Singleton<ExtensionSystemSharedFactory>::get();
30}
31
32ExtensionSystemSharedFactory::ExtensionSystemSharedFactory()
33    : BrowserContextKeyedServiceFactory(
34        "ExtensionSystemShared",
35        BrowserContextDependencyManager::GetInstance()) {
36  DependsOn(ExtensionPrefsFactory::GetInstance());
37  DependsOn(GlobalErrorServiceFactory::GetInstance());
38#if defined(ENABLE_THEMES)
39  DependsOn(ThemeServiceFactory::GetInstance());
40#endif
41  DependsOn(policy::ProfilePolicyConnectorFactory::GetInstance());
42}
43
44ExtensionSystemSharedFactory::~ExtensionSystemSharedFactory() {
45}
46
47BrowserContextKeyedService*
48ExtensionSystemSharedFactory::BuildServiceInstanceFor(
49    content::BrowserContext* profile) const {
50  return new ExtensionSystemImpl::Shared(static_cast<Profile*>(profile));
51}
52
53content::BrowserContext* ExtensionSystemSharedFactory::GetBrowserContextToUse(
54    content::BrowserContext* context) const {
55  return chrome::GetBrowserContextRedirectedInIncognito(context);
56}
57
58// ExtensionSystemFactory
59
60// static
61ExtensionSystem* ExtensionSystemFactory::GetForProfile(Profile* profile) {
62  return static_cast<ExtensionSystem*>(
63      GetInstance()->GetServiceForBrowserContext(profile, true));
64}
65
66// static
67ExtensionSystemFactory* ExtensionSystemFactory::GetInstance() {
68  return Singleton<ExtensionSystemFactory>::get();
69}
70
71ExtensionSystemFactory::ExtensionSystemFactory()
72    : BrowserContextKeyedServiceFactory(
73        "ExtensionSystem",
74        BrowserContextDependencyManager::GetInstance()) {
75  DependsOn(ExtensionSystemSharedFactory::GetInstance());
76}
77
78ExtensionSystemFactory::~ExtensionSystemFactory() {
79}
80
81BrowserContextKeyedService* ExtensionSystemFactory::BuildServiceInstanceFor(
82    content::BrowserContext* profile) const {
83  return new ExtensionSystemImpl(static_cast<Profile*>(profile));
84}
85
86content::BrowserContext* ExtensionSystemFactory::GetBrowserContextToUse(
87    content::BrowserContext* context) const {
88  return chrome::GetBrowserContextOwnInstanceInIncognito(context);
89}
90
91bool ExtensionSystemFactory::ServiceIsCreatedWithBrowserContext() const {
92  return true;
93}
94
95}  // namespace extensions
96