New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 772103 link

Starred by 2 users

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

Touchpad sensitivity for overscroll

Project Member Reported by moh...@chromium.org, Oct 5 2017

Issue description

from hwi@:

Touchpad hand movement tends to be faster than the finger movement on touchscreen due to less physical friction and shorter moving distance compared to touchscreen.

As a result, gesture nav feels to be triggered unexpectedly, especially when scrolling a smaller scrollable UI elements e.g. playlist on a youtube page, label list on gmail, bottom horizontal tabs on Sheets.
 

Comment 1 by moh...@chromium.org, Oct 10 2017

Cc: hwi@chromium.org rpop@chromium.org moh...@chromium.org mfomitchev@chromium.org
Owner: sgabr...@chromium.org
Status: Assigned (was: Untriaged)
sgabriel@: Can you please advise on what you think would be good parameter values for touchpad overscroll here? Currently we use following parameter values:
 - Horizontal start threshold: 50 pixels;
 - Vertical start threshold: 50 pixels;
 - Horizontal completion threshold: 25% of screen width;
 - Vertical completion threshold: 20% of screen height.

These values are currently shared with touchscreen. However, we can have different values for each device type (touchpad vs touchscreen) if we want.

I think we can do any of the following or both:
 - Increase thresholds a bit (like by 20%) for touchpad;
 - Use the maximum of screen width and height for both horizontal and vertical overscroll thresholds.

WDYT?

Comment 2 by moh...@chromium.org, Oct 10 2017

BTW, as we use either fixed values or screen width and height for thresholds, size of UI elements should not have any effect on sensitivity of overscroll. So, I think the last part in the bug description which says scrolling smaller UI element generates more unexpected triggers should not be the case.
Solution in #1 sounds like a good start. Let's try that.

Comment 4 by moh...@chromium.org, Oct 20 2017

sgabriel@: do you mean doing both suggestions in #1? (increase threshold by 20% for touchpad AND use maximum of width and height)
Both. I'd like to see the combination, if it's bad we'll revert to a simple increase.

Comment 6 by moh...@chromium.org, Oct 24 2017

sgabriel@: One last question for you: should I use maximum of width and height just for touchpad or also for touchscreen?
What do you think?

Comment 8 by moh...@chromium.org, Oct 24 2017

I think touchscreen would also benefit from this as we had complaints about easy to trigger pull-to-refresh on touchscreen (though this is not the only factor. Threshold ratio for vertical overscroll was smaller than horizontal one. I'm going to unify these threshold values, too).

It would also make the code simpler :-)
Alright sounds good let's do that. Let me know when it's testable :)
Status: Started (was: Assigned)
Cc: -moh...@chromium.org sgabr...@chromium.org
Owner: moh...@chromium.org
Project Member

Comment 12 by bugdroid1@chromium.org, Oct 31 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4ef8db7d96d253976913fa3e3af4d17aecd6224c

commit 4ef8db7d96d253976913fa3e3af4d17aecd6224c
Author: Mohsen Izadi <mohsen@chromium.org>
Date: Tue Oct 31 00:08:42 2017

Adjust overscroll thresholds for touchpad

To improve touchpad overscroll sensitivity, start and completion
thresholds for touchpad are increased by 20%. This needed splitting some
threshold into two separate ones for touchpad and touchscreen.

Also, both vertical and horizontal overscroll now use maximum of screen
width and screen height to calculate completion threshold. Previously,
vertical overscroll was using screen height and horizontal overscroll
was using screen width. This change makes overscroll in both dimensions
more consistent.

Also, some parameters had different values for vertical vs horizontal
overscroll. They have been merged into a single parameter.

BUG=772103
TEST=RenderWidgetHostViewAuraOver*Test.* in content_unittests

