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 "base/command_line.h" 6#include "base/prefs/pref_service.h" 7#include "components/keyed_service/content/browser_context_dependency_manager.h" 8#include "content/public/browser/browser_context.h" 9#include "extensions/browser/extension_pref_value_map.h" 10#include "extensions/browser/extension_pref_value_map_factory.h" 11#include "extensions/browser/extension_prefs.h" 12#include "extensions/browser/extension_prefs_factory.h" 13#include "extensions/browser/extensions_browser_client.h" 14#include "extensions/common/constants.h" 15 16namespace extensions { 17 18// static 19ExtensionPrefs* ExtensionPrefsFactory::GetForBrowserContext( 20 content::BrowserContext* context) { 21 return static_cast<ExtensionPrefs*>( 22 GetInstance()->GetServiceForBrowserContext(context, true)); 23} 24 25// static 26ExtensionPrefsFactory* ExtensionPrefsFactory::GetInstance() { 27 return Singleton<ExtensionPrefsFactory>::get(); 28} 29 30void ExtensionPrefsFactory::SetInstanceForTesting( 31 content::BrowserContext* context, ExtensionPrefs* prefs) { 32 Associate(context, prefs); 33} 34 35ExtensionPrefsFactory::ExtensionPrefsFactory() 36 : BrowserContextKeyedServiceFactory( 37 "ExtensionPrefs", 38 BrowserContextDependencyManager::GetInstance()) { 39} 40 41ExtensionPrefsFactory::~ExtensionPrefsFactory() { 42} 43 44KeyedService* ExtensionPrefsFactory::BuildServiceInstanceFor( 45 content::BrowserContext* context) const { 46 ExtensionsBrowserClient* client = ExtensionsBrowserClient::Get(); 47 std::vector<ExtensionPrefsObserver*> prefs_observers; 48 client->GetEarlyExtensionPrefsObservers(context, &prefs_observers); 49 return ExtensionPrefs::Create( 50 client->GetPrefServiceForContext(context), 51 context->GetPath().AppendASCII(extensions::kInstallDirectoryName), 52 ExtensionPrefValueMapFactory::GetForBrowserContext(context), 53 client->CreateAppSorting().Pass(), 54 client->AreExtensionsDisabled(*CommandLine::ForCurrentProcess(), context), 55 prefs_observers); 56} 57 58content::BrowserContext* ExtensionPrefsFactory::GetBrowserContextToUse( 59 content::BrowserContext* context) const { 60 return ExtensionsBrowserClient::Get()->GetOriginalContext(context); 61} 62 63} // namespace extensions 64