From 227835b276ef54dc2e7cc748303c61a8627a8cd8 Mon Sep 17 00:00:00 2001 From: "mohsen@chromium.org" Date: Fri, 9 Aug 2013 23:23:10 +0000 Subject: [PATCH] Add a pref for a one-time wipe of gesture prefs Because of a bug in the gesture config UI (chrome://gesture), whenever a user tried to reset a gesture preference to default, the preference was set to whatever the default value of the preference was at that time, instead of unsetting the preference. This bug is now fixed, but many users may have unintentionally set their gesture preferences to the default values. A temporary preference is introduced to unset all gesture preferences once. This preference will be removed in a proper time in future when we think that a good portion of users have their gesture preferences unset. BUG=251858 Review URL: https://chromiumcodereview.appspot.com/21983002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@216775 0039d316-1c4b-4281-b951-d872f2087c98 --- .../ui/gesture_prefs_observer_factory_aura.cc | 31 ++++++++++++++++++++++ chrome/common/pref_names.cc | 4 +++ chrome/common/pref_names.h | 1 + 3 files changed, 36 insertions(+) diff --git a/chrome/browser/ui/gesture_prefs_observer_factory_aura.cc b/chrome/browser/ui/gesture_prefs_observer_factory_aura.cc index 82895ff7179b..4e73dcc5389b 100644 --- a/chrome/browser/ui/gesture_prefs_observer_factory_aura.cc +++ b/chrome/browser/ui/gesture_prefs_observer_factory_aura.cc @@ -151,6 +151,31 @@ GesturePrefsObserver::GesturePrefsObserver(PrefService* prefs) // Clear for migration. prefs->ClearPref(kTouchScreenFlingAccelerationAdjustment); + // TODO(mohsen): Remove following code in M32. By then, gesture prefs will + // have been cleared for majority of the users: crbug.com/269292. + // Do a one-time wipe of all gesture preferences. + if (!prefs->GetBoolean(prefs::kGestureConfigIsTrustworthy)) { + for (size_t i = 0; i < arraysize(kPrefsToObserve); ++i) + prefs->ClearPref(kPrefsToObserve[i]); + + const std::vector& overscroll_prefs = GetOverscrollPrefs(); + for (size_t i = 0; i < overscroll_prefs.size(); ++i) + prefs->ClearPref(overscroll_prefs[i].pref_name); + + for (size_t i = 0; i < arraysize(kFlingTouchpadPrefs); ++i) + prefs->ClearPref(kFlingTouchpadPrefs[i]); + + for (size_t i = 0; i < arraysize(kFlingTouchscreenPrefs); ++i) + prefs->ClearPref(kFlingTouchscreenPrefs[i]); + +#if defined(USE_ASH) + for (size_t i = 0; i < arraysize(kImmersiveModePrefs); ++i) + prefs->ClearPref(kImmersiveModePrefs[i]); +#endif // USE_ASH + + prefs->SetBoolean(prefs::kGestureConfigIsTrustworthy, true); + } + registrar_.Init(prefs); registrar_.RemoveAll(); base::Closure callback = base::Bind(&GesturePrefsObserver::Update, @@ -481,6 +506,12 @@ void GesturePrefsObserverFactoryAura::RegisterProfilePrefs( RegisterOverscrollPrefs(registry); RegisterFlingCurveParameters(registry); RegisterImmersiveModePrefs(registry); + + // Register pref for a one-time wipe of all gesture preferences. + registry->RegisterBooleanPref( + prefs::kGestureConfigIsTrustworthy, + false, + user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); } bool diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index bdbb3466567a..a2af745eddff 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc @@ -2489,6 +2489,10 @@ const char kOverscrollHorizontalResistThreshold[] = "overscroll.horizontal_resist_threshold"; const char kOverscrollVerticalResistThreshold[] = "overscroll.vertical_resist_threshold"; +// TODO(mohsen): Remove following pref in M32. By then, gesture prefs will have +// been cleared for majority of the users: crbug.com/269292. +// A temporary pref to do a one-time wipe of gesture preferences. +const char kGestureConfigIsTrustworthy[] = "gesture.config_is_trustworthy"; #endif // Counts how many more times the 'profile on a network share' warning should be diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index d6d79b281051..3a75f8eb572c 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h @@ -907,6 +907,7 @@ extern const char kOverscrollMinimumThresholdStart[]; extern const char kOverscrollVerticalThresholdStart[]; extern const char kOverscrollHorizontalResistThreshold[]; extern const char kOverscrollVerticalResistThreshold[]; +extern const char kGestureConfigIsTrustworthy[]; #endif extern const char kNetworkProfileWarningsLeft[]; -- 2.11.4.GIT