Change-Id: Id4efa17b247fffdbd13c0087be5afbec85f81131
Reviewed-on: https://chromium-review.googlesource.com/740782
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Commit-Queue: Mohsen Izadi <mohsen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#512681}
[modify] https://crrev.com/4ef8db7d96d253976913fa3e3af4d17aecd6224c/content/browser/renderer_host/input/touch_selection_controller_client_aura_browsertest.cc
[modify] https://crrev.com/4ef8db7d96d253976913fa3e3af4d17aecd6224c/content/browser/renderer_host/overscroll_configuration.cc
[modify] https://crrev.com/4ef8db7d96d253976913fa3e3af4d17aecd6224c/content/browser/renderer_host/overscroll_controller.cc
[modify] https://crrev.com/4ef8db7d96d253976913fa3e3af4d17aecd6224c/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
[modify] https://crrev.com/4ef8db7d96d253976913fa3e3af4d17aecd6224c/content/browser/site_per_process_browsertest.cc
[modify] https://crrev.com/4ef8db7d96d253976913fa3e3af4d17aecd6224c/content/browser/web_contents/aura/gesture_nav_simple.cc
[modify] https://crrev.com/4ef8db7d96d253976913fa3e3af4d17aecd6224c/content/browser/web_contents/aura/overscroll_navigation_overlay_unittest.cc
[modify] https://crrev.com/4ef8db7d96d253976913fa3e3af4d17aecd6224c/content/browser/web_contents/aura/overscroll_window_delegate.cc
[modify] https://crrev.com/4ef8db7d96d253976913fa3e3af4d17aecd6224c/content/browser/web_contents/aura/overscroll_window_delegate.h
[modify] https://crrev.com/4ef8db7d96d253976913fa3e3af4d17aecd6224c/content/browser/web_contents/aura/overscroll_window_delegate_unittest.cc
[modify] https://crrev.com/4ef8db7d96d253976913fa3e3af4d17aecd6224c/content/browser/web_contents/web_contents_view_aura_browsertest.cc
[modify] https://crrev.com/4ef8db7d96d253976913fa3e3af4d17aecd6224c/content/public/browser/overscroll_configuration.h

sgabriel@, hwi@: The CL in c#12 has landed on canary now. It is increasing thresholds by 20% and uses maximum of width and height to calculate activation threshold (which should increase PTR threshold even more). Please give the pull-to-refresh and overscroll-nav a try and let me know whether you think it needs more adjustment or not.
Tested on Canary 64.0.3261.0
I am really liking the current implementation. @Hwi?

Comment 15 by hwi@chromium.org, Nov 8 2017

Thanks much, mohsen@! And apologies for my late reply. 

- The touchscreen feels great with the screenwidth/height as overscroll threshold. 

- With touchpad, I'm wondering if there're other parameter options for the start threshold in chrome://flags.  
In the case that I use scrollable containers and try to get to either end of the list (e.g. Google Sheets tabs, Sidebar menu on Youtube, Playlist on Youtube, etc), I end up triggering the both PTR or GN UIs, and reloading or loading prev/next page. I think it happens easily because 1) I tend to move fingers fast to get the end of the list quickly, 2) My eyes are on the list and often too late to notice the indication favs. Do you feel differently, mohsen@ and sgabriel@? 

Thanks again. 


Interesting, I'm not sure how to fix this but I understand it and it triggered for me as well. Fast speed scrolling on trackpad (or even flinging) definitely triggers the pull to refresh un-expectedly. Mohsen@ do you think there's ay way to identify a "fling" or a fast scroll and interpret it differently?

Comment 17 by hwi@chromium.org, Nov 9 2017

I like ideas on c#16.

Would the following be worth trying? 
1. Detection of the fast scrolling and fling during the gesture within the start threshold and suppress the UI if the movement is within "too-fast" range.  
2. Increased start threshold ratio more than 20% (i.e. more than 100dp) for touchpad. 


Cc: -mfomitchev@chromium.org
Cc: moh...@chromium.org
Owner: ----
Status: Available (was: Started)

Sign in to add a comment