| Index: chrome/browser/prefs/pref_value_store.cc
|
| diff --git a/chrome/browser/prefs/pref_value_store.cc b/chrome/browser/prefs/pref_value_store.cc
|
| index 84b6919ec7067db82354d49ea8596d67b7c1a504..b327e33dcc9e77e505b297a33c38e262f50db810 100644
|
| --- a/chrome/browser/prefs/pref_value_store.cc
|
| +++ b/chrome/browser/prefs/pref_value_store.cc
|
| @@ -5,7 +5,6 @@
|
| #include "chrome/browser/prefs/pref_value_store.h"
|
|
|
| #include "chrome/browser/browser_thread.h"
|
| -#include "chrome/browser/extensions/extension_pref_store.h"
|
| #include "chrome/browser/policy/configuration_policy_pref_store.h"
|
| #include "chrome/browser/prefs/command_line_pref_store.h"
|
| #include "chrome/browser/prefs/in_memory_pref_store.h"
|
| @@ -41,13 +40,13 @@ PrefValueStore* PrefValueStore::CreatePrefValueStore(
|
| using policy::ConfigurationPolicyPrefStore;
|
| ConfigurationPolicyPrefStore* managed = NULL;
|
| ConfigurationPolicyPrefStore* device_management = NULL;
|
| - ExtensionPrefStore* extension = NULL;
|
| CommandLinePrefStore* command_line = NULL;
|
| ConfigurationPolicyPrefStore* recommended = NULL;
|
|
|
| JsonPrefStore* user = new JsonPrefStore(
|
| pref_filename,
|
| BrowserThread::GetMessageLoopProxyForThread(BrowserThread::FILE));
|
| + InMemoryPrefStore* extension = new InMemoryPrefStore();
|
| InMemoryPrefStore* default_store = new InMemoryPrefStore();
|
|
|
| if (!user_only) {
|
| @@ -56,7 +55,6 @@ PrefValueStore* PrefValueStore::CreatePrefValueStore(
|
| device_management =
|
| ConfigurationPolicyPrefStore::CreateDeviceManagementPolicyPrefStore(
|
| profile);
|
| - extension = new ExtensionPrefStore(profile, PrefNotifier::EXTENSION_STORE);
|
| command_line = new CommandLinePrefStore(CommandLine::ForCurrentProcess());
|
| recommended =
|
| ConfigurationPolicyPrefStore::CreateRecommendedPolicyPrefStore();
|
| @@ -148,13 +146,19 @@ bool PrefValueStore::HasPrefPath(const char* path) const {
|
| bool PrefValueStore::PrefHasChanged(const char* path,
|
| PrefNotifier::PrefStoreType new_store) {
|
| DCHECK(new_store != PrefNotifier::INVALID_STORE);
|
| + // If we get a change notification about an unregistered preference,
|
| + // discard it silently because there cannot be any listeners.
|
| + if (pref_types_.find(path) == pref_types_.end())
|
| + return false;
|
| +
|
| // Replying that the pref has changed may cause problems, but it's the safer
|
| // choice.
|
| if (new_store == PrefNotifier::INVALID_STORE)
|
| return true;
|
|
|
| PrefNotifier::PrefStoreType controller = ControllingPrefStoreForPref(path);
|
| - DCHECK(controller != PrefNotifier::INVALID_STORE);
|
| + DCHECK(controller != PrefNotifier::INVALID_STORE)
|
| + << "Invalid controller for path " << path;
|
| if (controller == PrefNotifier::INVALID_STORE)
|
| return true;
|
|
|
| @@ -463,6 +467,10 @@ bool PrefValueStore::HasPolicyConflictingUserProxySettings() {
|
| return false;
|
| }
|
|
|
| +PrefStore* PrefValueStore::GetExtensionPrefStore() const {
|
| + return pref_stores_[PrefNotifier::EXTENSION_STORE].get();
|
| +}
|
| +
|
| PrefValueStore::PrefValueStore(PrefStore* managed_platform_prefs,
|
| PrefStore* device_management_prefs,
|
| PrefStore* extension_prefs,
|
|
|