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 a8c96811359c985a8ef25d2807db94efeb735026..a3fd8c4d31d034d07226bcfffc1a8daf29d785bf 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" |
@@ -17,6 +19,11 @@ |
#include "content/public/browser/overscroll_configuration.h" |
#include "ui/base/gestures/gesture_configuration.h" |
+#if defined(USE_ASH) |
+#include "ash/wm/workspace/workspace_cycler_configuration.h" |
+#endif // USE_ASH |
+ |
+using ash::WorkspaceCyclerConfiguration; |
using ui::GestureConfiguration; |
namespace { |
@@ -26,15 +33,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, ()); |
sadrul
2013/02/11 16:41:19
Whats the reason for this change?
pkotwicz
2013/02/12 00:00:26
The reason for this change is consistency with how
sadrul
2013/02/12 15:59:58
Why would you need ::NONE?
|
+ if (overscroll_prefs.empty()) { |
using namespace content; |
- static OverscrollPref overscroll_prefs[] = { |
+ const OverscrollPref kOverscrollPrefs[] = { |
{ prefs::kOverscrollHorizontalThresholdComplete, |
OVERSCROLL_CONFIG_HORIZ_THRESHOLD_COMPLETE }, |
{ prefs::kOverscrollVerticalThresholdComplete, |
@@ -45,12 +48,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; |
@@ -59,6 +112,7 @@ class GesturePrefsObserver : public ProfileKeyedService { |
void Update(); |
void UpdateOverscrollPrefs(); |
+ void UpdateWorkspaceCyclerPrefs(); |
PrefChangeRegistrar registrar_; |
PrefService* prefs_; |
@@ -97,14 +151,6 @@ const char* kPrefsToObserve[] = { |
prefs::kSemiLongPressTimeInSeconds, |
}; |
-const char* kOverscrollPrefs[] = { |
- prefs::kOverscrollHorizontalThresholdComplete, |
- prefs::kOverscrollVerticalThresholdComplete, |
- prefs::kOverscrollMinimumThresholdStart, |
- prefs::kOverscrollHorizontalResistThreshold, |
- prefs::kOverscrollVerticalResistThreshold, |
-}; |
- |
GesturePrefsObserver::GesturePrefsObserver(PrefService* prefs) |
: prefs_(prefs) { |
registrar_.Init(prefs); |
@@ -113,8 +159,17 @@ GesturePrefsObserver::GesturePrefsObserver(PrefService* prefs) |
base::Unretained(this)); |
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); |
+ |
+#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() {} |
@@ -197,17 +252,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 |
+} |
+ |
} // namespace |
// static |
@@ -229,10 +302,9 @@ ProfileKeyedService* GesturePrefsObserverFactoryAura::BuildServiceInstanceFor( |
void GesturePrefsObserverFactoryAura::RegisterOverscrollPrefs( |
PrefServiceSyncable* prefs) { |
- 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) { |
prefs->RegisterDoublePref( |
overscroll_prefs[i].pref_name, |
content::GetOverscrollConfig(overscroll_prefs[i].config), |
@@ -240,6 +312,29 @@ void GesturePrefsObserverFactoryAura::RegisterOverscrollPrefs( |
} |
} |
+void GesturePrefsObserverFactoryAura::RegisterWorkspaceCyclerPrefs( |
+ PrefServiceSyncable* prefs) { |
+#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)) { |
+ prefs->RegisterListPref( |
+ cycler_prefs[i].pref_name, |
+ WorkspaceCyclerConfiguration::GetListValue(property)->DeepCopy(), |
+ PrefServiceSyncable::UNSYNCABLE_PREF); |
+ } else { |
+ prefs->RegisterDoublePref( |
+ cycler_prefs[i].pref_name, |
+ WorkspaceCyclerConfiguration::GetDouble(property), |
+ PrefServiceSyncable::UNSYNCABLE_PREF); |
+ } |
+ } |
+#endif // USE_ASH |
+} |
+ |
void GesturePrefsObserverFactoryAura::RegisterUserPrefs( |
PrefServiceSyncable* prefs) { |
prefs->RegisterDoublePref( |
@@ -356,6 +451,7 @@ void GesturePrefsObserverFactoryAura::RegisterUserPrefs( |
prefs->ClearPref(kTouchScreenFlingAccelerationAdjustment); |
RegisterOverscrollPrefs(prefs); |
+ RegisterWorkspaceCyclerPrefs(prefs); |
} |
bool GesturePrefsObserverFactoryAura::ServiceIsCreatedWithProfile() const { |