| OLD | NEW | 
|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "chrome/browser/prefs/pref_value_store.h" | 5 #include "chrome/browser/prefs/pref_value_store.h" | 
| 6 | 6 | 
|  | 7 #include "chrome/browser/prefs/pref_model_associator.h" | 
| 7 #include "chrome/browser/prefs/pref_notifier.h" | 8 #include "chrome/browser/prefs/pref_notifier.h" | 
| 8 | 9 | 
| 9 PrefValueStore::PrefStoreKeeper::PrefStoreKeeper() | 10 PrefValueStore::PrefStoreKeeper::PrefStoreKeeper() | 
| 10     : pref_value_store_(NULL), | 11     : pref_value_store_(NULL), | 
| 11       type_(PrefValueStore::INVALID_STORE) { | 12       type_(PrefValueStore::INVALID_STORE) { | 
| 12 } | 13 } | 
| 13 | 14 | 
| 14 PrefValueStore::PrefStoreKeeper::~PrefStoreKeeper() { | 15 PrefValueStore::PrefStoreKeeper::~PrefStoreKeeper() { | 
| 15   if (pref_store_.get()) { | 16   if (pref_store_.get()) { | 
| 16     pref_store_->RemoveObserver(this); | 17     pref_store_->RemoveObserver(this); | 
| (...skipping 25 matching lines...) Expand all  Loading... | 
| 42 } | 43 } | 
| 43 | 44 | 
| 44 PrefValueStore::PrefValueStore(PrefStore* managed_platform_prefs, | 45 PrefValueStore::PrefValueStore(PrefStore* managed_platform_prefs, | 
| 45                                PrefStore* managed_cloud_prefs, | 46                                PrefStore* managed_cloud_prefs, | 
| 46                                PrefStore* extension_prefs, | 47                                PrefStore* extension_prefs, | 
| 47                                PrefStore* command_line_prefs, | 48                                PrefStore* command_line_prefs, | 
| 48                                PrefStore* user_prefs, | 49                                PrefStore* user_prefs, | 
| 49                                PrefStore* recommended_platform_prefs, | 50                                PrefStore* recommended_platform_prefs, | 
| 50                                PrefStore* recommended_cloud_prefs, | 51                                PrefStore* recommended_cloud_prefs, | 
| 51                                PrefStore* default_prefs, | 52                                PrefStore* default_prefs, | 
|  | 53                                PrefModelAssociator* pref_sync_associator, | 
| 52                                PrefNotifier* pref_notifier) | 54                                PrefNotifier* pref_notifier) | 
| 53     : pref_notifier_(pref_notifier) { | 55     : pref_sync_associator_(pref_sync_associator), | 
|  | 56       pref_notifier_(pref_notifier) { | 
| 54   InitPrefStore(MANAGED_PLATFORM_STORE, managed_platform_prefs); | 57   InitPrefStore(MANAGED_PLATFORM_STORE, managed_platform_prefs); | 
| 55   InitPrefStore(MANAGED_CLOUD_STORE, managed_cloud_prefs); | 58   InitPrefStore(MANAGED_CLOUD_STORE, managed_cloud_prefs); | 
| 56   InitPrefStore(EXTENSION_STORE, extension_prefs); | 59   InitPrefStore(EXTENSION_STORE, extension_prefs); | 
| 57   InitPrefStore(COMMAND_LINE_STORE, command_line_prefs); | 60   InitPrefStore(COMMAND_LINE_STORE, command_line_prefs); | 
| 58   InitPrefStore(USER_STORE, user_prefs); | 61   InitPrefStore(USER_STORE, user_prefs); | 
| 59   InitPrefStore(RECOMMENDED_PLATFORM_STORE, recommended_platform_prefs); | 62   InitPrefStore(RECOMMENDED_PLATFORM_STORE, recommended_platform_prefs); | 
| 60   InitPrefStore(RECOMMENDED_CLOUD_STORE, recommended_cloud_prefs); | 63   InitPrefStore(RECOMMENDED_CLOUD_STORE, recommended_cloud_prefs); | 
| 61   InitPrefStore(DEFAULT_STORE, default_prefs); | 64   InitPrefStore(DEFAULT_STORE, default_prefs); | 
| 62 | 65 | 
| 63   CheckInitializationCompleted(); | 66   CheckInitializationCompleted(); | 
| 64 } | 67 } | 
| 65 | 68 | 
| 66 PrefValueStore::~PrefValueStore() {} | 69 PrefValueStore::~PrefValueStore() {} | 
| 67 | 70 | 
| 68 PrefValueStore* PrefValueStore::CloneAndSpecialize( | 71 PrefValueStore* PrefValueStore::CloneAndSpecialize( | 
| 69     PrefStore* managed_platform_prefs, | 72     PrefStore* managed_platform_prefs, | 
| 70     PrefStore* managed_cloud_prefs, | 73     PrefStore* managed_cloud_prefs, | 
| 71     PrefStore* extension_prefs, | 74     PrefStore* extension_prefs, | 
| 72     PrefStore* command_line_prefs, | 75     PrefStore* command_line_prefs, | 
| 73     PrefStore* user_prefs, | 76     PrefStore* user_prefs, | 
| 74     PrefStore* recommended_platform_prefs, | 77     PrefStore* recommended_platform_prefs, | 
| 75     PrefStore* recommended_cloud_prefs, | 78     PrefStore* recommended_cloud_prefs, | 
| 76     PrefStore* default_prefs, | 79     PrefStore* default_prefs, | 
|  | 80     PrefModelAssociator* pref_sync_associator, | 
| 77     PrefNotifier* pref_notifier) { | 81     PrefNotifier* pref_notifier) { | 
| 78   DCHECK(pref_notifier); | 82   DCHECK(pref_notifier); | 
| 79   if (!managed_platform_prefs) | 83   if (!managed_platform_prefs) | 
| 80     managed_platform_prefs = GetPrefStore(MANAGED_PLATFORM_STORE); | 84     managed_platform_prefs = GetPrefStore(MANAGED_PLATFORM_STORE); | 
| 81   if (!managed_cloud_prefs) | 85   if (!managed_cloud_prefs) | 
| 82     managed_cloud_prefs = GetPrefStore(MANAGED_CLOUD_STORE); | 86     managed_cloud_prefs = GetPrefStore(MANAGED_CLOUD_STORE); | 
| 83   if (!extension_prefs) | 87   if (!extension_prefs) | 
| 84     extension_prefs = GetPrefStore(EXTENSION_STORE); | 88     extension_prefs = GetPrefStore(EXTENSION_STORE); | 
| 85   if (!command_line_prefs) | 89   if (!command_line_prefs) | 
| 86     command_line_prefs = GetPrefStore(COMMAND_LINE_STORE); | 90     command_line_prefs = GetPrefStore(COMMAND_LINE_STORE); | 
| 87   if (!user_prefs) | 91   if (!user_prefs) | 
| 88     user_prefs = GetPrefStore(USER_STORE); | 92     user_prefs = GetPrefStore(USER_STORE); | 
| 89   if (!recommended_platform_prefs) | 93   if (!recommended_platform_prefs) | 
| 90     recommended_platform_prefs = GetPrefStore(RECOMMENDED_PLATFORM_STORE); | 94     recommended_platform_prefs = GetPrefStore(RECOMMENDED_PLATFORM_STORE); | 
| 91   if (!recommended_cloud_prefs) | 95   if (!recommended_cloud_prefs) | 
| 92     recommended_cloud_prefs = GetPrefStore(RECOMMENDED_CLOUD_STORE); | 96     recommended_cloud_prefs = GetPrefStore(RECOMMENDED_CLOUD_STORE); | 
| 93   if (!default_prefs) | 97   if (!default_prefs) | 
| 94     default_prefs = GetPrefStore(DEFAULT_STORE); | 98     default_prefs = GetPrefStore(DEFAULT_STORE); | 
| 95 | 99 | 
| 96   return new PrefValueStore( | 100   return new PrefValueStore( | 
| 97       managed_platform_prefs, managed_cloud_prefs, extension_prefs, | 101       managed_platform_prefs, managed_cloud_prefs, extension_prefs, | 
| 98       command_line_prefs, user_prefs, recommended_platform_prefs, | 102       command_line_prefs, user_prefs, recommended_platform_prefs, | 
| 99       recommended_cloud_prefs, default_prefs, | 103       recommended_cloud_prefs, default_prefs, pref_sync_associator, | 
| 100       pref_notifier); | 104       pref_notifier); | 
| 101 } | 105 } | 
| 102 | 106 | 
| 103 bool PrefValueStore::GetValue(const std::string& name, | 107 bool PrefValueStore::GetValue(const std::string& name, | 
| 104                               Value::ValueType type, | 108                               Value::ValueType type, | 
| 105                               const Value** out_value) const { | 109                               const Value** out_value) const { | 
| 106   *out_value = NULL; | 110   *out_value = NULL; | 
| 107   // Check the |PrefStore|s in order of their priority from highest to lowest | 111   // Check the |PrefStore|s in order of their priority from highest to lowest | 
| 108   // to find the value of the preference described by the given preference name. | 112   // to find the value of the preference described by the given preference name. | 
| 109   for (size_t i = 0; i <= PREF_STORE_TYPE_MAX; ++i) { | 113   for (size_t i = 0; i <= PREF_STORE_TYPE_MAX; ++i) { | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
| 122 } | 126 } | 
| 123 | 127 | 
| 124 void PrefValueStore::NotifyPrefChanged( | 128 void PrefValueStore::NotifyPrefChanged( | 
| 125     const char* path, | 129     const char* path, | 
| 126     PrefValueStore::PrefStoreType new_store) { | 130     PrefValueStore::PrefStoreType new_store) { | 
| 127   DCHECK(new_store != INVALID_STORE); | 131   DCHECK(new_store != INVALID_STORE); | 
| 128 | 132 | 
| 129   // If the pref is controlled by a higher-priority store, its effective value | 133   // If the pref is controlled by a higher-priority store, its effective value | 
| 130   // cannot have changed. | 134   // cannot have changed. | 
| 131   PrefStoreType controller = ControllingPrefStoreForPref(path); | 135   PrefStoreType controller = ControllingPrefStoreForPref(path); | 
| 132   if (controller == INVALID_STORE || controller >= new_store) | 136   if (controller == INVALID_STORE || controller >= new_store) { | 
| 133     pref_notifier_->OnPreferenceChanged(path); | 137     pref_notifier_->OnPreferenceChanged(path); | 
|  | 138     if (pref_sync_associator_) | 
|  | 139       pref_sync_associator_->ProcessPrefChange(path); | 
|  | 140   } | 
| 134 } | 141 } | 
| 135 | 142 | 
| 136 bool PrefValueStore::PrefValueInManagedStore(const char* name) const { | 143 bool PrefValueStore::PrefValueInManagedStore(const char* name) const { | 
| 137   return PrefValueInStore(name, MANAGED_PLATFORM_STORE) || | 144   return PrefValueInStore(name, MANAGED_PLATFORM_STORE) || | 
| 138          PrefValueInStore(name, MANAGED_CLOUD_STORE); | 145          PrefValueInStore(name, MANAGED_CLOUD_STORE); | 
| 139 } | 146 } | 
| 140 | 147 | 
| 141 bool PrefValueStore::PrefValueInExtensionStore(const char* name) const { | 148 bool PrefValueStore::PrefValueInExtensionStore(const char* name) const { | 
| 142   return PrefValueInStore(name, EXTENSION_STORE); | 149   return PrefValueInStore(name, EXTENSION_STORE); | 
| 143 } | 150 } | 
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 249 | 256 | 
| 250 void PrefValueStore::CheckInitializationCompleted() { | 257 void PrefValueStore::CheckInitializationCompleted() { | 
| 251   for (size_t i = 0; i <= PREF_STORE_TYPE_MAX; ++i) { | 258   for (size_t i = 0; i <= PREF_STORE_TYPE_MAX; ++i) { | 
| 252     scoped_refptr<PrefStore> store = | 259     scoped_refptr<PrefStore> store = | 
| 253         GetPrefStore(static_cast<PrefStoreType>(i)); | 260         GetPrefStore(static_cast<PrefStoreType>(i)); | 
| 254     if (store && !store->IsInitializationComplete()) | 261     if (store && !store->IsInitializationComplete()) | 
| 255       return; | 262       return; | 
| 256   } | 263   } | 
| 257   pref_notifier_->OnInitializationCompleted(); | 264   pref_notifier_->OnInitializationCompleted(); | 
| 258 } | 265 } | 
| OLD | NEW | 
|---|