Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Side by Side Diff: chrome/browser/prefs/pref_metrics_service.cc

Issue 79013003: Introduce a temporary workaround to ensure tracked preferences set to empty list/dict are not confu… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/prefs/pref_service.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_metrics_service.h" 5 #include "chrome/browser/prefs/pref_metrics_service.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/json/json_string_value_serializer.h" 9 #include "base/json/json_string_value_serializer.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 // Get the hashed prefs dictionary if it exists. If it doesn't, it will be 280 // Get the hashed prefs dictionary if it exists. If it doesn't, it will be
281 // created if we set preference values below. 281 // created if we set preference values below.
282 const base::DictionaryValue* hashed_prefs = NULL; 282 const base::DictionaryValue* hashed_prefs = NULL;
283 pref_hash_dicts->GetDictionaryWithoutPathExpansion(profile_name_, 283 pref_hash_dicts->GetDictionaryWithoutPathExpansion(profile_name_,
284 &hashed_prefs); 284 &hashed_prefs);
285 for (int i = 0; i < tracked_pref_path_count_; ++i) { 285 for (int i = 0; i < tracked_pref_path_count_; ++i) {
286 // Skip prefs that haven't been registered. 286 // Skip prefs that haven't been registered.
287 if (!prefs_->FindPreference(tracked_pref_paths_[i])) 287 if (!prefs_->FindPreference(tracked_pref_paths_[i]))
288 continue; 288 continue;
289 289
290 // Make sure tracked prefs are saved to disk even if empty.
291 // TODO(gab): Guarantee this for all prefs at a lower level and remove this
292 // hack.
293 prefs_->MarkUserStoreNeedsEmptyValue(tracked_pref_paths_[i]);
battre 2013/11/22 13:01:57 I think I would move this into the constructor. Ot
gab 2013/11/22 18:24:37 Done, thanks.
294
290 const base::Value* value = prefs_->GetUserPrefValue(tracked_pref_paths_[i]); 295 const base::Value* value = prefs_->GetUserPrefValue(tracked_pref_paths_[i]);
291 std::string last_hash; 296 std::string last_hash;
292 // First try to get the stored expected hash... 297 // First try to get the stored expected hash...
293 if (hashed_prefs && 298 if (hashed_prefs &&
294 hashed_prefs->GetString(tracked_pref_paths_[i], &last_hash)) { 299 hashed_prefs->GetString(tracked_pref_paths_[i], &last_hash)) {
295 // ... if we have one get the hash of the current value... 300 // ... if we have one get the hash of the current value...
296 const std::string value_hash = 301 const std::string value_hash =
297 GetHashedPrefValue(tracked_pref_paths_[i], value, 302 GetHashedPrefValue(tracked_pref_paths_[i], value,
298 HASHED_PREF_STYLE_NEW); 303 HASHED_PREF_STYLE_NEW);
299 // ... and check that it matches... 304 // ... and check that it matches...
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 } 455 }
451 456
452 bool PrefMetricsService::Factory::ServiceIsNULLWhileTesting() const { 457 bool PrefMetricsService::Factory::ServiceIsNULLWhileTesting() const {
453 return false; 458 return false;
454 } 459 }
455 460
456 content::BrowserContext* PrefMetricsService::Factory::GetBrowserContextToUse( 461 content::BrowserContext* PrefMetricsService::Factory::GetBrowserContextToUse(
457 content::BrowserContext* context) const { 462 content::BrowserContext* context) const {
458 return chrome::GetBrowserContextRedirectedInIncognito(context); 463 return chrome::GetBrowserContextRedirectedInIncognito(context);
459 } 464 }
OLDNEW
« no previous file with comments | « base/prefs/pref_service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698