1// Copyright 2014 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 "extensions/shell/browser/shell_extension_system_factory.h"
6
7#include "components/keyed_service/content/browser_context_dependency_manager.h"
8#include "extensions/browser/extension_prefs_factory.h"
9#include "extensions/browser/extension_registry_factory.h"
10#include "extensions/shell/browser/shell_extension_system.h"
11
12using content::BrowserContext;
13
14namespace extensions {
15
16ExtensionSystem* ShellExtensionSystemFactory::GetForBrowserContext(
17    BrowserContext* context) {
18  return static_cast<ShellExtensionSystem*>(
19      GetInstance()->GetServiceForBrowserContext(context, true));
20}
21
22// static
23ShellExtensionSystemFactory* ShellExtensionSystemFactory::GetInstance() {
24  return Singleton<ShellExtensionSystemFactory>::get();
25}
26
27ShellExtensionSystemFactory::ShellExtensionSystemFactory()
28    : ExtensionSystemProvider("ShellExtensionSystem",
29                              BrowserContextDependencyManager::GetInstance()) {
30  DependsOn(ExtensionPrefsFactory::GetInstance());
31  DependsOn(ExtensionRegistryFactory::GetInstance());
32}
33
34ShellExtensionSystemFactory::~ShellExtensionSystemFactory() {
35}
36
37KeyedService* ShellExtensionSystemFactory::BuildServiceInstanceFor(
38    BrowserContext* context) const {
39  return new ShellExtensionSystem(context);
40}
41
42BrowserContext* ShellExtensionSystemFactory::GetBrowserContextToUse(
43    BrowserContext* context) const {
44  // Use a separate instance for incognito.
45  return context;
46}
47
48bool ShellExtensionSystemFactory::ServiceIsCreatedWithBrowserContext() const {
49  return true;
50}
51
52}  // namespace extensions
53