Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5001)

Unified Diff: chrome/browser/ui/gesture_prefs_observer_factory_aura.cc

Issue 12212040: Make the workspace cycler animation parameters editable via chrome://gesture (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/gesture_prefs_observer_factory_aura.h ('k') | chrome/common/pref_names.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/gesture_prefs_observer_factory_aura.cc
diff --git a/chrome/browser/ui/gesture_prefs_observer_factory_aura.cc b/chrome/browser/ui/gesture_prefs_observer_factory_aura.cc
index 4d79c02de5656f45b5837398e479b2c13e9ced41..7f256b82c789a991cdc3fbc59291e72f72a18ea1 100644
--- a/chrome/browser/ui/gesture_prefs_observer_factory_aura.cc
+++ b/chrome/browser/ui/gesture_prefs_observer_factory_aura.cc
@@ -4,6 +4,8 @@
#include "chrome/browser/ui/gesture_prefs_observer_factory_aura.h"
+#include <vector>
+
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/compiler_specific.h"
@@ -20,6 +22,14 @@
#include "content/public/common/renderer_preferences.h"
#include "ui/base/gestures/gesture_configuration.h"
+#if defined(USE_ASH)
+#include "ash/wm/workspace/workspace_cycler_configuration.h"
+#endif // USE_ASH
+
+#if defined(USE_ASH)
+using ash::WorkspaceCyclerConfiguration;
+#endif // USE_ASH
+
using ui::GestureConfiguration;
namespace {
@@ -29,15 +39,11 @@ struct OverscrollPref {
content::OverscrollConfig config;
};
-// This class manages gesture configuration preferences.
-class GesturePrefsObserver : public ProfileKeyedService {
- public:
- explicit GesturePrefsObserver(PrefService* prefs);
- virtual ~GesturePrefsObserver();
-
- static const OverscrollPref* GetOverscrollPrefs() {
+const std::vector<OverscrollPref>& GetOverscrollPrefs() {
+ CR_DEFINE_STATIC_LOCAL(std::vector<OverscrollPref>, overscroll_prefs, ());
+ if (overscroll_prefs.empty()) {
using namespace content;
- static OverscrollPref overscroll_prefs[] = {
+ const OverscrollPref kOverscrollPrefs[] = {
{ prefs::kOverscrollHorizontalThresholdComplete,
OVERSCROLL_CONFIG_HORIZ_THRESHOLD_COMPLETE },
{ prefs::kOverscrollVerticalThresholdComplete,
@@ -48,12 +54,62 @@ class GesturePrefsObserver : public ProfileKeyedService {
OVERSCROLL_CONFIG_HORIZ_RESIST_AFTER },
{ prefs::kOverscrollVerticalResistThreshold,
OVERSCROLL_CONFIG_VERT_RESIST_AFTER },
- { NULL,
- OVERSCROLL_CONFIG_NONE },
};
+ overscroll_prefs.assign(kOverscrollPrefs,
+ kOverscrollPrefs + arraysize(kOverscrollPrefs));
+ }
+ return overscroll_prefs;
+}
+
+#if defined(USE_ASH)
+struct WorkspaceCyclerPref {
+ const char* pref_name;
+ WorkspaceCyclerConfiguration::Property property;
+};
- return overscroll_prefs;
+const std::vector<WorkspaceCyclerPref>& GetWorkspaceCyclerPrefs() {
+ CR_DEFINE_STATIC_LOCAL(std::vector<WorkspaceCyclerPref>, cycler_prefs, ());
+ if (cycler_prefs.empty() && WorkspaceCyclerConfiguration::IsCyclerEnabled()) {
+ const WorkspaceCyclerPref kCyclerPrefs[] = {
+ { prefs::kWorkspaceCyclerShallowerThanSelectedYOffsets,
+ WorkspaceCyclerConfiguration::SHALLOWER_THAN_SELECTED_Y_OFFSETS },
+ { prefs::kWorkspaceCyclerDeeperThanSelectedYOffsets,
+ WorkspaceCyclerConfiguration::DEEPER_THAN_SELECTED_Y_OFFSETS },
+ { prefs::kWorkspaceCyclerSelectedYOffset,
+ WorkspaceCyclerConfiguration::SELECTED_Y_OFFSET },
+ { prefs::kWorkspaceCyclerSelectedScale,
+ WorkspaceCyclerConfiguration::SELECTED_SCALE },
+ { prefs::kWorkspaceCyclerMinScale,
+ WorkspaceCyclerConfiguration::MIN_SCALE },
+ { prefs::kWorkspaceCyclerMaxScale,
+ WorkspaceCyclerConfiguration::MAX_SCALE },
+ { prefs::kWorkspaceCyclerMinBrightness,
+ WorkspaceCyclerConfiguration::MIN_BRIGHTNESS },
+ { prefs::kWorkspaceCyclerBackgroundOpacity,
+ WorkspaceCyclerConfiguration::BACKGROUND_OPACITY },
+ { prefs::kWorkspaceCyclerDistanceToInitiateCycling,
+ WorkspaceCyclerConfiguration::DISTANCE_TO_INITIATE_CYCLING },
+ { prefs::kWorkspaceCyclerScrollDistanceToCycleToNextWorkspace,
+ WorkspaceCyclerConfiguration::
+ SCROLL_DISTANCE_TO_CYCLE_TO_NEXT_WORKSPACE },
+ { prefs::kWorkspaceCyclerCyclerStepAnimationDurationRatio,
+ WorkspaceCyclerConfiguration::CYCLER_STEP_ANIMATION_DURATION_RATIO },
+ { prefs::kWorkspaceCyclerStartCyclerAnimationDuration,
+ WorkspaceCyclerConfiguration::START_CYCLER_ANIMATION_DURATION },
+ { prefs::kWorkspaceCyclerStopCyclerAnimationDuration,
+ WorkspaceCyclerConfiguration::STOP_CYCLER_ANIMATION_DURATION },
+ };
+ cycler_prefs.assign(kCyclerPrefs, kCyclerPrefs + arraysize(kCyclerPrefs));
}
+ return cycler_prefs;
+}
+#endif // USE_ASH
+
+// This class manages gesture configuration preferences.
+class GesturePrefsObserver : public ProfileKeyedService {
+ public:
+ explicit GesturePrefsObserver(PrefService* prefs);
+ virtual ~GesturePrefsObserver();
// ProfileKeyedService implementation.
virtual void Shutdown() OVERRIDE;
@@ -71,6 +127,7 @@ class GesturePrefsObserver : public ProfileKeyedService {
// Notification helper to push overscroll preferences into
// content.
void UpdateOverscrollPrefs();
+ void UpdateWorkspaceCyclerPrefs();
PrefChangeRegistrar registrar_;
PrefService* prefs_;
@@ -109,14 +166,6 @@ const char* kPrefsToObserve[] = {
prefs::kSemiLongPressTimeInSeconds,
};
-const char* kOverscrollPrefs[] = {
- prefs::kOverscrollHorizontalThresholdComplete,
- prefs::kOverscrollVerticalThresholdComplete,
- prefs::kOverscrollMinimumThresholdStart,
- prefs::kOverscrollHorizontalResistThreshold,
- prefs::kOverscrollVerticalResistThreshold,
-};
-
const char* kFlingTouchpadPrefs[] = {
prefs::kFlingCurveTouchpadAlpha,
prefs::kFlingCurveTouchpadBeta,
@@ -141,13 +190,22 @@ GesturePrefsObserver::GesturePrefsObserver(PrefService* prefs)
for (size_t i = 0; i < arraysize(kPrefsToObserve); ++i)
registrar_.Add(kPrefsToObserve[i], callback);
- for (size_t i = 0; i < arraysize(kOverscrollPrefs); ++i)
- registrar_.Add(kOverscrollPrefs[i], callback);
+
+ const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs();
+ for (size_t i = 0; i < overscroll_prefs.size(); ++i)
+ registrar_.Add(overscroll_prefs[i].pref_name, callback);
for (size_t i = 0; i < arraysize(kFlingTouchpadPrefs); ++i)
registrar_.Add(kFlingTouchpadPrefs[i], notify_callback);
for (size_t i = 0; i < arraysize(kFlingTouchscreenPrefs); ++i)
registrar_.Add(kFlingTouchscreenPrefs[i], notify_callback);
+
+#if defined(USE_ASH)
+ const std::vector<WorkspaceCyclerPref>& cycler_prefs =
+ GetWorkspaceCyclerPrefs();
+ for (size_t i = 0; i < cycler_prefs.size(); ++i)
+ registrar_.Add(cycler_prefs[i].pref_name, callback);
+#endif // USE_ASH
}
GesturePrefsObserver::~GesturePrefsObserver() {}
@@ -230,17 +288,35 @@ void GesturePrefsObserver::Update() {
prefs::kRailStartProportion));
UpdateOverscrollPrefs();
+ UpdateWorkspaceCyclerPrefs();
}
void GesturePrefsObserver::UpdateOverscrollPrefs() {
- const OverscrollPref* overscroll_prefs =
- GesturePrefsObserver::GetOverscrollPrefs();
- for (int i = 0; overscroll_prefs[i].pref_name; ++i) {
+ const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs();
+ for (size_t i = 0; i < overscroll_prefs.size(); ++i) {
content::SetOverscrollConfig(overscroll_prefs[i].config,
static_cast<float>(prefs_->GetDouble(overscroll_prefs[i].pref_name)));
}
}
+void GesturePrefsObserver::UpdateWorkspaceCyclerPrefs() {
+#if defined(USE_ASH)
+ const std::vector<WorkspaceCyclerPref>& cycler_prefs =
+ GetWorkspaceCyclerPrefs();
+ for (size_t i = 0; i < cycler_prefs.size(); ++i) {
+ WorkspaceCyclerConfiguration::Property property =
+ cycler_prefs[i].property;
+ if (WorkspaceCyclerConfiguration::IsListProperty(property)) {
+ WorkspaceCyclerConfiguration::SetListValue(property,
+ *prefs_->GetList(cycler_prefs[i].pref_name));
+ } else {
+ WorkspaceCyclerConfiguration::SetDouble(property,
+ prefs_->GetDouble(cycler_prefs[i].pref_name));
+ }
+ }
+#endif // USE_ASH
+}
+
void GesturePrefsObserver::Notify() {
// Must do a notify to distribute the changes to all renderers.
content::NotificationService* service =
@@ -271,10 +347,9 @@ ProfileKeyedService* GesturePrefsObserverFactoryAura::BuildServiceInstanceFor(
void GesturePrefsObserverFactoryAura::RegisterOverscrollPrefs(
PrefRegistrySyncable* registry) {
- const OverscrollPref* overscroll_prefs =
- GesturePrefsObserver::GetOverscrollPrefs();
+ const std::vector<OverscrollPref>& overscroll_prefs = GetOverscrollPrefs();
- for (int i = 0; overscroll_prefs[i].pref_name; ++i) {
+ for (size_t i = 0; i < overscroll_prefs.size(); ++i) {
registry->RegisterDoublePref(
overscroll_prefs[i].pref_name,
content::GetOverscrollConfig(overscroll_prefs[i].config),
@@ -297,6 +372,29 @@ void GesturePrefsObserverFactoryAura::RegisterFlingCurveParameters(
PrefRegistrySyncable::UNSYNCABLE_PREF);
}
+void GesturePrefsObserverFactoryAura::RegisterWorkspaceCyclerPrefs(
+ PrefRegistrySyncable* registry) {
+#if defined(USE_ASH)
+ const std::vector<WorkspaceCyclerPref>& cycler_prefs =
+ GetWorkspaceCyclerPrefs();
+ for (size_t i = 0; i < cycler_prefs.size(); ++i) {
+ WorkspaceCyclerConfiguration::Property property =
+ cycler_prefs[i].property;
+ if (WorkspaceCyclerConfiguration::IsListProperty(property)) {
+ registry->RegisterListPref(
+ cycler_prefs[i].pref_name,
+ WorkspaceCyclerConfiguration::GetListValue(property).DeepCopy(),
+ PrefRegistrySyncable::UNSYNCABLE_PREF);
+ } else {
+ registry->RegisterDoublePref(
+ cycler_prefs[i].pref_name,
+ WorkspaceCyclerConfiguration::GetDouble(property),
+ PrefRegistrySyncable::UNSYNCABLE_PREF);
+ }
+ }
+#endif // USE_ASH
+}
+
void GesturePrefsObserverFactoryAura::DeprecatedRegisterUserPrefs(
PrefService* prefs,
PrefRegistrySyncable* registry) {
@@ -415,6 +513,7 @@ void GesturePrefsObserverFactoryAura::DeprecatedRegisterUserPrefs(
RegisterOverscrollPrefs(registry);
RegisterFlingCurveParameters(registry);
+ RegisterWorkspaceCyclerPrefs(registry);
}
bool GesturePrefsObserverFactoryAura::ServiceIsCreatedWithProfile() const {
« no previous file with comments | « chrome/browser/ui/gesture_prefs_observer_factory_aura.h ('k') | chrome/common/pref_names.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698