Home | History | Annotate | Download | only in plugins
      1 // Copyright (c) 2012 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/plugins/plugin_prefs_factory.h"
      6 
      7 #include "base/path_service.h"
      8 #include "base/prefs/pref_service.h"
      9 #include "chrome/browser/plugins/plugin_prefs.h"
     10 #include "chrome/browser/profiles/incognito_helpers.h"
     11 #include "chrome/browser/profiles/profile.h"
     12 #include "chrome/common/chrome_paths.h"
     13 #include "chrome/common/pref_names.h"
     14 #include "components/browser_context_keyed_service/browser_context_dependency_manager.h"
     15 #include "components/browser_context_keyed_service/browser_context_keyed_service.h"
     16 #include "components/user_prefs/pref_registry_syncable.h"
     17 
     18 // static
     19 PluginPrefsFactory* PluginPrefsFactory::GetInstance() {
     20   return Singleton<PluginPrefsFactory>::get();
     21 }
     22 
     23 // static
     24 scoped_refptr<PluginPrefs> PluginPrefsFactory::GetPrefsForProfile(
     25     Profile* profile) {
     26   return static_cast<PluginPrefs*>(
     27       GetInstance()->GetServiceForBrowserContext(profile, true).get());
     28 }
     29 
     30 // static
     31 scoped_refptr<RefcountedBrowserContextKeyedService>
     32 PluginPrefsFactory::CreateForTestingProfile(content::BrowserContext* profile) {
     33   return static_cast<PluginPrefs*>(
     34       GetInstance()->BuildServiceInstanceFor(profile).get());
     35 }
     36 
     37 PluginPrefsFactory::PluginPrefsFactory()
     38     : RefcountedBrowserContextKeyedServiceFactory(
     39           "PluginPrefs", BrowserContextDependencyManager::GetInstance()) {
     40 }
     41 
     42 PluginPrefsFactory::~PluginPrefsFactory() {}
     43 
     44 scoped_refptr<RefcountedBrowserContextKeyedService>
     45 PluginPrefsFactory::BuildServiceInstanceFor(
     46     content::BrowserContext* context) const {
     47   Profile* profile = static_cast<Profile*>(context);
     48   scoped_refptr<PluginPrefs> plugin_prefs(new PluginPrefs());
     49   plugin_prefs->set_profile(profile->GetOriginalProfile());
     50   plugin_prefs->SetPrefs(profile->GetPrefs());
     51   return plugin_prefs;
     52 }
     53 
     54 void PluginPrefsFactory::RegisterProfilePrefs(
     55     user_prefs::PrefRegistrySyncable* registry) {
     56   base::FilePath internal_dir;
     57   PathService::Get(chrome::DIR_INTERNAL_PLUGINS, &internal_dir);
     58   registry->RegisterFilePathPref(
     59       prefs::kPluginsLastInternalDirectory,
     60       internal_dir,
     61       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
     62   registry->RegisterBooleanPref(
     63       prefs::kPluginsMigratedToPepperFlash,
     64       false,
     65       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
     66   registry->RegisterBooleanPref(
     67       prefs::kPluginsRemovedOldComponentPepperFlashSettings,
     68       false,
     69       user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
     70   registry->RegisterListPref(prefs::kPluginsPluginsList,
     71                              user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
     72   registry->RegisterListPref(prefs::kPluginsDisabledPlugins,
     73                              user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
     74   registry->RegisterListPref(prefs::kPluginsDisabledPluginsExceptions,
     75                              user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
     76   registry->RegisterListPref(prefs::kPluginsEnabledPlugins,
     77                              user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
     78 }
     79 
     80 content::BrowserContext* PluginPrefsFactory::GetBrowserContextToUse(
     81     content::BrowserContext* context) const {
     82   return chrome::GetBrowserContextRedirectedInIncognito(context);
     83 }
     84 
     85 bool PluginPrefsFactory::ServiceIsNULLWhileTesting() const {
     86   return true;
     87 }
     88 
     89 bool PluginPrefsFactory::ServiceIsCreatedWithBrowserContext() const {
     90   return true;
     91 }
     92