gesture_prefs_observer_factory_aura.cc revision 90dce4d38c5ff5333bea97d859d4e484e27edf0c
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" 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/profiles/incognito_helpers.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_notification_types.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h" 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "components/browser_context_keyed_service/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" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/gestures/gesture_configuration.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(USE_ASH) 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/wm/workspace/workspace_cycler_configuration.h" 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/ui/immersive_fullscreen_configuration.h" 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // USE_ASH 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(USE_ASH) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using ash::WorkspaceCyclerConfiguration; 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // USE_ASH 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ui::GestureConfiguration; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// TODO(rjkroege): Remove this deprecated pref in M29. http://crbug.com/160243. 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kTouchScreenFlingAccelerationAdjustment[] = 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "gesture.touchscreen_fling_acceleration_adjustment"; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct OverscrollPref { 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* pref_name; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::OverscrollConfig config; 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const std::vector<OverscrollPref>& GetOverscrollPrefs() { 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CR_DEFINE_STATIC_LOCAL(std::vector<OverscrollPref>, overscroll_prefs, ()); 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (overscroll_prefs.empty()) { 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) using namespace content; 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const OverscrollPref kOverscrollPrefs[] = { 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kOverscrollHorizontalThresholdComplete, 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OVERSCROLL_CONFIG_HORIZ_THRESHOLD_COMPLETE }, 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kOverscrollVerticalThresholdComplete, 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OVERSCROLL_CONFIG_VERT_THRESHOLD_COMPLETE }, 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kOverscrollMinimumThresholdStart, 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OVERSCROLL_CONFIG_MIN_THRESHOLD_START }, 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kOverscrollHorizontalResistThreshold, 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OVERSCROLL_CONFIG_HORIZ_RESIST_AFTER }, 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kOverscrollVerticalResistThreshold, 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OVERSCROLL_CONFIG_VERT_RESIST_AFTER }, 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) overscroll_prefs.assign(kOverscrollPrefs, 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) kOverscrollPrefs + arraysize(kOverscrollPrefs)); 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return overscroll_prefs; 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(USE_ASH) 71b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)const char* kImmersiveModePrefs[] = { 72b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) prefs::kImmersiveModeRevealDelayMs, 73b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) prefs::kImmersiveModeRevealXThresholdPixels, 74b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)}; 75b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct WorkspaceCyclerPref { 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const char* pref_name; 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::Property property; 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const std::vector<WorkspaceCyclerPref>& GetWorkspaceCyclerPrefs() { 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) CR_DEFINE_STATIC_LOCAL(std::vector<WorkspaceCyclerPref>, cycler_prefs, ()); 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (cycler_prefs.empty()) { 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const WorkspaceCyclerPref kCyclerPrefs[] = { 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kWorkspaceCyclerShallowerThanSelectedYOffsets, 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::SHALLOWER_THAN_SELECTED_Y_OFFSETS }, 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kWorkspaceCyclerDeeperThanSelectedYOffsets, 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::DEEPER_THAN_SELECTED_Y_OFFSETS }, 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kWorkspaceCyclerSelectedYOffset, 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::SELECTED_Y_OFFSET }, 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kWorkspaceCyclerSelectedScale, 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::SELECTED_SCALE }, 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kWorkspaceCyclerMinScale, 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::MIN_SCALE }, 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kWorkspaceCyclerMaxScale, 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::MAX_SCALE }, 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kWorkspaceCyclerMinBrightness, 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::MIN_BRIGHTNESS }, 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kWorkspaceCyclerBackgroundOpacity, 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::BACKGROUND_OPACITY }, 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kWorkspaceCyclerDesktopWorkspaceBrightness, 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::DESKTOP_WORKSPACE_BRIGHTNESS }, 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kWorkspaceCyclerDistanceToInitiateCycling, 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::DISTANCE_TO_INITIATE_CYCLING }, 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kWorkspaceCyclerScrollDistanceToCycleToNextWorkspace, 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration:: 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SCROLL_DISTANCE_TO_CYCLE_TO_NEXT_WORKSPACE }, 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kWorkspaceCyclerCyclerStepAnimationDurationRatio, 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::CYCLER_STEP_ANIMATION_DURATION_RATIO }, 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kWorkspaceCyclerStartCyclerAnimationDuration, 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::START_CYCLER_ANIMATION_DURATION }, 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { prefs::kWorkspaceCyclerStopCyclerAnimationDuration, 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::STOP_CYCLER_ANIMATION_DURATION }, 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cycler_prefs.assign(kCyclerPrefs, kCyclerPrefs + arraysize(kCyclerPrefs)); 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return cycler_prefs; 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // USE_ASH 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This class manages gesture configuration preferences. 12290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class GesturePrefsObserver : public BrowserContextKeyedService { 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit GesturePrefsObserver(PrefService* prefs); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~GesturePrefsObserver(); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 12790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // BrowserContextKeyedService implementation. 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Shutdown() OVERRIDE; 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Notification callback invoked when browser-side preferences 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // are updated and need to be pushed into ui::GesturePreferences. 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Update(); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Notification callback invoked when the fling deacceleration 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // gesture preferences are changed from chrome://gesture. 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Broadcasts the changes all renderers where they are used. 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void Notify(); 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Notification helper to push overscroll preferences into 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // content. 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateOverscrollPrefs(); 143b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 144b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) void UpdateImmersiveModePrefs(); 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void UpdateWorkspaceCyclerPrefs(); 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefChangeRegistrar registrar_; 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* prefs_; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(GesturePrefsObserver); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The list of prefs we want to observe. 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Note that this collection of settings should correspond to the settings used 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// in ui/base/gestures/gesture_configuration.h 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char* kPrefsToObserve[] = { 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingAccelerationCurveCoefficient0, 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingAccelerationCurveCoefficient1, 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingAccelerationCurveCoefficient2, 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingAccelerationCurveCoefficient3, 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingMaxCancelToDownTimeInMs, 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingMaxTapGapTimeInMs, 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kTabScrubActivationDelayInMS, 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingVelocityCap, 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kLongPressTimeInSeconds, 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxDistanceForTwoFingerTapInPixels, 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSecondsBetweenDoubleClick, 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSeparationForGestureTouchesInPixels, 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSwipeDeviationRatio, 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxTouchDownDurationInSecondsForClick, 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxTouchMoveInPixelsForClick, 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinDistanceForPinchScrollInPixels, 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinFlickSpeedSquared, 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinPinchUpdateDistanceInPixels, 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinRailBreakVelocity, 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinScrollDeltaSquared, 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinSwipeSpeed, 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinTouchDownDurationInSecondsForClick, 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kPointsBufferedForVelocity, 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kRailBreakProportion, 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kRailStartProportion, 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kSemiLongPressTimeInSeconds, 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char* kFlingTouchpadPrefs[] = { 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingCurveTouchpadAlpha, 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingCurveTouchpadBeta, 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingCurveTouchpadGamma 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char* kFlingTouchscreenPrefs[] = { 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingCurveTouchscreenAlpha, 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingCurveTouchscreenBeta, 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingCurveTouchscreenGamma, 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GesturePrefsObserver::GesturePrefsObserver(PrefService* prefs) 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : prefs_(prefs) { 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Clear for migration. 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs->ClearPref(kTouchScreenFlingAccelerationAdjustment); 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar_.Init(prefs); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar_.RemoveAll(); 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Closure callback = base::Bind(&GesturePrefsObserver::Update, 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this)); 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Closure notify_callback = base::Bind(&GesturePrefsObserver::Notify, 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this)); 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < arraysize(kPrefsToObserve); ++i) 2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar_.Add(kPrefsToObserve[i], callback); 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < overscroll_prefs.size(); ++i) 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar_.Add(overscroll_prefs[i].pref_name, callback); 2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < arraysize(kFlingTouchpadPrefs); ++i) 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar_.Add(kFlingTouchpadPrefs[i], notify_callback); 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < arraysize(kFlingTouchscreenPrefs); ++i) 2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar_.Add(kFlingTouchscreenPrefs[i], notify_callback); 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(USE_ASH) 223b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) for (size_t i = 0; i < arraysize(kImmersiveModePrefs); ++i) 224b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) registrar_.Add(kImmersiveModePrefs[i], callback); 225b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<WorkspaceCyclerPref>& cycler_prefs = 2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetWorkspaceCyclerPrefs(); 2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < cycler_prefs.size(); ++i) 2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registrar_.Add(cycler_prefs[i].pref_name, callback); 2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // USE_ASH 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Update(); 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GesturePrefsObserver::~GesturePrefsObserver() {} 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void GesturePrefsObserver::Shutdown() { 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) registrar_.RemoveAll(); 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void GesturePrefsObserver::Update() { 2412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::set_fling_acceleration_curve_coefficients(0, 2422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetDouble(prefs::kFlingAccelerationCurveCoefficient0)); 2432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::set_fling_acceleration_curve_coefficients(1, 2442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetDouble(prefs::kFlingAccelerationCurveCoefficient1)); 2452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::set_fling_acceleration_curve_coefficients(2, 2462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetDouble(prefs::kFlingAccelerationCurveCoefficient2)); 2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::set_fling_acceleration_curve_coefficients(3, 2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetDouble(prefs::kFlingAccelerationCurveCoefficient3)); 2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::set_fling_max_cancel_to_down_time_in_ms( 2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetInteger(prefs::kFlingMaxCancelToDownTimeInMs)); 2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::set_fling_max_tap_gap_time_in_ms( 2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetInteger(prefs::kFlingMaxTapGapTimeInMs)); 2532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::set_tab_scrub_activation_delay_in_ms( 2542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetInteger(prefs::kTabScrubActivationDelayInMS)); 2552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::set_fling_velocity_cap( 2562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetDouble(prefs::kFlingVelocityCap)); 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_long_press_time_in_seconds( 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kLongPressTimeInSeconds)); 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_semi_long_press_time_in_seconds( 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kSemiLongPressTimeInSeconds)); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_max_distance_for_two_finger_tap_in_pixels( 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxDistanceForTwoFingerTapInPixels)); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_max_seconds_between_double_click( 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSecondsBetweenDoubleClick)); 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_max_separation_for_gesture_touches_in_pixels( 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSeparationForGestureTouchesInPixels)); 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_max_swipe_deviation_ratio( 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSwipeDeviationRatio)); 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_max_touch_down_duration_in_seconds_for_click( 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxTouchDownDurationInSecondsForClick)); 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_max_touch_move_in_pixels_for_click( 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxTouchMoveInPixelsForClick)); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_max_distance_between_taps_for_double_tap( 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxDistanceBetweenTapsForDoubleTap)); 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_min_distance_for_pinch_scroll_in_pixels( 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinDistanceForPinchScrollInPixels)); 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_min_flick_speed_squared( 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinFlickSpeedSquared)); 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_min_pinch_update_distance_in_pixels( 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinPinchUpdateDistanceInPixels)); 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_min_rail_break_velocity( 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinRailBreakVelocity)); 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_min_scroll_delta_squared( 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinScrollDeltaSquared)); 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_min_swipe_speed( 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinSwipeSpeed)); 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_min_touch_down_duration_in_seconds_for_click( 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinTouchDownDurationInSecondsForClick)); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_points_buffered_for_velocity( 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetInteger( 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kPointsBufferedForVelocity)); 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_rail_break_proportion( 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kRailBreakProportion)); 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::set_rail_start_proportion( 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs_->GetDouble( 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kRailStartProportion)); 3142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UpdateOverscrollPrefs(); 316b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) UpdateImmersiveModePrefs(); 3172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UpdateWorkspaceCyclerPrefs(); 3182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 3192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void GesturePrefsObserver::UpdateOverscrollPrefs() { 3212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); 3222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < overscroll_prefs.size(); ++i) { 3232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::SetOverscrollConfig(overscroll_prefs[i].config, 3242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static_cast<float>(prefs_->GetDouble(overscroll_prefs[i].pref_name))); 3252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 3272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 328b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)void GesturePrefsObserver::UpdateImmersiveModePrefs() { 329b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#if defined(USE_ASH) 33090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ImmersiveFullscreenConfiguration::set_immersive_mode_reveal_delay_ms( 331b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) prefs_->GetInteger(prefs::kImmersiveModeRevealDelayMs)); 33290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ImmersiveFullscreenConfiguration:: 33390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) set_immersive_mode_reveal_x_threshold_pixels( 33490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) prefs_->GetInteger(prefs::kImmersiveModeRevealXThresholdPixels)); 335b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#endif // USE_ASH 336b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)} 337b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 3382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void GesturePrefsObserver::UpdateWorkspaceCyclerPrefs() { 3392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(USE_ASH) 3402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<WorkspaceCyclerPref>& cycler_prefs = 3412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetWorkspaceCyclerPrefs(); 3422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < cycler_prefs.size(); ++i) { 3432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::Property property = 3442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cycler_prefs[i].property; 3452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (WorkspaceCyclerConfiguration::IsListProperty(property)) { 3462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::SetListValue(property, 3472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *prefs_->GetList(cycler_prefs[i].pref_name)); 3482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else { 3492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::SetDouble(property, 3502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs_->GetDouble(cycler_prefs[i].pref_name)); 3512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // USE_ASH 3542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 3552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void GesturePrefsObserver::Notify() { 3572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Must do a notify to distribute the changes to all renderers. 3582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::NotificationService* service = 3592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::NotificationService::current(); 3602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) service->Notify(chrome::NOTIFICATION_BROWSER_FLING_CURVE_PARAMETERS_CHANGED, 3612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::Source<GesturePrefsObserver>(this), 3622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::NotificationService::NoDetails()); 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GesturePrefsObserverFactoryAura* 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GesturePrefsObserverFactoryAura::GetInstance() { 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return Singleton<GesturePrefsObserverFactoryAura>::get(); 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GesturePrefsObserverFactoryAura::GesturePrefsObserverFactoryAura() 37490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) : BrowserContextKeyedServiceFactory( 37590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) "GesturePrefsObserverAura", 37690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) BrowserContextDependencyManager::GetInstance()) {} 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GesturePrefsObserverFactoryAura::~GesturePrefsObserverFactoryAura() {} 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)BrowserContextKeyedService* 38190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)GesturePrefsObserverFactoryAura::BuildServiceInstanceFor( 382c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::BrowserContext* profile) const { 383c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return new GesturePrefsObserver(static_cast<Profile*>(profile)->GetPrefs()); 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void GesturePrefsObserverFactoryAura::RegisterOverscrollPrefs( 387c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable* registry) { 3882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs(); 3892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < overscroll_prefs.size(); ++i) { 3912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 3922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) overscroll_prefs[i].pref_name, 3932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::GetOverscrollConfig(overscroll_prefs[i].config), 394c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 3952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 3972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 3982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void GesturePrefsObserverFactoryAura::RegisterFlingCurveParameters( 399c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable* registry) { 4002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::RendererPreferences def_prefs; 4012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < arraysize(kFlingTouchpadPrefs); i++) 403c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) registry->RegisterDoublePref( 404c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) kFlingTouchpadPrefs[i], 405c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) def_prefs.touchpad_fling_profile[i], 406c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < arraysize(kFlingTouchscreenPrefs); i++) 409c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) registry->RegisterDoublePref( 410c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) kFlingTouchscreenPrefs[i], 411c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) def_prefs.touchscreen_fling_profile[i], 412c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 4142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 415b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)void GesturePrefsObserverFactoryAura::RegisterImmersiveModePrefs( 416b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) user_prefs::PrefRegistrySyncable* registry) { 417b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#if defined(USE_ASH) 418b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) registry->RegisterIntegerPref( 419b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) prefs::kImmersiveModeRevealDelayMs, 42090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ImmersiveFullscreenConfiguration::immersive_mode_reveal_delay_ms(), 421b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 422b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) registry->RegisterIntegerPref( 423b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) prefs::kImmersiveModeRevealXThresholdPixels, 42490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ImmersiveFullscreenConfiguration:: 42590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) immersive_mode_reveal_x_threshold_pixels(), 426b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 427b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#endif // USE_ASH 428b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)} 429b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 4302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void GesturePrefsObserverFactoryAura::RegisterWorkspaceCyclerPrefs( 431c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable* registry) { 4322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(USE_ASH) 4332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::vector<WorkspaceCyclerPref>& cycler_prefs = 4342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetWorkspaceCyclerPrefs(); 4352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < cycler_prefs.size(); ++i) { 4362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::Property property = 4372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cycler_prefs[i].property; 4382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (WorkspaceCyclerConfiguration::IsListProperty(property)) { 4392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterListPref( 4402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cycler_prefs[i].pref_name, 4412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::GetListValue(property).DeepCopy(), 442c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else { 4442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 4452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cycler_prefs[i].pref_name, 4462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WorkspaceCyclerConfiguration::GetDouble(property), 447c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 4502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // USE_ASH 4512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 4522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void GesturePrefsObserverFactoryAura::RegisterUserPrefs( 454c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable* registry) { 4552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 4562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingAccelerationCurveCoefficient0, 4572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::fling_acceleration_curve_coefficients(0), 458c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 4602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingAccelerationCurveCoefficient1, 4612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::fling_acceleration_curve_coefficients(1), 462c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 4642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingAccelerationCurveCoefficient2, 4652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::fling_acceleration_curve_coefficients(2), 466c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 4682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingAccelerationCurveCoefficient3, 4692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::fling_acceleration_curve_coefficients(3), 470c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterIntegerPref( 4722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingMaxCancelToDownTimeInMs, 4732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::fling_max_cancel_to_down_time_in_ms(), 474c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterIntegerPref( 4762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingMaxTapGapTimeInMs, 4772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::fling_max_tap_gap_time_in_ms(), 478c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterIntegerPref( 4802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kTabScrubActivationDelayInMS, 4812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::tab_scrub_activation_delay_in_ms(), 482c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 4842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kFlingVelocityCap, 4852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GestureConfiguration::fling_velocity_cap(), 486c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kLongPressTimeInSeconds, 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::long_press_time_in_seconds(), 490c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kSemiLongPressTimeInSeconds, 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::semi_long_press_time_in_seconds(), 494c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxDistanceForTwoFingerTapInPixels, 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::max_distance_for_two_finger_tap_in_pixels(), 498c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 4992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSecondsBetweenDoubleClick, 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::max_seconds_between_double_click(), 502c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSeparationForGestureTouchesInPixels, 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::max_separation_for_gesture_touches_in_pixels(), 506c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxSwipeDeviationRatio, 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::max_swipe_deviation_ratio(), 510c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxTouchDownDurationInSecondsForClick, 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::max_touch_down_duration_in_seconds_for_click(), 514c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxTouchMoveInPixelsForClick, 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::max_touch_move_in_pixels_for_click(), 518c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMaxDistanceBetweenTapsForDoubleTap, 5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::max_distance_between_taps_for_double_tap(), 522c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinDistanceForPinchScrollInPixels, 5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::min_distance_for_pinch_scroll_in_pixels(), 526c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinFlickSpeedSquared, 5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::min_flick_speed_squared(), 530c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinPinchUpdateDistanceInPixels, 5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::min_pinch_update_distance_in_pixels(), 534c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinRailBreakVelocity, 5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::min_rail_break_velocity(), 538c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinScrollDeltaSquared, 5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::min_scroll_delta_squared(), 542c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinSwipeSpeed, 5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::min_swipe_speed(), 546c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kMinTouchDownDurationInSecondsForClick, 5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::min_touch_down_duration_in_seconds_for_click(), 550c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterIntegerPref( 5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kPointsBufferedForVelocity, 5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::points_buffered_for_velocity(), 554c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kRailBreakProportion, 5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::rail_break_proportion(), 558c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) registry->RegisterDoublePref( 5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) prefs::kRailStartProportion, 5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GestureConfiguration::rail_start_proportion(), 562c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Register for migration. 565c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) registry->RegisterDoublePref( 566c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) kTouchScreenFlingAccelerationAdjustment, 567c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 0.0, 568c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 5692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RegisterOverscrollPrefs(registry); 5712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RegisterFlingCurveParameters(registry); 572b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) RegisterImmersiveModePrefs(registry); 5732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) RegisterWorkspaceCyclerPrefs(registry); 5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 57690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)bool 57790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)GesturePrefsObserverFactoryAura::ServiceIsCreatedWithBrowserContext() const { 5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create the observer as soon as the profile is created. 5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 582c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)content::BrowserContext* 583c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)GesturePrefsObserverFactoryAura::GetBrowserContextToUse( 584c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::BrowserContext* context) const { 5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Use same gesture preferences on incognito windows. 586c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return chrome::GetBrowserContextRedirectedInIncognito(context); 5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool GesturePrefsObserverFactoryAura::ServiceIsNULLWhileTesting() const { 5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Some tests replace the PrefService of the TestingProfile after the 5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // GesturePrefsObserver has been created, which makes Shutdown() 5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // remove the registrar from a non-existent PrefService. 5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 595