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 "chrome/browser/extensions/extension_garbage_collector_factory.h"
6
7#include "base/memory/singleton.h"
8#include "chrome/browser/extensions/extension_garbage_collector.h"
9#include "chrome/browser/extensions/extension_system_factory.h"
10#include "chrome/browser/extensions/install_tracker_factory.h"
11#include "components/keyed_service/content/browser_context_dependency_manager.h"
12#include "extensions/browser/extensions_browser_client.h"
13
14#if defined(OS_CHROMEOS)
15#include "chrome/browser/extensions/extension_garbage_collector_chromeos.h"
16#endif
17
18namespace extensions {
19
20// static
21ExtensionGarbageCollector*
22ExtensionGarbageCollectorFactory::GetForBrowserContext(
23    content::BrowserContext* context) {
24  return static_cast<ExtensionGarbageCollector*>(
25      GetInstance()->GetServiceForBrowserContext(context, true));
26}
27
28// static
29ExtensionGarbageCollectorFactory*
30ExtensionGarbageCollectorFactory::GetInstance() {
31  return Singleton<ExtensionGarbageCollectorFactory>::get();
32}
33
34ExtensionGarbageCollectorFactory::ExtensionGarbageCollectorFactory()
35    : BrowserContextKeyedServiceFactory(
36          "ExtensionGarbageCollector",
37          BrowserContextDependencyManager::GetInstance()) {
38  DependsOn(ExtensionsBrowserClient::Get()->GetExtensionSystemFactory());
39  DependsOn(InstallTrackerFactory::GetInstance());
40}
41
42ExtensionGarbageCollectorFactory::~ExtensionGarbageCollectorFactory() {}
43
44// static
45KeyedService* ExtensionGarbageCollectorFactory::BuildInstanceFor(
46    content::BrowserContext* context) {
47#if defined(OS_CHROMEOS)
48  return new ExtensionGarbageCollectorChromeOS(context);
49#else
50  return new ExtensionGarbageCollector(context);
51#endif
52}
53
54KeyedService* ExtensionGarbageCollectorFactory::BuildServiceInstanceFor(
55    content::BrowserContext* context) const {
56  return BuildInstanceFor(context);
57}
58
59bool ExtensionGarbageCollectorFactory::ServiceIsCreatedWithBrowserContext()
60    const {
61  return true;
62}
63
64bool ExtensionGarbageCollectorFactory::ServiceIsNULLWhileTesting() const {
65  return true;
66}
67
68}  // namespace extensions
69