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 |