15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file. 490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/command_line.h" 690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/prefs/pref_service.h" 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_dependency_manager.h" 8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "content/public/browser/browser_context.h" 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extension_pref_value_map.h" 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extension_pref_value_map_factory.h" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extension_prefs.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "extensions/browser/extension_prefs_factory.h" 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "extensions/browser/extensions_browser_client.h" 1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "extensions/common/constants.h" 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace extensions { 1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// static 19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)ExtensionPrefs* ExtensionPrefsFactory::GetForBrowserContext( 20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) content::BrowserContext* context) { 2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return static_cast<ExtensionPrefs*>( 22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) GetInstance()->GetServiceForBrowserContext(context, true)); 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// static 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)ExtensionPrefsFactory* ExtensionPrefsFactory::GetInstance() { 2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return Singleton<ExtensionPrefsFactory>::get(); 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void ExtensionPrefsFactory::SetInstanceForTesting( 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) content::BrowserContext* context, ExtensionPrefs* prefs) { 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) Associate(context, prefs); 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)ExtensionPrefsFactory::ExtensionPrefsFactory() 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) : BrowserContextKeyedServiceFactory( 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "ExtensionPrefs", 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) BrowserContextDependencyManager::GetInstance()) { 3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)ExtensionPrefsFactory::~ExtensionPrefsFactory() { 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)KeyedService* ExtensionPrefsFactory::BuildServiceInstanceFor( 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) content::BrowserContext* context) const { 46a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ExtensionsBrowserClient* client = ExtensionsBrowserClient::Get(); 47e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch std::vector<ExtensionPrefsObserver*> prefs_observers; 48e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch client->GetEarlyExtensionPrefsObservers(context, &prefs_observers); 4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return ExtensionPrefs::Create( 50a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) client->GetPrefServiceForContext(context), 51a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) context->GetPath().AppendASCII(extensions::kInstallDirectoryName), 52a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) ExtensionPrefValueMapFactory::GetForBrowserContext(context), 53a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) client->CreateAppSorting().Pass(), 54e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch client->AreExtensionsDisabled(*CommandLine::ForCurrentProcess(), context), 55e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch prefs_observers); 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)content::BrowserContext* ExtensionPrefsFactory::GetBrowserContextToUse( 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) content::BrowserContext* context) const { 60a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return ExtensionsBrowserClient::Get()->GetOriginalContext(context); 6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} 6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace extensions 64