summaryrefslogtreecommitdiff
path: root/chromium/content/browser/android/overscroll_controller_android.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/android/overscroll_controller_android.cc')
-rw-r--r--chromium/content/browser/android/overscroll_controller_android.cc51
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_);
}