Index: chrome/browser/ui/views/ash/gesture_prefs_aura.cc |
diff --git a/chrome/browser/ui/views/ash/gesture_prefs_aura.cc b/chrome/browser/ui/views/ash/gesture_prefs_aura.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..66e88a7133c254ac283eb6b7ec7e7295eb3b5d66 |
--- /dev/null |
+++ b/chrome/browser/ui/views/ash/gesture_prefs_aura.cc |
@@ -0,0 +1,119 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/memory/singleton.h" |
+#include "chrome/browser/browser_process.h" |
+#include "chrome/browser/ui/gesture_prefs.h" |
+#include "chrome/browser/prefs/pref_change_registrar.h" |
+#include "chrome/browser/prefs/pref_service.h" |
+#include "chrome/common/chrome_notification_types.h" |
+#include "chrome/common/pref_names.h" |
+#include "content/public/browser/notification_observer.h" |
+#include "ui/aura/gestures/gesture_configuration.h" |
+ |
+using aura::GestureConfiguration; |
+ |
+namespace { |
+ |
+// This class manages gesture configuration preferences. |
+class GesturePrefsObserverAura : public content::NotificationObserver { |
+ public: |
+ static GesturePrefsObserverAura *GetInstance(); |
+ void RegisterPrefs(PrefService* prefs); |
+ |
+ private: |
+ GesturePrefsObserverAura(); |
+ friend struct DefaultSingletonTraits<GesturePrefsObserverAura>; |
+ virtual ~GesturePrefsObserverAura(); |
+ |
+ // content::NotificationObserver implementation. |
+ virtual void Observe(int type, |
+ const content::NotificationSource& source, |
+ const content::NotificationDetails& details) OVERRIDE; |
+ |
+ private: |
+ void Update(); |
+ |
+ PrefChangeRegistrar registrar_; |
+ PrefService* local_state_; |
+ DISALLOW_COPY_AND_ASSIGN(GesturePrefsObserverAura); |
+}; |
+ |
+// The list of prefs we want to observe. |
+// Note that this collection of settings should correspond to the settings used |
+// in ui/aura/gestures/gesture_configuration.h |
+const char* kPrefsToObserve[] = { |
+ prefs::kMaximumSecondsBetweenDoubleClick, |
+ prefs::kMaximumTouchDownDurationInSecondsForClick, |
+ prefs::kMaximumTouchMoveInPixelsForClick, |
+ prefs::kMinFlickSpeedSquared, |
+ prefs::kMinimumTouchDownDurationInSecondsForClick, |
+}; |
+ |
+const int kPrefsToObserveLength = arraysize(kPrefsToObserve); |
+ |
+GesturePrefsObserverAura::GesturePrefsObserverAura() |
+ : local_state_(0) { |
+} |
+ |
+GesturePrefsObserverAura::~GesturePrefsObserverAura() { |
+} |
+ |
+GesturePrefsObserverAura* GesturePrefsObserverAura::GetInstance() { |
+ return Singleton<GesturePrefsObserverAura, |
+ LeakySingletonTraits<GesturePrefsObserverAura> >::get(); |
+} |
+ |
+void GesturePrefsObserverAura::RegisterPrefs(PrefService* local_state) { |
+ if (local_state_ == 0) { |
+ local_state_ = local_state; |
+ |
+ if (local_state_) { |
+ local_state_->RegisterDoublePref( |
+ prefs::kMaximumSecondsBetweenDoubleClick, 0.7); |
+ local_state_->RegisterDoublePref( |
+ prefs::kMaximumTouchDownDurationInSecondsForClick, 0.8); |
+ local_state_->RegisterDoublePref( |
+ prefs::kMaximumTouchMoveInPixelsForClick, 20); |
+ local_state_->RegisterDoublePref( |
+ prefs::kMinFlickSpeedSquared, 550.f*550.f); |
+ local_state_->RegisterDoublePref( |
+ prefs::kMinimumTouchDownDurationInSecondsForClick, 0.01); |
+ |
+ registrar_.Init(local_state_); |
+ registrar_.RemoveAll(); |
+ for (int i = 0; i < kPrefsToObserveLength; ++i) |
+ registrar_.Add(kPrefsToObserve[i], this); |
+ } |
+ } |
+} |
+ |
+void GesturePrefsObserverAura::Update() { |
+ if (local_state_) { |
+ GestureConfiguration::set_max_seconds_between_double_click( |
+ local_state_->GetDouble(prefs::kMaximumSecondsBetweenDoubleClick)); |
+ GestureConfiguration::set_max_touch_down_duration_in_seconds_for_click( |
+ local_state_->GetDouble( |
+ prefs::kMaximumTouchDownDurationInSecondsForClick)); |
+ GestureConfiguration::set_max_touch_move_in_pixels_for_click( |
+ local_state_->GetDouble(prefs::kMaximumTouchMoveInPixelsForClick)); |
+ GestureConfiguration::set_min_flick_speed_squared( |
+ local_state_->GetDouble(prefs::kMinFlickSpeedSquared)); |
+ GestureConfiguration::set_min_touch_down_duration_in_seconds_for_click( |
+ local_state_->GetDouble( |
+ prefs::kMinimumTouchDownDurationInSecondsForClick)); |
+ } |
+} |
+ |
+void GesturePrefsObserverAura::Observe(int type, |
+ const content::NotificationSource& source, |
+ const content::NotificationDetails& details) { |
+ Update(); |
+} |
+ |
+} // namespace |
+ |
+void GesturePrefsRegisterPrefs(PrefService* prefs) { |
+ GesturePrefsObserverAura::GetInstance()->RegisterPrefs(prefs); |
+} |