extension_system_factory.cc revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
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/policy/profile_policy_connector_factory.h"
8#include "chrome/browser/profiles/profile.h"
9#include "chrome/browser/ui/global_error/global_error_service_factory.h"
10#include "components/keyed_service/content/browser_context_dependency_manager.h"
11#include "extensions/browser/extension_prefs_factory.h"
12#include "extensions/browser/extension_registry_factory.h"
13#include "extensions/browser/extension_system.h"
14#include "extensions/browser/extensions_browser_client.h"
15#include "extensions/browser/renderer_startup_helper.h"
16
17namespace extensions {
18
19// ExtensionSystemSharedFactory
20
21// static
22ExtensionSystemImpl::Shared*
23ExtensionSystemSharedFactory::GetForBrowserContext(
24    content::BrowserContext* context) {
25  return static_cast<ExtensionSystemImpl::Shared*>(
26      GetInstance()->GetServiceForBrowserContext(context, true));
27}
28
29// static
30ExtensionSystemSharedFactory* ExtensionSystemSharedFactory::GetInstance() {
31  return Singleton<ExtensionSystemSharedFactory>::get();
32}
33
34ExtensionSystemSharedFactory::ExtensionSystemSharedFactory()
35    : BrowserContextKeyedServiceFactory(
36        "ExtensionSystemShared",
37        BrowserContextDependencyManager::GetInstance()) {
38  DependsOn(ExtensionPrefsFactory::GetInstance());
39  // This depends on ExtensionService which depends on ExtensionRegistry.
40  DependsOn(ExtensionRegistryFactory::GetInstance());
41  DependsOn(GlobalErrorServiceFactory::GetInstance());
42  DependsOn(policy::ProfilePolicyConnectorFactory::GetInstance());
43  DependsOn(RendererStartupHelperFactory::GetInstance());
44}
45
46ExtensionSystemSharedFactory::~ExtensionSystemSharedFactory() {
47}
48
49KeyedService* ExtensionSystemSharedFactory::BuildServiceInstanceFor(
50    content::BrowserContext* context) const {
51  return new ExtensionSystemImpl::Shared(static_cast<Profile*>(context));
52}
53
54content::BrowserContext* ExtensionSystemSharedFactory::GetBrowserContextToUse(
55    content::BrowserContext* context) const {
56  // Redirected in incognito.
57  return ExtensionsBrowserClient::Get()->GetOriginalContext(context);
58}
59
60// ExtensionSystemFactory
61
62// static
63ExtensionSystem* ExtensionSystemFactory::GetForBrowserContext(
64    content::BrowserContext* context) {
65  return static_cast<ExtensionSystem*>(
66      GetInstance()->GetServiceForBrowserContext(context, true));
67}
68
69// static
70ExtensionSystemFactory* ExtensionSystemFactory::GetInstance() {
71  return Singleton<ExtensionSystemFactory>::get();
72}
73
74ExtensionSystemFactory::ExtensionSystemFactory()
75    : ExtensionSystemProvider("ExtensionSystem",
76                              BrowserContextDependencyManager::GetInstance()) {
77  DCHECK(ExtensionsBrowserClient::Get())
78      << "ExtensionSystemFactory must be initialized after BrowserProcess";
79  DependsOn(ExtensionSystemSharedFactory::GetInstance());
80}
81
82ExtensionSystemFactory::~ExtensionSystemFactory() {
83}
84
85KeyedService* ExtensionSystemFactory::BuildServiceInstanceFor(
86    content::BrowserContext* context) const {
87  return new ExtensionSystemImpl(static_cast<Profile*>(context));
88}
89
90content::BrowserContext* ExtensionSystemFactory::GetBrowserContextToUse(
91    content::BrowserContext* context) const {
92  // Separate instance in incognito.
93  return context;
94}
95
96bool ExtensionSystemFactory::ServiceIsCreatedWithBrowserContext() const {
97  return true;
98}
99
100}  // namespace extensions
101