| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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/ui/gesture_prefs_observer_factory_aura.h" | 5 #include "chrome/browser/ui/gesture_prefs_observer_factory_aura.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 115 prefs::kMinPinchUpdateDistanceInPixels, | 115 prefs::kMinPinchUpdateDistanceInPixels, |
| 116 prefs::kMinRailBreakVelocity, | 116 prefs::kMinRailBreakVelocity, |
| 117 prefs::kMinScrollDeltaSquared, | 117 prefs::kMinScrollDeltaSquared, |
| 118 prefs::kMinScrollSuccessiveVelocityEvents, | 118 prefs::kMinScrollSuccessiveVelocityEvents, |
| 119 prefs::kMinSwipeSpeed, | 119 prefs::kMinSwipeSpeed, |
| 120 prefs::kMinTouchDownDurationInSecondsForClick, | 120 prefs::kMinTouchDownDurationInSecondsForClick, |
| 121 prefs::kPointsBufferedForVelocity, | 121 prefs::kPointsBufferedForVelocity, |
| 122 prefs::kRailBreakProportion, | 122 prefs::kRailBreakProportion, |
| 123 prefs::kRailStartProportion, | 123 prefs::kRailStartProportion, |
| 124 prefs::kSemiLongPressTimeInSeconds, | 124 prefs::kSemiLongPressTimeInSeconds, |
| 125 }; | |
| 126 | |
| 127 const char* kFlingTouchpadPrefs[] = { | |
| 128 prefs::kFlingCurveTouchpadAlpha, | 125 prefs::kFlingCurveTouchpadAlpha, |
| 129 prefs::kFlingCurveTouchpadBeta, | 126 prefs::kFlingCurveTouchpadBeta, |
| 130 prefs::kFlingCurveTouchpadGamma | 127 prefs::kFlingCurveTouchpadGamma, |
| 131 }; | |
| 132 | |
| 133 const char* kFlingTouchscreenPrefs[] = { | |
| 134 prefs::kFlingCurveTouchscreenAlpha, | 128 prefs::kFlingCurveTouchscreenAlpha, |
| 135 prefs::kFlingCurveTouchscreenBeta, | 129 prefs::kFlingCurveTouchscreenBeta, |
| 136 prefs::kFlingCurveTouchscreenGamma, | 130 prefs::kFlingCurveTouchscreenGamma |
| 137 }; | 131 }; |
| 138 | 132 |
| 139 GesturePrefsObserver::GesturePrefsObserver(PrefService* prefs) | 133 GesturePrefsObserver::GesturePrefsObserver(PrefService* prefs) |
| 140 : prefs_(prefs) { | 134 : prefs_(prefs) { |
| 141 // Clear for migration. | 135 // Clear for migration. |
| 142 prefs->ClearPref(kTouchScreenFlingAccelerationAdjustment); | 136 prefs->ClearPref(kTouchScreenFlingAccelerationAdjustment); |
| 143 | 137 |
| 144 // TODO(mohsen): Remove following code in M32. By then, gesture prefs will | 138 // TODO(mohsen): Remove following code in M32. By then, gesture prefs will |
| 145 // have been cleared for majority of the users: crbug.com/269292. | 139 // have been cleared for majority of the users: crbug.com/269292. |
| 146 // Do a one-time wipe of all gesture preferences. | 140 // Do a one-time wipe of all gesture preferences. |
| 147 if (!prefs->GetBoolean(prefs::kGestureConfigIsTrustworthy)) { | 141 if (!prefs->GetBoolean(prefs::kGestureConfigIsTrustworthy)) { |
| 148 for (size_t i = 0; i < arraysize(kPrefsToObserve); ++i) | 142 for (size_t i = 0; i < arraysize(kPrefsToObserve); ++i) |
| 149 prefs->ClearPref(kPrefsToObserve[i]); | 143 prefs->ClearPref(kPrefsToObserve[i]); |
| 150 | 144 |
| 151 const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); | 145 const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); |
| 152 for (size_t i = 0; i < overscroll_prefs.size(); ++i) | 146 for (size_t i = 0; i < overscroll_prefs.size(); ++i) |
| 153 prefs->ClearPref(overscroll_prefs[i].pref_name); | 147 prefs->ClearPref(overscroll_prefs[i].pref_name); |
| 154 | 148 |
| 155 for (size_t i = 0; i < arraysize(kFlingTouchpadPrefs); ++i) | |
| 156 prefs->ClearPref(kFlingTouchpadPrefs[i]); | |
| 157 | |
| 158 for (size_t i = 0; i < arraysize(kFlingTouchscreenPrefs); ++i) | |
| 159 prefs->ClearPref(kFlingTouchscreenPrefs[i]); | |
| 160 | |
| 161 prefs->SetBoolean(prefs::kGestureConfigIsTrustworthy, true); | 149 prefs->SetBoolean(prefs::kGestureConfigIsTrustworthy, true); |
| 162 } | 150 } |
| 163 | 151 |
| 164 registrar_.Init(prefs); | 152 registrar_.Init(prefs); |
| 165 registrar_.RemoveAll(); | 153 registrar_.RemoveAll(); |
| 166 base::Closure callback = base::Bind(&GesturePrefsObserver::Update, | 154 base::Closure callback = base::Bind(&GesturePrefsObserver::Update, |
| 167 base::Unretained(this)); | 155 base::Unretained(this)); |
| 168 | 156 |
| 169 base::Closure notify_callback = base::Bind(&GesturePrefsObserver::Notify, | 157 base::Closure notify_callback = base::Bind(&GesturePrefsObserver::Notify, |
| 170 base::Unretained(this)); | 158 base::Unretained(this)); |
| 171 | 159 |
| 172 for (size_t i = 0; i < arraysize(kPrefsToObserve); ++i) | 160 for (size_t i = 0; i < arraysize(kPrefsToObserve); ++i) |
| 173 registrar_.Add(kPrefsToObserve[i], callback); | 161 registrar_.Add(kPrefsToObserve[i], callback); |
| 174 | 162 |
| 175 const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); | 163 const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); |
| 176 for (size_t i = 0; i < overscroll_prefs.size(); ++i) | 164 for (size_t i = 0; i < overscroll_prefs.size(); ++i) |
| 177 registrar_.Add(overscroll_prefs[i].pref_name, callback); | 165 registrar_.Add(overscroll_prefs[i].pref_name, callback); |
| 178 | 166 |
| 179 for (size_t i = 0; i < arraysize(kFlingTouchpadPrefs); ++i) | |
| 180 registrar_.Add(kFlingTouchpadPrefs[i], notify_callback); | |
| 181 for (size_t i = 0; i < arraysize(kFlingTouchscreenPrefs); ++i) | |
| 182 registrar_.Add(kFlingTouchscreenPrefs[i], notify_callback); | |
| 183 | |
| 184 Update(); | 167 Update(); |
| 185 } | 168 } |
| 186 | 169 |
| 187 GesturePrefsObserver::~GesturePrefsObserver() {} | 170 GesturePrefsObserver::~GesturePrefsObserver() {} |
| 188 | 171 |
| 189 void GesturePrefsObserver::Shutdown() { | 172 void GesturePrefsObserver::Shutdown() { |
| 190 registrar_.RemoveAll(); | 173 registrar_.RemoveAll(); |
| 191 } | 174 } |
| 192 | 175 |
| 193 void GesturePrefsObserver::Update() { | 176 void GesturePrefsObserver::Update() { |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 prefs_->GetDouble( | 248 prefs_->GetDouble( |
| 266 prefs::kRailBreakProportion)); | 249 prefs::kRailBreakProportion)); |
| 267 GestureConfiguration::set_rail_start_proportion( | 250 GestureConfiguration::set_rail_start_proportion( |
| 268 prefs_->GetDouble( | 251 prefs_->GetDouble( |
| 269 prefs::kRailStartProportion)); | 252 prefs::kRailStartProportion)); |
| 270 GestureConfiguration::set_scroll_prediction_seconds( | 253 GestureConfiguration::set_scroll_prediction_seconds( |
| 271 prefs_->GetDouble(prefs::kScrollPredictionSeconds)); | 254 prefs_->GetDouble(prefs::kScrollPredictionSeconds)); |
| 272 GestureConfiguration::set_show_press_delay_in_ms( | 255 GestureConfiguration::set_show_press_delay_in_ms( |
| 273 prefs_->GetInteger(prefs::kShowPressDelayInMS)); | 256 prefs_->GetInteger(prefs::kShowPressDelayInMS)); |
| 274 | 257 |
| 258 // Fling curve: Touchpad |
| 259 GestureConfiguration::set_touchpad_fling_curve_alpha( |
| 260 prefs_->GetDouble(prefs::kFlingCurveTouchpadAlpha)); |
| 261 GestureConfiguration::set_touchpad_fling_curve_beta( |
| 262 prefs_->GetDouble(prefs::kFlingCurveTouchpadBeta)); |
| 263 GestureConfiguration::set_touchpad_fling_curve_gamma( |
| 264 prefs_->GetDouble(prefs::kFlingCurveTouchpadGamma)); |
| 265 |
| 266 // Fling curve: Touchscreen |
| 267 GestureConfiguration::set_touchscreen_fling_curve_alpha( |
| 268 prefs_->GetDouble(prefs::kFlingCurveTouchscreenAlpha)); |
| 269 GestureConfiguration::set_touchscreen_fling_curve_beta( |
| 270 prefs_->GetDouble(prefs::kFlingCurveTouchscreenBeta)); |
| 271 GestureConfiguration::set_touchscreen_fling_curve_gamma( |
| 272 prefs_->GetDouble(prefs::kFlingCurveTouchscreenGamma)); |
| 273 |
| 275 UpdateOverscrollPrefs(); | 274 UpdateOverscrollPrefs(); |
| 276 } | 275 } |
| 277 | 276 |
| 278 void GesturePrefsObserver::UpdateOverscrollPrefs() { | 277 void GesturePrefsObserver::UpdateOverscrollPrefs() { |
| 279 const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); | 278 const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); |
| 280 for (size_t i = 0; i < overscroll_prefs.size(); ++i) { | 279 for (size_t i = 0; i < overscroll_prefs.size(); ++i) { |
| 281 content::SetOverscrollConfig(overscroll_prefs[i].config, | 280 content::SetOverscrollConfig(overscroll_prefs[i].config, |
| 282 static_cast<float>(prefs_->GetDouble(overscroll_prefs[i].pref_name))); | 281 static_cast<float>(prefs_->GetDouble(overscroll_prefs[i].pref_name))); |
| 283 } | 282 } |
| 284 } | 283 } |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 322 overscroll_prefs[i].pref_name, | 321 overscroll_prefs[i].pref_name, |
| 323 content::GetOverscrollConfig(overscroll_prefs[i].config), | 322 content::GetOverscrollConfig(overscroll_prefs[i].config), |
| 324 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 323 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 325 } | 324 } |
| 326 } | 325 } |
| 327 | 326 |
| 328 void GesturePrefsObserverFactoryAura::RegisterFlingCurveParameters( | 327 void GesturePrefsObserverFactoryAura::RegisterFlingCurveParameters( |
| 329 user_prefs::PrefRegistrySyncable* registry) { | 328 user_prefs::PrefRegistrySyncable* registry) { |
| 330 content::RendererPreferences def_prefs; | 329 content::RendererPreferences def_prefs; |
| 331 | 330 |
| 332 for (size_t i = 0; i < arraysize(kFlingTouchpadPrefs); i++) | 331 // Touchpad |
| 333 registry->RegisterDoublePref( | 332 registry->RegisterDoublePref( |
| 334 kFlingTouchpadPrefs[i], | 333 prefs::kFlingCurveTouchpadAlpha, |
| 335 def_prefs.touchpad_fling_profile[i], | 334 GestureConfiguration::touchpad_fling_curve_alpha(), |
| 336 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 335 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 336 registry->RegisterDoublePref( |
| 337 prefs::kFlingCurveTouchpadBeta, |
| 338 GestureConfiguration::touchpad_fling_curve_beta(), |
| 339 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 340 registry->RegisterDoublePref( |
| 341 prefs::kFlingCurveTouchpadGamma, |
| 342 GestureConfiguration::touchpad_fling_curve_gamma(), |
| 343 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 337 | 344 |
| 338 for (size_t i = 0; i < arraysize(kFlingTouchscreenPrefs); i++) | 345 // Touchscreen |
| 339 registry->RegisterDoublePref( | 346 registry->RegisterDoublePref( |
| 340 kFlingTouchscreenPrefs[i], | 347 prefs::kFlingCurveTouchscreenAlpha, |
| 341 def_prefs.touchscreen_fling_profile[i], | 348 GestureConfiguration::touchscreen_fling_curve_alpha(), |
| 342 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 349 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 350 registry->RegisterDoublePref( |
| 351 prefs::kFlingCurveTouchscreenBeta, |
| 352 GestureConfiguration::touchscreen_fling_curve_beta(), |
| 353 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 354 registry->RegisterDoublePref( |
| 355 prefs::kFlingCurveTouchscreenGamma, |
| 356 GestureConfiguration::touchscreen_fling_curve_gamma(), |
| 357 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 343 } | 358 } |
| 344 | 359 |
| 345 void GesturePrefsObserverFactoryAura::RegisterProfilePrefs( | 360 void GesturePrefsObserverFactoryAura::RegisterProfilePrefs( |
| 346 user_prefs::PrefRegistrySyncable* registry) { | 361 user_prefs::PrefRegistrySyncable* registry) { |
| 347 registry->RegisterDoublePref( | 362 registry->RegisterDoublePref( |
| 348 prefs::kFlingAccelerationCurveCoefficient0, | 363 prefs::kFlingAccelerationCurveCoefficient0, |
| 349 GestureConfiguration::fling_acceleration_curve_coefficients(0), | 364 GestureConfiguration::fling_acceleration_curve_coefficients(0), |
| 350 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 365 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 351 registry->RegisterDoublePref( | 366 registry->RegisterDoublePref( |
| 352 prefs::kFlingAccelerationCurveCoefficient1, | 367 prefs::kFlingAccelerationCurveCoefficient1, |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 493 // Use same gesture preferences on incognito windows. | 508 // Use same gesture preferences on incognito windows. |
| 494 return chrome::GetBrowserContextRedirectedInIncognito(context); | 509 return chrome::GetBrowserContextRedirectedInIncognito(context); |
| 495 } | 510 } |
| 496 | 511 |
| 497 bool GesturePrefsObserverFactoryAura::ServiceIsNULLWhileTesting() const { | 512 bool GesturePrefsObserverFactoryAura::ServiceIsNULLWhileTesting() const { |
| 498 // Some tests replace the PrefService of the TestingProfile after the | 513 // Some tests replace the PrefService of the TestingProfile after the |
| 499 // GesturePrefsObserver has been created, which makes Shutdown() | 514 // GesturePrefsObserver has been created, which makes Shutdown() |
| 500 // remove the registrar from a non-existent PrefService. | 515 // remove the registrar from a non-existent PrefService. |
| 501 return true; | 516 return true; |
| 502 } | 517 } |
| OLD | NEW |