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

Unified Diff: android_webview/browser/browser_view_renderer.cc

Issue 1063853005: Unify Android Webview and Chrome's fling (Closed) Base URL: https://chromium.googlesource.com/a/chromium/src.git@master
Patch Set: rebase Created 5 years, 6 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: android_webview/browser/browser_view_renderer.cc
diff --git a/android_webview/browser/browser_view_renderer.cc b/android_webview/browser/browser_view_renderer.cc
index b3fbe01ebf45ff7bc95b4634d2f654afe35fa5c3..2d3748bbc5b594758bdf7962663e4caf8b2c10c1 100644
--- a/android_webview/browser/browser_view_renderer.cc
+++ b/android_webview/browser/browser_view_renderer.cc
@@ -414,6 +414,17 @@ void BrowserViewRenderer::OnDetachedFromWindow() {
UpdateCompositorIsActive();
}
+void BrowserViewRenderer::OnComputeScroll(base::TimeTicks animation_time) {
+ if (pending_fling_animation_.is_null())
+ return;
+ TRACE_EVENT0("android_webview",
+ "BrowserViewRenderer::FlushPendingScrollAnimation");
boliu 2015/06/08 16:54:52 Fix trace event name
hush (inactive) 2015/06/09 19:11:33 Done.
+ DCHECK(!pending_fling_animation_.is_null());
+ AnimationCallback animation = pending_fling_animation_;
+ pending_fling_animation_.Reset();
+ animation.Run(animation_time);
+}
+
void BrowserViewRenderer::ReleaseHardware() {
DCHECK(hardware_enabled_);
ReturnUnusedResource(shared_renderer_state_.PassUncommittedFrameOnUI());
@@ -551,8 +562,8 @@ gfx::Vector2dF BrowserViewRenderer::GetTotalRootLayerScrollOffset() {
return scroll_offset_dip_;
}
-bool BrowserViewRenderer::IsExternalFlingActive() const {
- return client_->IsFlingActive();
+bool BrowserViewRenderer::IsExternalScrollActive() const {
+ return client_->IsSmoothScrollingActive();
}
void BrowserViewRenderer::UpdateRootLayerState(
@@ -606,6 +617,12 @@ BrowserViewRenderer::RootLayerStateAsValue(
return state;
}
+void BrowserViewRenderer::SetNeedsAnimateScroll(
+ const AnimationCallback& scroll_animation) {
+ pending_fling_animation_ = scroll_animation;
+ PostInvalidateWithFallback();
boliu 2015/06/08 16:54:52 Actually I'm eating my words. You said it's ok if
hush (inactive) 2015/06/09 19:11:33 Okay. I will just postInvalidate and add a comment
+}
+
void BrowserViewRenderer::DidOverscroll(gfx::Vector2dF accumulated_overscroll,
gfx::Vector2dF latest_overscroll_delta,
gfx::Vector2dF current_fling_velocity) {
@@ -618,7 +635,10 @@ void BrowserViewRenderer::DidOverscroll(gfx::Vector2dF accumulated_overscroll,
scaled_overscroll_delta + overscroll_rounding_error_);
overscroll_rounding_error_ =
scaled_overscroll_delta - rounded_overscroll_delta;
- client_->DidOverscroll(rounded_overscroll_delta);
+ gfx::Vector2dF fling_velocity_pixels =
+ gfx::ScaleVector2d(current_fling_velocity, physical_pixel_scale);
+
+ client_->DidOverscroll(rounded_overscroll_delta, fling_velocity_pixels);
}
void BrowserViewRenderer::PostInvalidate() {
@@ -641,7 +661,8 @@ void BrowserViewRenderer::PostInvalidateWithFallback() {
bool throttle_fallback_tick =
(is_paused_ && !clear_view_) || (attached_to_window_ && !window_visible_);
- if (throttle_fallback_tick || fallback_tick_pending_)
+ if (throttle_fallback_tick || fallback_tick_pending_ ||
+ !pending_fling_animation_.is_null())
boliu 2015/06/08 16:54:52 don't forget to remove this (Seems to be backward
hush (inactive) 2015/06/09 19:11:33 okay,.. removed this. And yes. The logic here is b
return;
DCHECK(post_fallback_tick_.IsCancelled());

Powered by Google App Engine
This is Rietveld 408576698