1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/extensions/extension_garbage_collector_factory.h" 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/memory/singleton.h" 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/extensions/extension_garbage_collector.h" 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/extensions/extension_system_factory.h" 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/extensions/install_tracker_factory.h" 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "components/keyed_service/content/browser_context_dependency_manager.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "extensions/browser/extensions_browser_client.h" 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(OS_CHROMEOS) 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/extensions/extension_garbage_collector_chromeos.h" 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace extensions { 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// static 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochExtensionGarbageCollector* 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochExtensionGarbageCollectorFactory::GetForBrowserContext( 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch content::BrowserContext* context) { 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return static_cast<ExtensionGarbageCollector*>( 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetInstance()->GetServiceForBrowserContext(context, true)); 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// static 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochExtensionGarbageCollectorFactory* 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochExtensionGarbageCollectorFactory::GetInstance() { 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return Singleton<ExtensionGarbageCollectorFactory>::get(); 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochExtensionGarbageCollectorFactory::ExtensionGarbageCollectorFactory() 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch : BrowserContextKeyedServiceFactory( 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch "ExtensionGarbageCollector", 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch BrowserContextDependencyManager::GetInstance()) { 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 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