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

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

Issue 114223002: Multi-strategy based tracking. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge up to r248367 Created 6 years, 10 months 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 | « no previous file | chrome/browser/prefs/pref_hash_filter.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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/chrome_pref_service_factory.h" 5 #include "chrome/browser/prefs/chrome_pref_service_factory.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/debug/trace_event.h" 9 #include "base/debug/trace_event.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 47
48 using content::BrowserContext; 48 using content::BrowserContext;
49 using content::BrowserThread; 49 using content::BrowserThread;
50 50
51 namespace { 51 namespace {
52 52
53 // These preferences must be kept in sync with the TrackedPreference enum in 53 // These preferences must be kept in sync with the TrackedPreference enum in
54 // tools/metrics/histograms/histograms.xml. To add a new preference, append it 54 // tools/metrics/histograms/histograms.xml. To add a new preference, append it
55 // to the array and add a corresponding value to the histogram enum. Each 55 // to the array and add a corresponding value to the histogram enum. Each
56 // tracked preference must be given a unique reporting ID. 56 // tracked preference must be given a unique reporting ID.
57 const PrefHashFilter::TrackedPreference kTrackedPrefs[] = { 57 const PrefHashFilter::TrackedPreferenceMetadata kTrackedPrefs[] = {
58 { 0, prefs::kShowHomeButton, true }, 58 {
59 { 1, prefs::kHomePageIsNewTabPage, true }, 59 0, prefs::kShowHomeButton, true,
60 { 2, prefs::kHomePage, true }, 60 PrefHashFilter::TRACKING_STRATEGY_ATOMIC
61 { 3, prefs::kRestoreOnStartup, true }, 61 },
62 { 4, prefs::kURLsToRestoreOnStartup, true }, 62 {
63 { 5, extensions::pref_names::kExtensions, false }, 63 1, prefs::kHomePageIsNewTabPage, true,
64 { 6, prefs::kGoogleServicesLastUsername, true }, 64 PrefHashFilter::TRACKING_STRATEGY_ATOMIC
65 { 7, prefs::kSearchProviderOverrides, true }, 65 },
66 { 8, prefs::kDefaultSearchProviderSearchURL, true }, 66 {
67 { 9, prefs::kDefaultSearchProviderKeyword, true }, 67 2, prefs::kHomePage, true,
68 { 10, prefs::kDefaultSearchProviderName, true }, 68 PrefHashFilter::TRACKING_STRATEGY_ATOMIC
69 },
70 {
71 3, prefs::kRestoreOnStartup, true,
72 PrefHashFilter::TRACKING_STRATEGY_ATOMIC
73 },
74 {
75 4, prefs::kURLsToRestoreOnStartup, true,
76 PrefHashFilter::TRACKING_STRATEGY_ATOMIC
77 },
78 {
79 5, extensions::pref_names::kExtensions, false,
80 PrefHashFilter::TRACKING_STRATEGY_SPLIT
81 },
82 {
83 6, prefs::kGoogleServicesLastUsername, true,
84 PrefHashFilter::TRACKING_STRATEGY_ATOMIC
85 },
86 {
87 7, prefs::kSearchProviderOverrides, true,
88 PrefHashFilter::TRACKING_STRATEGY_ATOMIC
89 },
90 {
91 8, prefs::kDefaultSearchProviderSearchURL, true,
92 PrefHashFilter::TRACKING_STRATEGY_ATOMIC
93 },
94 {
95 9, prefs::kDefaultSearchProviderKeyword, true,
96 PrefHashFilter::TRACKING_STRATEGY_ATOMIC
97 },
98 {
99 10, prefs::kDefaultSearchProviderName, true,
100 PrefHashFilter::TRACKING_STRATEGY_ATOMIC
101 },
69 #if !defined(OS_ANDROID) 102 #if !defined(OS_ANDROID)
70 { 11, prefs::kPinnedTabs, true }, 103 {
104 11, prefs::kPinnedTabs, true,
105 PrefHashFilter::TRACKING_STRATEGY_ATOMIC
106 },
71 #endif 107 #endif
72 { 12, extensions::pref_names::kKnownDisabled, true }, 108 {
73 { 13, prefs::kProfileResetPromptMemento, true }, 109 12, extensions::pref_names::kKnownDisabled, true,
110 PrefHashFilter::TRACKING_STRATEGY_ATOMIC
111 },
112 {
113 13, prefs::kProfileResetPromptMemento, true,
114 PrefHashFilter::TRACKING_STRATEGY_ATOMIC
115 },
74 }; 116 };
75 117
76 // The count of tracked preferences IDs across all platforms. 118 // The count of tracked preferences IDs across all platforms.
77 const size_t kTrackedPrefsReportingIDsCount = 14; 119 const size_t kTrackedPrefsReportingIDsCount = 14;
78 COMPILE_ASSERT(kTrackedPrefsReportingIDsCount >= arraysize(kTrackedPrefs), 120 COMPILE_ASSERT(kTrackedPrefsReportingIDsCount >= arraysize(kTrackedPrefs),
79 need_to_increment_ids_count); 121 need_to_increment_ids_count);
80 122
81 PrefHashFilter::EnforcementLevel GetSettingsEnforcementLevel() { 123 PrefHashFilter::EnforcementLevel GetSettingsEnforcementLevel() {
82 static const char kSettingsEnforcementExperiment[] = "SettingsEnforcement"; 124 static const char kSettingsEnforcementExperiment[] = "SettingsEnforcement";
83 struct { 125 struct {
(...skipping 10 matching lines...) Expand all
94 }, 136 },
95 { 137 {
96 "enforce_no_seeding", 138 "enforce_no_seeding",
97 PrefHashFilter::ENFORCE_NO_SEEDING 139 PrefHashFilter::ENFORCE_NO_SEEDING
98 }, 140 },
99 { 141 {
100 "enforce_no_seeding_no_migration", 142 "enforce_no_seeding_no_migration",
101 PrefHashFilter::ENFORCE_NO_SEEDING_NO_MIGRATION 143 PrefHashFilter::ENFORCE_NO_SEEDING_NO_MIGRATION
102 }, 144 },
103 }; 145 };
146 COMPILE_ASSERT(ARRAYSIZE_UNSAFE(kEnforcementLevelMap) ==
147 (PrefHashFilter::ENFORCE_ALL -
148 PrefHashFilter::NO_ENFORCEMENT),
149 missing_enforcement_level);
104 150
105 base::FieldTrial* trial = 151 base::FieldTrial* trial =
106 base::FieldTrialList::Find(kSettingsEnforcementExperiment); 152 base::FieldTrialList::Find(kSettingsEnforcementExperiment);
107 if (trial) { 153 if (trial) {
108 const std::string& group_name = trial->group_name(); 154 const std::string& group_name = trial->group_name();
109 // ARRAYSIZE_UNSAFE must be used since the array is declared locally; it is 155 // ARRAYSIZE_UNSAFE must be used since the array is declared locally; it is
110 // only unsafe because it could not trigger a compile error on some 156 // only unsafe because it could not trigger a compile error on some
111 // non-array pointer types; this is fine since kEnforcementLevelMap is 157 // non-array pointer types; this is fine since kEnforcementLevelMap is
112 // clearly an array. 158 // clearly an array.
113 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kEnforcementLevelMap); ++i) { 159 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kEnforcementLevelMap); ++i) {
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 scoped_refptr<JsonPrefStore> pref_store( 353 scoped_refptr<JsonPrefStore> pref_store(
308 new JsonPrefStore(pref_filename, 354 new JsonPrefStore(pref_filename,
309 pref_io_task_runner, 355 pref_io_task_runner,
310 scoped_ptr<PrefFilter>())); 356 scoped_ptr<PrefFilter>()));
311 pref_store->AddObserver( 357 pref_store->AddObserver(
312 new InitializeHashStoreObserver(pref_store, pref_hash_store.Pass())); 358 new InitializeHashStoreObserver(pref_store, pref_hash_store.Pass()));
313 pref_store->ReadPrefsAsync(NULL); 359 pref_store->ReadPrefsAsync(NULL);
314 } 360 }
315 361
316 } // namespace chrome_prefs 362 } // namespace chrome_prefs
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/prefs/pref_hash_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698