Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_hash_store_impl.h" | 5 #include "chrome/browser/prefs/pref_hash_store_impl.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
| 9 #include "base/prefs/pref_registry_simple.h" | 9 #include "base/prefs/pref_registry_simple.h" |
| 10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
| 11 #include "base/time/time.h" | |
| 11 #include "base/values.h" | 12 #include "base/values.h" |
| 12 #include "chrome/common/pref_names.h" | 13 #include "chrome/common/pref_names.h" |
| 13 | 14 |
| 14 PrefHashStoreImpl::PrefHashStoreImpl(const std::string& hash_store_id, | 15 PrefHashStoreImpl::PrefHashStoreImpl(const std::string& hash_store_id, |
| 15 const std::string& seed, | 16 const std::string& seed, |
| 16 const std::string& device_id, | 17 const std::string& device_id, |
| 17 PrefService* local_state) | 18 PrefService* local_state) |
| 18 : hash_store_id_(hash_store_id), | 19 : hash_store_id_(hash_store_id), |
| 19 pref_hash_calculator_(seed, device_id), | 20 pref_hash_calculator_(seed, device_id), |
| 20 local_state_(local_state), | 21 local_state_(local_state), |
| 21 initial_hashes_dictionary_trusted_(IsHashDictionaryTrusted()) { | 22 initial_hashes_dictionary_trusted_(IsHashDictionaryTrusted()) { |
| 22 UMA_HISTOGRAM_BOOLEAN("Settings.HashesDictionaryTrusted", | 23 UMA_HISTOGRAM_BOOLEAN("Settings.HashesDictionaryTrusted", |
| 23 initial_hashes_dictionary_trusted_); | 24 initial_hashes_dictionary_trusted_); |
| 24 } | 25 } |
| 25 | 26 |
| 26 // static | 27 // static |
| 27 void PrefHashStoreImpl::RegisterPrefs(PrefRegistrySimple* registry) { | 28 void PrefHashStoreImpl::RegisterPrefs(PrefRegistrySimple* registry) { |
| 28 // Register the top level dictionary to map profile names to dictionaries of | 29 // Register the top level dictionary to map profile names to dictionaries of |
| 29 // tracked preferences. | 30 // tracked preferences. |
| 30 registry->RegisterDictionaryPref(prefs::kProfilePreferenceHashes); | 31 registry->RegisterDictionaryPref(prefs::kProfilePreferenceHashes); |
| 32 // Register the pref that maintains state about the last time a reset event | |
| 33 // occurred. Used to decide whether to show UI. | |
| 34 registry->RegisterInt64Pref(prefs::kProfilePreferenceResetTime, 0L); | |
| 31 } | 35 } |
| 32 | 36 |
| 33 void PrefHashStoreImpl::Reset() { | 37 void PrefHashStoreImpl::Reset() { |
| 34 DictionaryPrefUpdate update(local_state_, prefs::kProfilePreferenceHashes); | 38 DictionaryPrefUpdate update(local_state_, prefs::kProfilePreferenceHashes); |
| 35 | 39 |
| 36 // Remove the dictionary corresponding to the profile name, which may have a | 40 // Remove the dictionary corresponding to the profile name, which may have a |
| 37 // '.' | 41 // '.' |
| 38 update->RemoveWithoutPathExpansion(hash_store_id_, NULL); | 42 update->RemoveWithoutPathExpansion(hash_store_id_, NULL); |
| 39 } | 43 } |
| 40 | 44 |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 154 for (base::DictionaryValue::Iterator it(*split_value); !it.IsAtEnd(); | 158 for (base::DictionaryValue::Iterator it(*split_value); !it.IsAtEnd(); |
| 155 it.Advance()) { | 159 it.Advance()) { |
| 156 // Keep the common part from the old |keyed_path| and replace the key to | 160 // Keep the common part from the old |keyed_path| and replace the key to |
| 157 // get the new |keyed_path|. | 161 // get the new |keyed_path|. |
| 158 keyed_path.replace(common_part_length, std::string::npos, it.key()); | 162 keyed_path.replace(common_part_length, std::string::npos, it.key()); |
| 159 StoreHashInternal(keyed_path, &it.value(), &update); | 163 StoreHashInternal(keyed_path, &it.value(), &update); |
| 160 } | 164 } |
| 161 } | 165 } |
| 162 } | 166 } |
| 163 | 167 |
| 168 void PrefHashStoreImpl::RecordResetEvent() { | |
|
gab
2014/02/05 15:23:52
I think this method belongs on TrackedPreferenceHe
robertshield
2014/02/06 18:56:50
Erik convinced me it should go on PrefHashFilter.
| |
| 169 local_state_->SetInt64(prefs::kProfilePreferenceResetTime, | |
| 170 base::Time::Now().ToInternalValue()); | |
| 171 } | |
| 172 | |
| 164 void PrefHashStoreImpl::ClearPath(const std::string& path, | 173 void PrefHashStoreImpl::ClearPath(const std::string& path, |
| 165 DictionaryPrefUpdate* update) { | 174 DictionaryPrefUpdate* update) { |
| 166 base::DictionaryValue* hashes_dict = NULL; | 175 base::DictionaryValue* hashes_dict = NULL; |
| 167 if (update->Get()->GetDictionaryWithoutPathExpansion(hash_store_id_, | 176 if (update->Get()->GetDictionaryWithoutPathExpansion(hash_store_id_, |
| 168 &hashes_dict)) { | 177 &hashes_dict)) { |
| 169 hashes_dict->Remove(path, NULL); | 178 hashes_dict->Remove(path, NULL); |
| 170 } | 179 } |
| 171 UpdateHashOfHashes(hashes_dict, update); | 180 UpdateHashOfHashes(hashes_dict, update); |
| 172 } | 181 } |
| 173 | 182 |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 230 !pref_hash_dicts->GetDictionaryWithoutPathExpansion( | 239 !pref_hash_dicts->GetDictionaryWithoutPathExpansion( |
| 231 internals::kHashOfHashesPref, &hash_of_hashes_dict) || | 240 internals::kHashOfHashesPref, &hash_of_hashes_dict) || |
| 232 !hash_of_hashes_dict->GetStringWithoutPathExpansion( | 241 !hash_of_hashes_dict->GetStringWithoutPathExpansion( |
| 233 hash_store_id_, &hash_of_hashes)) { | 242 hash_store_id_, &hash_of_hashes)) { |
| 234 return false; | 243 return false; |
| 235 } | 244 } |
| 236 | 245 |
| 237 return pref_hash_calculator_.Validate( | 246 return pref_hash_calculator_.Validate( |
| 238 hash_store_id_, hashes_dict, hash_of_hashes) == PrefHashCalculator::VALID; | 247 hash_store_id_, hashes_dict, hash_of_hashes) == PrefHashCalculator::VALID; |
| 239 } | 248 } |
| OLD | NEW |