| // 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 "content/public/browser/overscroll_configuration.h" |
| |
| #include "base/command_line.h" |
| #include "base/logging.h" |
| #include "base/strings/string_number_conversions.h" |
| #include "content/public/common/content_features.h" |
| #include "content/public/common/content_switches.h" |
| |
| namespace { |
| |
| bool g_is_ptr_mode_initialized = false; |
| content::OverscrollConfig::PullToRefreshMode g_ptr_mode = |
| content::OverscrollConfig::PullToRefreshMode::kDisabled; |
| |
| bool g_is_touchpad_overscroll_history_navigation_enabled_initialized = false; |
| bool g_touchpad_overscroll_history_navigation_enabled = false; |
| |
| // On Windows, we only process 0.3 second inertial events then cancel the |
| // overscroll if it is not completed yet. |
| int g_max_inertial_events_before_overscroll_cancellation_in_ms = 300; |
| |
| } // namespace |
| |
| namespace content { |
| |
| // static |
| const float OverscrollConfig::kCompleteTouchpadThresholdPercent = 0.3f; |
| const float OverscrollConfig::kCompleteTouchscreenThresholdPercent = 0.25f; |
| |
| // static |
| const float OverscrollConfig::kStartTouchpadThresholdDips = 60.f; |
| const float OverscrollConfig::kStartTouchscreenThresholdDips = 50.f; |
| |
| // static |
| OverscrollConfig::PullToRefreshMode OverscrollConfig::GetPullToRefreshMode() { |
| if (g_is_ptr_mode_initialized) |
| return g_ptr_mode; |
| |
| const std::string mode = |
| base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
| switches::kPullToRefresh); |
| if (mode == "1") |
| g_ptr_mode = PullToRefreshMode::kEnabled; |
| else if (mode == "2") |
| g_ptr_mode = PullToRefreshMode::kEnabledTouchschreen; |
| g_is_ptr_mode_initialized = true; |
| return g_ptr_mode; |
| } |
| |
| // static |
| void OverscrollConfig::SetPullToRefreshMode(PullToRefreshMode mode) { |
| g_ptr_mode = mode; |
| g_is_ptr_mode_initialized = true; |
| } |
| |
| // static |
| void OverscrollConfig::ResetPullToRefreshMode() { |
| g_is_ptr_mode_initialized = false; |
| g_ptr_mode = OverscrollConfig::PullToRefreshMode::kDisabled; |
| } |
| |
| // static |
| bool OverscrollConfig::TouchpadOverscrollHistoryNavigationEnabled() { |
| if (!g_is_touchpad_overscroll_history_navigation_enabled_initialized) { |
| g_is_touchpad_overscroll_history_navigation_enabled_initialized = true; |
| g_touchpad_overscroll_history_navigation_enabled = |
| base::FeatureList::IsEnabled( |
| features::kTouchpadOverscrollHistoryNavigation); |
| } |
| |
| return g_touchpad_overscroll_history_navigation_enabled; |
| } |
| |
| // static |
| void OverscrollConfig::ResetTouchpadOverscrollHistoryNavigationEnabled() { |
| g_is_touchpad_overscroll_history_navigation_enabled_initialized = false; |
| } |
| |
| // static |
| base::TimeDelta |
| OverscrollConfig::MaxInertialEventsBeforeOverscrollCancellation() { |
| return base::TimeDelta::FromMilliseconds( |
| g_max_inertial_events_before_overscroll_cancellation_in_ms); |
| } |
| |
| } // namespace content |