diff options
Diffstat (limited to 'chromium/content/browser/android/overscroll_controller_android.cc')
-rw-r--r-- | chromium/content/browser/android/overscroll_controller_android.cc | 51 |
1 files changed, 13 insertions, 38 deletions
diff --git a/chromium/content/browser/android/overscroll_controller_android.cc b/chromium/content/browser/android/overscroll_controller_android.cc index af013af38de..db6066cb3a2 100644 --- a/chromium/content/browser/android/overscroll_controller_android.cc +++ b/chromium/content/browser/android/overscroll_controller_android.cc @@ -4,17 +4,17 @@ #include "content/browser/android/overscroll_controller_android.h" -#include "base/android/build_info.h" #include "base/command_line.h" +#include "base/metrics/field_trial_params.h" #include "cc/layers/layer.h" #include "components/viz/common/quads/compositor_frame_metadata.h" #include "content/public/browser/navigation_controller.h" +#include "content/public/common/content_features.h" #include "content/public/common/content_switches.h" #include "content/public/common/use_zoom_for_dsf_policy.h" #include "third_party/blink/public/common/input/web_gesture_event.h" #include "third_party/blink/public/common/input/web_input_event.h" #include "ui/android/edge_effect.h" -#include "ui/android/edge_effect_l.h" #include "ui/android/resources/resource_manager.h" #include "ui/android/window_android.h" #include "ui/android/window_android_compositor.h" @@ -23,8 +23,6 @@ using ui::DidOverscrollParams; using ui::EdgeEffect; -using ui::EdgeEffectBase; -using ui::EdgeEffectL; using ui::OverscrollGlow; using ui::OverscrollGlowClient; using ui::OverscrollRefresh; @@ -36,40 +34,13 @@ namespace { // be suppressed. This value was experimentally determined to provide a // reasonable balance between avoiding accidental refresh activation and // minimizing the wait required to refresh after the glow has been triggered. -const float kMinGlowAlphaToDisableRefreshOnL = 0.085f; - -// Used for conditional creation of EdgeEffect types for the overscroll glow. -bool IsAndroidLOrNewer() { - static bool android_l_or_newer = - base::android::BuildInfo::GetInstance()->sdk_int() >= - base::android::SDK_VERSION_LOLLIPOP; - return android_l_or_newer; -} - -// Suppressing refresh detection when the glow is still animating prevents -// visual confusion and accidental activation after repeated scrolls. -float MinGlowAlphaToDisableRefresh() { - // Only the L effect is guaranteed to be both sufficiently brief and prominent - // to provide a meaningful "wait" signal. The refresh effect on previous - // Android releases can be quite faint, depending on the OEM-supplied - // overscroll resources, and lasts nearly twice as long. - if (IsAndroidLOrNewer()) - return kMinGlowAlphaToDisableRefreshOnL; - - // Any value greater than 1 effectively prevents the glow effect from ever - // suppressing the refresh effect. - return 1.01f; -} +const float kMinGlowAlphaToDisableRefresh = 0.085f; -std::unique_ptr<EdgeEffectBase> CreateGlowEdgeEffect( +std::unique_ptr<EdgeEffect> CreateGlowEdgeEffect( ui::ResourceManager* resource_manager, float dpi_scale) { DCHECK(resource_manager); - if (IsAndroidLOrNewer()) - return std::unique_ptr<EdgeEffectBase>(new EdgeEffectL(resource_manager)); - - return std::unique_ptr<EdgeEffectBase>( - new EdgeEffect(resource_manager, dpi_scale)); + return std::make_unique<EdgeEffect>(resource_manager); } std::unique_ptr<OverscrollGlow> CreateGlowEffect(OverscrollGlowClient* client) { @@ -89,8 +60,13 @@ std::unique_ptr<OverscrollRefresh> CreateRefreshEffect( return nullptr; } + float edge_width = base::GetFieldTrialParamByFeatureAsInt( + features::kOverscrollHistoryNavigation, + "gesture_navigation_triggering_area_width", + OverscrollRefresh::kDefaultNavigationEdgeWidth) * + dpi_scale; return std::make_unique<OverscrollRefresh>(overscroll_refresh_handler, - dpi_scale); + edge_width); } } // namespace @@ -145,7 +121,7 @@ bool OverscrollControllerAndroid::WillHandleGestureEvent( // Suppress refresh detection if the glow effect is still prominent. if (glow_effect_ && glow_effect_->IsActive()) { - if (glow_effect_->GetVisibleAlpha() > MinGlowAlphaToDisableRefresh()) + if (glow_effect_->GetVisibleAlpha() > kMinGlowAlphaToDisableRefresh) return false; } @@ -331,8 +307,7 @@ void OverscrollControllerAndroid::Disable() { } } -std::unique_ptr<EdgeEffectBase> -OverscrollControllerAndroid::CreateEdgeEffect() { +std::unique_ptr<EdgeEffect> OverscrollControllerAndroid::CreateEdgeEffect() { return CreateGlowEdgeEffect(&compositor_->GetResourceManager(), dpi_scale_); } |