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

Unified Diff: content/browser/android/overscroll_controller_android.cc

Issue 2884423003: Use scroll-boundary-behavior to control overscroll-refresh/glow on android. (Closed)
Patch Set: Added missing files Created 3 years, 7 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
Index: content/browser/android/overscroll_controller_android.cc
diff --git a/content/browser/android/overscroll_controller_android.cc b/content/browser/android/overscroll_controller_android.cc
index 3be50dac488ac9fdad7f86d83d778b8ef26cd3fd..f35ee7652315a118db67911bbc8e7b22b7c0c091 100644
--- a/content/browser/android/overscroll_controller_android.cc
+++ b/content/browser/android/overscroll_controller_android.cc
@@ -128,6 +128,7 @@ bool OverscrollControllerAndroid::WillHandleGestureEvent(
switch (event.GetType()) {
case blink::WebInputEvent::kGestureScrollBegin:
refresh_effect_->OnScrollBegin();
+ consumed_ = false;
break;
case blink::WebInputEvent::kGestureScrollUpdate: {
@@ -135,6 +136,7 @@ bool OverscrollControllerAndroid::WillHandleGestureEvent(
event.data.scroll_update.delta_y);
scroll_delta.Scale(dpi_scale_);
handled = refresh_effect_->WillHandleScrollUpdate(scroll_delta);
+ LOG(ERROR) << handled;
majidvp 2017/05/18 15:26:10 remove.
sunyunjia 2017/05/19 20:14:23 Done.
} break;
case blink::WebInputEvent::kGestureScrollEnd:
@@ -189,18 +191,27 @@ void OverscrollControllerAndroid::OnGestureEventAck(
refresh_effect_) {
// The effect should only be allowed if both the causal touch events go
// unconsumed and the generated scroll events go unconsumed.
- bool consumed =
- ack_result == INPUT_EVENT_ACK_STATE_CONSUMED ||
- event.data.scroll_update.previous_update_in_sequence_prevented;
- refresh_effect_->OnScrollUpdateAck(consumed);
+ consumed_ = ack_result == INPUT_EVENT_ACK_STATE_CONSUMED ||
+ event.data.scroll_update.previous_update_in_sequence_prevented;
}
}
void OverscrollControllerAndroid::OnOverscrolled(
- const DidOverscrollParams& params) {
+ const DidOverscrollParams& overscroll_params) {
if (!enabled_)
return;
+ DidOverscrollParams params = overscroll_params;
+
+ if (refresh_effect_) {
+ if (params.scroll_boundary_behavior.y ==
+ cc::ScrollBoundaryBehavior::ScrollBoundaryBehaviorType::
+ kScrollBoundaryBehaviorTypeAuto)
+ refresh_effect_->OnScrollUpdateAck(consumed_);
+ else
+ refresh_effect_->OnScrollUpdateAck(true);
majidvp 2017/05/18 15:26:10 This method is no longer invoked on ScrollUpdateAc
sunyunjia 2017/05/19 20:14:23 Done.
+ }
+
if (refresh_effect_ && (refresh_effect_->IsActive() ||
refresh_effect_->IsAwaitingScrollUpdateAck())) {
majidvp 2017/05/18 15:26:10 nit: the first condition is the same of the above
sunyunjia 2017/05/19 20:14:23 Done.
// An active (or potentially active) refresh effect should always pre-empt
@@ -208,6 +219,16 @@ void OverscrollControllerAndroid::OnOverscrolled(
return;
}
+ if (params.scroll_boundary_behavior.y ==
+ cc::ScrollBoundaryBehavior::ScrollBoundaryBehaviorType::
+ kScrollBoundaryBehaviorTypeNone)
+ params.ClearY();
+
+ if (params.scroll_boundary_behavior.x ==
+ cc::ScrollBoundaryBehavior::ScrollBoundaryBehaviorType::
+ kScrollBoundaryBehaviorTypeNone)
+ params.ClearX();
majidvp 2017/05/18 15:26:10 I believe this is for glow. So please update the C
sunyunjia 2017/05/19 20:14:23 Done.
+
if (glow_effect_ &&
glow_effect_->OnOverscrolled(
base::TimeTicks::Now(),

Powered by Google App Engine
This is Rietveld 408576698