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