gesture_prefs_observer_factory_aura.cc revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/gesture_prefs_observer_factory_aura.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <vector> 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/bind.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/bind_helpers.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_change_registrar.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h" 147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/chrome_notification_types.h" 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/profiles/incognito_helpers.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h" 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_dependency_manager.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "components/user_prefs/pref_registry_syncable.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_observer.h" 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/notification_service.h" 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/overscroll_configuration.h" 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/common/renderer_preferences.h" 2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "ui/events/gestures/gesture_configuration.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ui::GestureConfiguration; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// TODO(tdresser): Remove this deprecated pref. See crbug.com/339486. 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const char kMinScrollSuccessiveVelocityEvents[] = 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "gesture.min_scroll_successive_velocity_events"; 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct OverscrollPref { 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* pref_name; 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::OverscrollConfig config; 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const std::vector<OverscrollPref>& GetOverscrollPrefs() { 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CR_DEFINE_STATIC_LOCAL(std::vector<OverscrollPref>, overscroll_prefs, ()); 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (overscroll_prefs.empty()) { 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) using namespace content; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const OverscrollPref kOverscrollPrefs[] = { 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kOverscrollHorizontalThresholdComplete, 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OVERSCROLL_CONFIG_HORIZ_THRESHOLD_COMPLETE }, 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kOverscrollVerticalThresholdComplete, 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OVERSCROLL_CONFIG_VERT_THRESHOLD_COMPLETE }, 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kOverscrollMinimumThresholdStart, 49424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) OVERSCROLL_CONFIG_HORIZ_THRESHOLD_START_TOUCHSCREEN }, 50424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) { prefs::kOverscrollMinimumThresholdStartTouchpad, 51424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) OVERSCROLL_CONFIG_HORIZ_THRESHOLD_START_TOUCHPAD }, 5258e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch { prefs::kOverscrollVerticalThresholdStart, 5358e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch OVERSCROLL_CONFIG_VERT_THRESHOLD_START }, 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kOverscrollHorizontalResistThreshold, 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OVERSCROLL_CONFIG_HORIZ_RESIST_AFTER }, 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kOverscrollVerticalResistThreshold, 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OVERSCROLL_CONFIG_VERT_RESIST_AFTER }, 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) overscroll_prefs.assign(kOverscrollPrefs, 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) kOverscrollPrefs + arraysize(kOverscrollPrefs)); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return overscroll_prefs; 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This class manages gesture configuration preferences. 66a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class GesturePrefsObserver : public KeyedService { 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit GesturePrefsObserver(PrefService* prefs); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~GesturePrefsObserver(); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 71a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // KeyedService implementation. 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Shutdown() OVERRIDE; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Notification callback invoked when browser-side preferences 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // are updated and need to be pushed into ui::GesturePreferences. 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Update(); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Notification callback invoked when the fling deacceleration 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // gesture preferences are changed from chrome://gesture. 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Broadcasts the changes all renderers where they are used. 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void Notify(); 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Notification helper to push overscroll preferences into 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // content. 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateOverscrollPrefs(); 87b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefChangeRegistrar registrar_; 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs_; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(GesturePrefsObserver); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The list of prefs we want to observe. 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Note that this collection of settings should correspond to the settings used 9668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// in ui/events/gestures/gesture_configuration.h 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char* kPrefsToObserve[] = { 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingAccelerationCurveCoefficient0, 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingAccelerationCurveCoefficient1, 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingAccelerationCurveCoefficient2, 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingAccelerationCurveCoefficient3, 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingMaxCancelToDownTimeInMs, 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingMaxTapGapTimeInMs, 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kTabScrubActivationDelayInMS, 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingVelocityCap, 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kLongPressTimeInSeconds, 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxDistanceForTwoFingerTapInPixels, 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSecondsBetweenDoubleClick, 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSeparationForGestureTouchesInPixels, 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSwipeDeviationRatio, 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxTouchDownDurationInSecondsForClick, 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxTouchMoveInPixelsForClick, 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinDistanceForPinchScrollInPixels, 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinFlickSpeedSquared, 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinPinchUpdateDistanceInPixels, 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinRailBreakVelocity, 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinScrollDeltaSquared, 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinSwipeSpeed, 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinTouchDownDurationInSecondsForClick, 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kPointsBufferedForVelocity, 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kRailBreakProportion, 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kRailStartProportion, 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kSemiLongPressTimeInSeconds, 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char* kFlingTouchpadPrefs[] = { 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingCurveTouchpadAlpha, 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingCurveTouchpadBeta, 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingCurveTouchpadGamma 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char* kFlingTouchscreenPrefs[] = { 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingCurveTouchscreenAlpha, 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingCurveTouchscreenBeta, 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingCurveTouchscreenGamma, 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GesturePrefsObserver::GesturePrefsObserver(PrefService* prefs) 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : prefs_(prefs) { 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Clear for migration. 1415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) prefs->ClearPref(kMinScrollSuccessiveVelocityEvents); 142ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar_.Init(prefs); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar_.RemoveAll(); 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Closure callback = base::Bind(&GesturePrefsObserver::Update, 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this)); 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Closure notify_callback = base::Bind(&GesturePrefsObserver::Notify, 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this)); 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < arraysize(kPrefsToObserve); ++i) 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar_.Add(kPrefsToObserve[i], callback); 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < overscroll_prefs.size(); ++i) 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar_.Add(overscroll_prefs[i].pref_name, callback); 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < arraysize(kFlingTouchpadPrefs); ++i) 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar_.Add(kFlingTouchpadPrefs[i], notify_callback); 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < arraysize(kFlingTouchscreenPrefs); ++i) 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar_.Add(kFlingTouchscreenPrefs[i], notify_callback); 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Update(); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GesturePrefsObserver::~GesturePrefsObserver() {} 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void GesturePrefsObserver::Shutdown() { 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar_.RemoveAll(); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void GesturePrefsObserver::Update() { 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::set_fling_acceleration_curve_coefficients(0, 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetDouble(prefs::kFlingAccelerationCurveCoefficient0)); 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::set_fling_acceleration_curve_coefficients(1, 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetDouble(prefs::kFlingAccelerationCurveCoefficient1)); 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::set_fling_acceleration_curve_coefficients(2, 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetDouble(prefs::kFlingAccelerationCurveCoefficient2)); 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::set_fling_acceleration_curve_coefficients(3, 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetDouble(prefs::kFlingAccelerationCurveCoefficient3)); 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::set_fling_max_cancel_to_down_time_in_ms( 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetInteger(prefs::kFlingMaxCancelToDownTimeInMs)); 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::set_fling_max_tap_gap_time_in_ms( 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetInteger(prefs::kFlingMaxTapGapTimeInMs)); 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::set_tab_scrub_activation_delay_in_ms( 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetInteger(prefs::kTabScrubActivationDelayInMS)); 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::set_fling_velocity_cap( 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetDouble(prefs::kFlingVelocityCap)); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_long_press_time_in_seconds( 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kLongPressTimeInSeconds)); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_semi_long_press_time_in_seconds( 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kSemiLongPressTimeInSeconds)); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_max_distance_for_two_finger_tap_in_pixels( 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxDistanceForTwoFingerTapInPixels)); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_max_seconds_between_double_click( 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSecondsBetweenDoubleClick)); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_max_separation_for_gesture_touches_in_pixels( 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSeparationForGestureTouchesInPixels)); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_max_swipe_deviation_ratio( 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSwipeDeviationRatio)); 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_max_touch_down_duration_in_seconds_for_click( 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxTouchDownDurationInSecondsForClick)); 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_max_touch_move_in_pixels_for_click( 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxTouchMoveInPixelsForClick)); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_max_distance_between_taps_for_double_tap( 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxDistanceBetweenTapsForDoubleTap)); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_min_distance_for_pinch_scroll_in_pixels( 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinDistanceForPinchScrollInPixels)); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_min_flick_speed_squared( 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinFlickSpeedSquared)); 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_min_pinch_update_distance_in_pixels( 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinPinchUpdateDistanceInPixels)); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_min_rail_break_velocity( 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinRailBreakVelocity)); 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_min_scroll_delta_squared( 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinScrollDeltaSquared)); 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_min_swipe_speed( 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinSwipeSpeed)); 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_min_touch_down_duration_in_seconds_for_click( 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinTouchDownDurationInSecondsForClick)); 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_points_buffered_for_velocity( 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetInteger( 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kPointsBufferedForVelocity)); 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_rail_break_proportion( 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kRailBreakProportion)); 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_rail_start_proportion( 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kRailStartProportion)); 246eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GestureConfiguration::set_scroll_prediction_seconds( 247eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch prefs_->GetDouble(prefs::kScrollPredictionSeconds)); 2481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) GestureConfiguration::set_show_press_delay_in_ms( 2491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) prefs_->GetInteger(prefs::kShowPressDelayInMS)); 2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UpdateOverscrollPrefs(); 2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void GesturePrefsObserver::UpdateOverscrollPrefs() { 2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); 2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < overscroll_prefs.size(); ++i) { 2572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::SetOverscrollConfig(overscroll_prefs[i].config, 2582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<float>(prefs_->GetDouble(overscroll_prefs[i].pref_name))); 2592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void GesturePrefsObserver::Notify() { 2632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Must do a notify to distribute the changes to all renderers. 2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::NotificationService* service = 2652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::NotificationService::current(); 2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) service->Notify(chrome::NOTIFICATION_BROWSER_FLING_CURVE_PARAMETERS_CHANGED, 2672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::Source<GesturePrefsObserver>(this), 2682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::NotificationService::NoDetails()); 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GesturePrefsObserverFactoryAura* 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GesturePrefsObserverFactoryAura::GetInstance() { 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return Singleton<GesturePrefsObserverFactoryAura>::get(); 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GesturePrefsObserverFactoryAura::GesturePrefsObserverFactoryAura() 28090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) : BrowserContextKeyedServiceFactory( 28190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) "GesturePrefsObserverAura", 28290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) BrowserContextDependencyManager::GetInstance()) {} 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GesturePrefsObserverFactoryAura::~GesturePrefsObserverFactoryAura() {} 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 286a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)KeyedService* GesturePrefsObserverFactoryAura::BuildServiceInstanceFor( 287c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::BrowserContext* profile) const { 288c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return new GesturePrefsObserver(static_cast<Profile*>(profile)->GetPrefs()); 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void GesturePrefsObserverFactoryAura::RegisterOverscrollPrefs( 292c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable* registry) { 2932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); 2942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < overscroll_prefs.size(); ++i) { 2962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 2972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) overscroll_prefs[i].pref_name, 2982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::GetOverscrollConfig(overscroll_prefs[i].config), 299c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 3022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void GesturePrefsObserverFactoryAura::RegisterFlingCurveParameters( 304c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable* registry) { 3052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::RendererPreferences def_prefs; 3062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < arraysize(kFlingTouchpadPrefs); i++) 308c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) registry->RegisterDoublePref( 309c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) kFlingTouchpadPrefs[i], 310c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) def_prefs.touchpad_fling_profile[i], 311c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < arraysize(kFlingTouchscreenPrefs); i++) 314c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) registry->RegisterDoublePref( 315c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) kFlingTouchscreenPrefs[i], 316c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) def_prefs.touchscreen_fling_profile[i], 317c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 3192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochvoid GesturePrefsObserverFactoryAura::RegisterProfilePrefs( 321c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable* registry) { 3222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingAccelerationCurveCoefficient0, 3242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::fling_acceleration_curve_coefficients(0), 325c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingAccelerationCurveCoefficient1, 3282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::fling_acceleration_curve_coefficients(1), 329c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingAccelerationCurveCoefficient2, 3322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::fling_acceleration_curve_coefficients(2), 333c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingAccelerationCurveCoefficient3, 3362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::fling_acceleration_curve_coefficients(3), 337c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterIntegerPref( 3392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingMaxCancelToDownTimeInMs, 3402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::fling_max_cancel_to_down_time_in_ms(), 341c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterIntegerPref( 3432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingMaxTapGapTimeInMs, 3442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::fling_max_tap_gap_time_in_ms(), 345c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterIntegerPref( 3472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kTabScrubActivationDelayInMS, 3482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::tab_scrub_activation_delay_in_ms(), 349c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingVelocityCap, 3522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::fling_velocity_cap(), 353c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kLongPressTimeInSeconds, 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::long_press_time_in_seconds(), 357c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kSemiLongPressTimeInSeconds, 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::semi_long_press_time_in_seconds(), 361c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxDistanceForTwoFingerTapInPixels, 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::max_distance_for_two_finger_tap_in_pixels(), 365c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSecondsBetweenDoubleClick, 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::max_seconds_between_double_click(), 369c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSeparationForGestureTouchesInPixels, 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::max_separation_for_gesture_touches_in_pixels(), 373c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSwipeDeviationRatio, 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::max_swipe_deviation_ratio(), 377c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxTouchDownDurationInSecondsForClick, 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::max_touch_down_duration_in_seconds_for_click(), 381c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxTouchMoveInPixelsForClick, 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::max_touch_move_in_pixels_for_click(), 385c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxDistanceBetweenTapsForDoubleTap, 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::max_distance_between_taps_for_double_tap(), 389c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinDistanceForPinchScrollInPixels, 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::min_distance_for_pinch_scroll_in_pixels(), 393c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinFlickSpeedSquared, 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::min_flick_speed_squared(), 397c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinPinchUpdateDistanceInPixels, 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::min_pinch_update_distance_in_pixels(), 401c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinRailBreakVelocity, 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::min_rail_break_velocity(), 405c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinScrollDeltaSquared, 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::min_scroll_delta_squared(), 409c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinSwipeSpeed, 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::min_swipe_speed(), 413c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinTouchDownDurationInSecondsForClick, 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::min_touch_down_duration_in_seconds_for_click(), 417c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterIntegerPref( 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kPointsBufferedForVelocity, 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::points_buffered_for_velocity(), 421c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kRailBreakProportion, 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::rail_break_proportion(), 425c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kRailStartProportion, 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::rail_start_proportion(), 429c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 430eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch registry->RegisterDoublePref( 431eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch prefs::kScrollPredictionSeconds, 432eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GestureConfiguration::scroll_prediction_seconds(), 433eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4341e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) registry->RegisterIntegerPref( 4351e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) prefs::kShowPressDelayInMS, 4361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) GestureConfiguration::show_press_delay_in_ms(), 4371e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Register for migration. 4405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) registry->RegisterIntegerPref( 4415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) kMinScrollSuccessiveVelocityEvents, 4425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 0, 443c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RegisterOverscrollPrefs(registry); 4462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RegisterFlingCurveParameters(registry); 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 44990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool 45090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)GesturePrefsObserverFactoryAura::ServiceIsCreatedWithBrowserContext() const { 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create the observer as soon as the profile is created. 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)content::BrowserContext* 456c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)GesturePrefsObserverFactoryAura::GetBrowserContextToUse( 457c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::BrowserContext* context) const { 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Use same gesture preferences on incognito windows. 459c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return chrome::GetBrowserContextRedirectedInIncognito(context); 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool GesturePrefsObserverFactoryAura::ServiceIsNULLWhileTesting() const { 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Some tests replace the PrefService of the TestingProfile after the 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // GesturePrefsObserver has been created, which makes Shutdown() 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // remove the registrar from a non-existent PrefService. 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 468