| 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 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 128 prefs::kMinPinchUpdateDistanceInPixels, | 128 prefs::kMinPinchUpdateDistanceInPixels, |
| 129 prefs::kMinRailBreakVelocity, | 129 prefs::kMinRailBreakVelocity, |
| 130 prefs::kMinScrollDeltaSquared, | 130 prefs::kMinScrollDeltaSquared, |
| 131 prefs::kMinScrollSuccessiveVelocityEvents, | 131 prefs::kMinScrollSuccessiveVelocityEvents, |
| 132 prefs::kMinSwipeSpeed, | 132 prefs::kMinSwipeSpeed, |
| 133 prefs::kMinTouchDownDurationInSecondsForClick, | 133 prefs::kMinTouchDownDurationInSecondsForClick, |
| 134 prefs::kPointsBufferedForVelocity, | 134 prefs::kPointsBufferedForVelocity, |
| 135 prefs::kRailBreakProportion, | 135 prefs::kRailBreakProportion, |
| 136 prefs::kRailStartProportion, | 136 prefs::kRailStartProportion, |
| 137 prefs::kSemiLongPressTimeInSeconds, | 137 prefs::kSemiLongPressTimeInSeconds, |
| 138 }; | |
| 139 | |
| 140 const char* kFlingTouchpadPrefs[] = { | |
| 141 prefs::kFlingCurveTouchpadAlpha, | 138 prefs::kFlingCurveTouchpadAlpha, |
| 142 prefs::kFlingCurveTouchpadBeta, | 139 prefs::kFlingCurveTouchpadBeta, |
| 143 prefs::kFlingCurveTouchpadGamma | 140 prefs::kFlingCurveTouchpadGamma, |
| 144 }; | |
| 145 | |
| 146 const char* kFlingTouchscreenPrefs[] = { | |
| 147 prefs::kFlingCurveTouchscreenAlpha, | 141 prefs::kFlingCurveTouchscreenAlpha, |
| 148 prefs::kFlingCurveTouchscreenBeta, | 142 prefs::kFlingCurveTouchscreenBeta, |
| 149 prefs::kFlingCurveTouchscreenGamma, | 143 prefs::kFlingCurveTouchscreenGamma |
| 150 }; | 144 }; |
| 151 | 145 |
| 152 GesturePrefsObserver::GesturePrefsObserver(PrefService* prefs) | 146 GesturePrefsObserver::GesturePrefsObserver(PrefService* prefs) |
| 153 : prefs_(prefs) { | 147 : prefs_(prefs) { |
| 154 // Clear for migration. | 148 // Clear for migration. |
| 155 prefs->ClearPref(kTouchScreenFlingAccelerationAdjustment); | 149 prefs->ClearPref(kTouchScreenFlingAccelerationAdjustment); |
| 156 | 150 |
| 157 // TODO(mohsen): Remove following code in M32. By then, gesture prefs will | 151 // TODO(mohsen): Remove following code in M32. By then, gesture prefs will |
| 158 // have been cleared for majority of the users: crbug.com/269292. | 152 // have been cleared for majority of the users: crbug.com/269292. |
| 159 // Do a one-time wipe of all gesture preferences. | 153 // Do a one-time wipe of all gesture preferences. |
| 160 if (!prefs->GetBoolean(prefs::kGestureConfigIsTrustworthy)) { | 154 if (!prefs->GetBoolean(prefs::kGestureConfigIsTrustworthy)) { |
| 161 for (size_t i = 0; i < arraysize(kPrefsToObserve); ++i) | 155 for (size_t i = 0; i < arraysize(kPrefsToObserve); ++i) |
| 162 prefs->ClearPref(kPrefsToObserve[i]); | 156 prefs->ClearPref(kPrefsToObserve[i]); |
| 163 | 157 |
| 164 const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); | 158 const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); |
| 165 for (size_t i = 0; i < overscroll_prefs.size(); ++i) | 159 for (size_t i = 0; i < overscroll_prefs.size(); ++i) |
| 166 prefs->ClearPref(overscroll_prefs[i].pref_name); | 160 prefs->ClearPref(overscroll_prefs[i].pref_name); |
| 167 | 161 |
| 168 for (size_t i = 0; i < arraysize(kFlingTouchpadPrefs); ++i) | |
| 169 prefs->ClearPref(kFlingTouchpadPrefs[i]); | |
| 170 | |
| 171 for (size_t i = 0; i < arraysize(kFlingTouchscreenPrefs); ++i) | |
| 172 prefs->ClearPref(kFlingTouchscreenPrefs[i]); | |
| 173 | |
| 174 #if defined(USE_ASH) | 162 #if defined(USE_ASH) |
| 175 for (size_t i = 0; i < arraysize(kImmersiveModePrefs); ++i) | 163 for (size_t i = 0; i < arraysize(kImmersiveModePrefs); ++i) |
| 176 prefs->ClearPref(kImmersiveModePrefs[i]); | 164 prefs->ClearPref(kImmersiveModePrefs[i]); |
| 177 #endif // USE_ASH | 165 #endif // USE_ASH |
| 178 | 166 |
| 179 prefs->SetBoolean(prefs::kGestureConfigIsTrustworthy, true); | 167 prefs->SetBoolean(prefs::kGestureConfigIsTrustworthy, true); |
| 180 } | 168 } |
| 181 | 169 |
| 182 registrar_.Init(prefs); | 170 registrar_.Init(prefs); |
| 183 registrar_.RemoveAll(); | 171 registrar_.RemoveAll(); |
| 184 base::Closure callback = base::Bind(&GesturePrefsObserver::Update, | 172 base::Closure callback = base::Bind(&GesturePrefsObserver::Update, |
| 185 base::Unretained(this)); | 173 base::Unretained(this)); |
| 186 | 174 |
| 187 base::Closure notify_callback = base::Bind(&GesturePrefsObserver::Notify, | 175 base::Closure notify_callback = base::Bind(&GesturePrefsObserver::Notify, |
| 188 base::Unretained(this)); | 176 base::Unretained(this)); |
| 189 | 177 |
| 190 for (size_t i = 0; i < arraysize(kPrefsToObserve); ++i) | 178 for (size_t i = 0; i < arraysize(kPrefsToObserve); ++i) |
| 191 registrar_.Add(kPrefsToObserve[i], callback); | 179 registrar_.Add(kPrefsToObserve[i], callback); |
| 192 | 180 |
| 193 const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); | 181 const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); |
| 194 for (size_t i = 0; i < overscroll_prefs.size(); ++i) | 182 for (size_t i = 0; i < overscroll_prefs.size(); ++i) |
| 195 registrar_.Add(overscroll_prefs[i].pref_name, callback); | 183 registrar_.Add(overscroll_prefs[i].pref_name, callback); |
| 196 | 184 |
| 197 for (size_t i = 0; i < arraysize(kFlingTouchpadPrefs); ++i) | |
| 198 registrar_.Add(kFlingTouchpadPrefs[i], notify_callback); | |
| 199 for (size_t i = 0; i < arraysize(kFlingTouchscreenPrefs); ++i) | |
| 200 registrar_.Add(kFlingTouchscreenPrefs[i], notify_callback); | |
| 201 | |
| 202 #if defined(USE_ASH) | 185 #if defined(USE_ASH) |
| 203 for (size_t i = 0; i < arraysize(kImmersiveModePrefs); ++i) | 186 for (size_t i = 0; i < arraysize(kImmersiveModePrefs); ++i) |
| 204 registrar_.Add(kImmersiveModePrefs[i], callback); | 187 registrar_.Add(kImmersiveModePrefs[i], callback); |
| 205 #endif // USE_ASH | 188 #endif // USE_ASH |
| 206 Update(); | 189 Update(); |
| 207 } | 190 } |
| 208 | 191 |
| 209 GesturePrefsObserver::~GesturePrefsObserver() {} | 192 GesturePrefsObserver::~GesturePrefsObserver() {} |
| 210 | 193 |
| 211 void GesturePrefsObserver::Shutdown() { | 194 void GesturePrefsObserver::Shutdown() { |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 prefs_->GetDouble( | 270 prefs_->GetDouble( |
| 288 prefs::kRailBreakProportion)); | 271 prefs::kRailBreakProportion)); |
| 289 GestureConfiguration::set_rail_start_proportion( | 272 GestureConfiguration::set_rail_start_proportion( |
| 290 prefs_->GetDouble( | 273 prefs_->GetDouble( |
| 291 prefs::kRailStartProportion)); | 274 prefs::kRailStartProportion)); |
| 292 GestureConfiguration::set_scroll_prediction_seconds( | 275 GestureConfiguration::set_scroll_prediction_seconds( |
| 293 prefs_->GetDouble(prefs::kScrollPredictionSeconds)); | 276 prefs_->GetDouble(prefs::kScrollPredictionSeconds)); |
| 294 GestureConfiguration::set_show_press_delay_in_ms( | 277 GestureConfiguration::set_show_press_delay_in_ms( |
| 295 prefs_->GetInteger(prefs::kShowPressDelayInMS)); | 278 prefs_->GetInteger(prefs::kShowPressDelayInMS)); |
| 296 | 279 |
| 280 // Fling curve: Touchpad |
| 281 GestureConfiguration::set_touchpad_fling_curve_alpha( |
| 282 prefs_->GetDouble(prefs::kFlingCurveTouchpadAlpha)); |
| 283 GestureConfiguration::set_touchpad_fling_curve_beta( |
| 284 prefs_->GetDouble(prefs::kFlingCurveTouchpadBeta)); |
| 285 GestureConfiguration::set_touchpad_fling_curve_gamma( |
| 286 prefs_->GetDouble(prefs::kFlingCurveTouchpadGamma)); |
| 287 |
| 288 // Fling curve: Touchscreen |
| 289 GestureConfiguration::set_touchscreen_fling_curve_alpha( |
| 290 prefs_->GetDouble(prefs::kFlingCurveTouchscreenAlpha)); |
| 291 GestureConfiguration::set_touchscreen_fling_curve_beta( |
| 292 prefs_->GetDouble(prefs::kFlingCurveTouchscreenBeta)); |
| 293 GestureConfiguration::set_touchscreen_fling_curve_gamma( |
| 294 prefs_->GetDouble(prefs::kFlingCurveTouchscreenGamma)); |
| 295 |
| 297 UpdateOverscrollPrefs(); | 296 UpdateOverscrollPrefs(); |
| 298 UpdateImmersiveModePrefs(); | 297 UpdateImmersiveModePrefs(); |
| 299 } | 298 } |
| 300 | 299 |
| 301 void GesturePrefsObserver::UpdateOverscrollPrefs() { | 300 void GesturePrefsObserver::UpdateOverscrollPrefs() { |
| 302 const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); | 301 const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); |
| 303 for (size_t i = 0; i < overscroll_prefs.size(); ++i) { | 302 for (size_t i = 0; i < overscroll_prefs.size(); ++i) { |
| 304 content::SetOverscrollConfig(overscroll_prefs[i].config, | 303 content::SetOverscrollConfig(overscroll_prefs[i].config, |
| 305 static_cast<float>(prefs_->GetDouble(overscroll_prefs[i].pref_name))); | 304 static_cast<float>(prefs_->GetDouble(overscroll_prefs[i].pref_name))); |
| 306 } | 305 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 overscroll_prefs[i].pref_name, | 354 overscroll_prefs[i].pref_name, |
| 356 content::GetOverscrollConfig(overscroll_prefs[i].config), | 355 content::GetOverscrollConfig(overscroll_prefs[i].config), |
| 357 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 356 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 358 } | 357 } |
| 359 } | 358 } |
| 360 | 359 |
| 361 void GesturePrefsObserverFactoryAura::RegisterFlingCurveParameters( | 360 void GesturePrefsObserverFactoryAura::RegisterFlingCurveParameters( |
| 362 user_prefs::PrefRegistrySyncable* registry) { | 361 user_prefs::PrefRegistrySyncable* registry) { |
| 363 content::RendererPreferences def_prefs; | 362 content::RendererPreferences def_prefs; |
| 364 | 363 |
| 365 for (size_t i = 0; i < arraysize(kFlingTouchpadPrefs); i++) | 364 // Touchpad |
| 366 registry->RegisterDoublePref( | 365 registry->RegisterDoublePref( |
| 367 kFlingTouchpadPrefs[i], | 366 prefs::kFlingCurveTouchpadAlpha, |
| 368 def_prefs.touchpad_fling_profile[i], | 367 GestureConfiguration::touchpad_fling_curve_alpha(), |
| 369 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 368 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 369 registry->RegisterDoublePref( |
| 370 prefs::kFlingCurveTouchpadBeta, |
| 371 GestureConfiguration::touchpad_fling_curve_beta(), |
| 372 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 373 registry->RegisterDoublePref( |
| 374 prefs::kFlingCurveTouchpadGamma, |
| 375 GestureConfiguration::touchpad_fling_curve_gamma(), |
| 376 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 370 | 377 |
| 371 for (size_t i = 0; i < arraysize(kFlingTouchscreenPrefs); i++) | 378 // Touchscreen |
| 372 registry->RegisterDoublePref( | 379 registry->RegisterDoublePref( |
| 373 kFlingTouchscreenPrefs[i], | 380 prefs::kFlingCurveTouchscreenAlpha, |
| 374 def_prefs.touchscreen_fling_profile[i], | 381 GestureConfiguration::touchscreen_fling_curve_alpha(), |
| 375 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 382 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 383 registry->RegisterDoublePref( |
| 384 prefs::kFlingCurveTouchscreenBeta, |
| 385 GestureConfiguration::touchscreen_fling_curve_beta(), |
| 386 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 387 registry->RegisterDoublePref( |
| 388 prefs::kFlingCurveTouchscreenGamma, |
| 389 GestureConfiguration::touchscreen_fling_curve_gamma(), |
| 390 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 376 } | 391 } |
| 377 | 392 |
| 378 void GesturePrefsObserverFactoryAura::RegisterImmersiveModePrefs( | 393 void GesturePrefsObserverFactoryAura::RegisterImmersiveModePrefs( |
| 379 user_prefs::PrefRegistrySyncable* registry) { | 394 user_prefs::PrefRegistrySyncable* registry) { |
| 380 #if defined(USE_ASH) | 395 #if defined(USE_ASH) |
| 381 registry->RegisterIntegerPref( | 396 registry->RegisterIntegerPref( |
| 382 prefs::kImmersiveModeRevealDelayMs, | 397 prefs::kImmersiveModeRevealDelayMs, |
| 383 ImmersiveFullscreenConfiguration::immersive_mode_reveal_delay_ms(), | 398 ImmersiveFullscreenConfiguration::immersive_mode_reveal_delay_ms(), |
| 384 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | 399 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 385 registry->RegisterIntegerPref( | 400 registry->RegisterIntegerPref( |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 542 // Use same gesture preferences on incognito windows. | 557 // Use same gesture preferences on incognito windows. |
| 543 return chrome::GetBrowserContextRedirectedInIncognito(context); | 558 return chrome::GetBrowserContextRedirectedInIncognito(context); |
| 544 } | 559 } |
| 545 | 560 |
| 546 bool GesturePrefsObserverFactoryAura::ServiceIsNULLWhileTesting() const { | 561 bool GesturePrefsObserverFactoryAura::ServiceIsNULLWhileTesting() const { |
| 547 // Some tests replace the PrefService of the TestingProfile after the | 562 // Some tests replace the PrefService of the TestingProfile after the |
| 548 // GesturePrefsObserver has been created, which makes Shutdown() | 563 // GesturePrefsObserver has been created, which makes Shutdown() |
| 549 // remove the registrar from a non-existent PrefService. | 564 // remove the registrar from a non-existent PrefService. |
| 550 return true; | 565 return true; |
| 551 } | 566 } |
| OLD | NEW |