Index: chrome/browser/prefs/chrome_pref_service_factory.cc |
diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browser/prefs/chrome_pref_service_factory.cc |
index 1fd2697804060c1b15686bd76d0e7cfcd84129fa..b659c8bdcce4fd3faf19b6b78331907950108ea5 100644 |
--- a/chrome/browser/prefs/chrome_pref_service_factory.cc |
+++ b/chrome/browser/prefs/chrome_pref_service_factory.cc |
@@ -71,27 +71,27 @@ namespace { |
const PrefHashFilter::TrackedPreferenceMetadata kTrackedPrefs[] = { |
{ |
0, prefs::kShowHomeButton, |
- PrefHashFilter::ENFORCE_ALL, |
+ PrefHashFilter::ENFORCE_ON_LOAD, |
PrefHashFilter::TRACKING_STRATEGY_ATOMIC |
}, |
{ |
1, prefs::kHomePageIsNewTabPage, |
- PrefHashFilter::ENFORCE_ALL, |
+ PrefHashFilter::ENFORCE_ON_LOAD, |
PrefHashFilter::TRACKING_STRATEGY_ATOMIC |
}, |
{ |
2, prefs::kHomePage, |
- PrefHashFilter::ENFORCE_ALL, |
+ PrefHashFilter::ENFORCE_ON_LOAD, |
PrefHashFilter::TRACKING_STRATEGY_ATOMIC |
}, |
{ |
3, prefs::kRestoreOnStartup, |
- PrefHashFilter::ENFORCE_ALL, |
+ PrefHashFilter::ENFORCE_ON_LOAD, |
PrefHashFilter::TRACKING_STRATEGY_ATOMIC |
}, |
{ |
4, prefs::kURLsToRestoreOnStartup, |
- PrefHashFilter::ENFORCE_ALL, |
+ PrefHashFilter::ENFORCE_ON_LOAD, |
PrefHashFilter::TRACKING_STRATEGY_ATOMIC |
}, |
{ |
@@ -101,33 +101,33 @@ const PrefHashFilter::TrackedPreferenceMetadata kTrackedPrefs[] = { |
}, |
{ |
6, prefs::kGoogleServicesLastUsername, |
- PrefHashFilter::ENFORCE_ALL, |
+ PrefHashFilter::ENFORCE_ON_LOAD, |
PrefHashFilter::TRACKING_STRATEGY_ATOMIC |
}, |
{ |
7, prefs::kSearchProviderOverrides, |
- PrefHashFilter::ENFORCE_ALL, |
+ PrefHashFilter::ENFORCE_ON_LOAD, |
PrefHashFilter::TRACKING_STRATEGY_ATOMIC |
}, |
{ |
8, prefs::kDefaultSearchProviderSearchURL, |
- PrefHashFilter::ENFORCE_ALL, |
+ PrefHashFilter::ENFORCE_ON_LOAD, |
PrefHashFilter::TRACKING_STRATEGY_ATOMIC |
}, |
{ |
9, prefs::kDefaultSearchProviderKeyword, |
- PrefHashFilter::ENFORCE_ALL, |
+ PrefHashFilter::ENFORCE_ON_LOAD, |
PrefHashFilter::TRACKING_STRATEGY_ATOMIC |
}, |
{ |
10, prefs::kDefaultSearchProviderName, |
- PrefHashFilter::ENFORCE_ALL, |
+ PrefHashFilter::ENFORCE_ON_LOAD, |
PrefHashFilter::TRACKING_STRATEGY_ATOMIC |
}, |
#if !defined(OS_ANDROID) |
{ |
11, prefs::kPinnedTabs, |
- PrefHashFilter::ENFORCE_ALL, |
+ PrefHashFilter::ENFORCE_ON_LOAD, |
PrefHashFilter::TRACKING_STRATEGY_ATOMIC |
}, |
#endif |
@@ -138,7 +138,7 @@ const PrefHashFilter::TrackedPreferenceMetadata kTrackedPrefs[] = { |
}, |
{ |
13, prefs::kProfileResetPromptMemento, |
- PrefHashFilter::ENFORCE_ALL, |
+ PrefHashFilter::ENFORCE_ON_LOAD, |
PrefHashFilter::TRACKING_STRATEGY_ATOMIC |
}, |
}; |
@@ -148,36 +148,31 @@ const size_t kTrackedPrefsReportingIDsCount = 14; |
COMPILE_ASSERT(kTrackedPrefsReportingIDsCount >= arraysize(kTrackedPrefs), |
need_to_increment_ids_count); |
-PrefHashFilter::EnforcementLevel GetSettingsEnforcementLevel() { |
- static const char kSettingsEnforcementExperiment[] = "SettingsEnforcement"; |
+enum SettingsEnforcementGroup { |
+ GROUP_NO_ENFORCEMENT, |
+ // Only enforce settings on profile loads; still allow seeding of unloaded |
+ // profiles. |
+ GROUP_ENFORCE_ON_LOAD, |
+ // TOOD(gab): Block unloaded profile seeding in this mode. |
+ GROUP_ENFORCE_ALWAYS |
+}; |
+ |
+SettingsEnforcementGroup GetSettingsEnforcementGroup() { |
struct { |
- const char* level_name; |
- PrefHashFilter::EnforcementLevel level; |
+ const char* group_name; |
+ SettingsEnforcementGroup group; |
} static const kEnforcementLevelMap[] = { |
- { |
- "no_enforcement", |
- PrefHashFilter::NO_ENFORCEMENT |
- }, |
- { |
- "enforce", |
- PrefHashFilter::ENFORCE |
- }, |
- { |
- "enforce_no_seeding", |
- PrefHashFilter::ENFORCE_NO_SEEDING |
- }, |
- { |
- "enforce_no_seeding_no_migration", |
- PrefHashFilter::ENFORCE_NO_SEEDING_NO_MIGRATION |
- }, |
+ { chrome_prefs::internals::kSettingsEnforcementGroupNoEnforcement, |
+ GROUP_NO_ENFORCEMENT }, |
+ { chrome_prefs::internals::kSettingsEnforcementGroupEnforceOnload, |
+ GROUP_ENFORCE_ON_LOAD }, |
+ { chrome_prefs::internals::kSettingsEnforcementGroupEnforceAlways, |
+ GROUP_ENFORCE_ALWAYS }, |
}; |
- COMPILE_ASSERT(ARRAYSIZE_UNSAFE(kEnforcementLevelMap) == |
- (PrefHashFilter::ENFORCE_ALL - |
- PrefHashFilter::NO_ENFORCEMENT), |
- missing_enforcement_level); |
base::FieldTrial* trial = |
- base::FieldTrialList::Find(kSettingsEnforcementExperiment); |
+ base::FieldTrialList::Find( |
+ chrome_prefs::internals::kSettingsEnforcementTrialName); |
if (trial) { |
const std::string& group_name = trial->group_name(); |
// ARRAYSIZE_UNSAFE must be used since the array is declared locally; it is |
@@ -185,17 +180,17 @@ PrefHashFilter::EnforcementLevel GetSettingsEnforcementLevel() { |
// non-array pointer types; this is fine since kEnforcementLevelMap is |
// clearly an array. |
for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kEnforcementLevelMap); ++i) { |
- if (kEnforcementLevelMap[i].level_name == group_name) |
- return kEnforcementLevelMap[i].level; |
+ if (kEnforcementLevelMap[i].group_name == group_name) |
+ return kEnforcementLevelMap[i].group; |
} |
} |
#if defined(OS_WIN) |
- // Default to ENFORCE_ALL in the absence of a valid value for the |
+ // Default to GROUP_ENFORCE_ALWAYS in the absence of a valid value for the |
// SettingsEnforcement field trial. |
// TODO(gab): Switch other platforms over to this mode. |
- return PrefHashFilter::ENFORCE_ALL; |
+ return GROUP_ENFORCE_ALWAYS; |
#else |
- return PrefHashFilter::NO_ENFORCEMENT; |
+ return GROUP_NO_ENFORCEMENT; |
#endif |
} |
@@ -274,11 +269,14 @@ void HandleResetEvent() { |
scoped_ptr<PrefHashFilter> CreatePrefHashFilter( |
scoped_ptr<PrefHashStore> pref_hash_store) { |
+ const PrefHashFilter::EnforcementLevel enforcement_level = |
+ GetSettingsEnforcementGroup() == GROUP_NO_ENFORCEMENT ? |
+ PrefHashFilter::NO_ENFORCEMENT : PrefHashFilter::ENFORCE_ON_LOAD; |
return make_scoped_ptr(new PrefHashFilter(pref_hash_store.Pass(), |
kTrackedPrefs, |
arraysize(kTrackedPrefs), |
kTrackedPrefsReportingIDsCount, |
- GetSettingsEnforcementLevel(), |
+ enforcement_level, |
base::Bind(&HandleResetEvent))); |
} |
@@ -398,6 +396,15 @@ void InitializeHashStoreObserver::OnInitializationCompleted(bool succeeded) { |
namespace chrome_prefs { |
+namespace internals { |
+ |
+const char kSettingsEnforcementTrialName[] = "SettingsEnforcement"; |
+const char kSettingsEnforcementGroupNoEnforcement[] = "no_enforcement"; |
+const char kSettingsEnforcementGroupEnforceOnload[] = "enforce_on_load"; |
+const char kSettingsEnforcementGroupEnforceAlways[] = "enforce_always"; |
+ |
+} // namespace internals |
+ |
scoped_ptr<PrefService> CreateLocalState( |
const base::FilePath& pref_filename, |
base::SequencedTaskRunner* pref_io_task_runner, |