Implement webpage pull-to-refresh functionality when using touch on Chrome desktop platforms.
I believe there are some open UX questions about this, so please implement behind a flag.
To be more specific, UI will likely change so don't spend effort on pixel pushing yet. Ok to copy Android UI for now.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/51c80cac41cbf6b434f5c26ec09166ec2c3afd40 commit 51c80cac41cbf6b434f5c26ec09166ec2c3afd40 Author: Mohsen Izadi <mohsen@chromium.org> Date: Sat Jul 29 00:47:35 2017 Remove unnecessary vertical overscroll plumbing and test Removed some plumbing supposed to be used for vertical scroll end effect which is not implemented. Also, removed the already disabled/flaky test for vertical overscroll. BUG= 702404 TEST=none Change-Id: I3f62a0f4ae7f0033e6615ea33d78cc067c085711 Reviewed-on: https://chromium-review.googlesource.com/587592 Reviewed-by: Dmitry Gozman <dgozman@chromium.org> Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org> Commit-Queue: Mohsen Izadi <mohsen@chromium.org> Cr-Commit-Position: refs/heads/master@{#490561} [modify] https://crrev.com/51c80cac41cbf6b434f5c26ec09166ec2c3afd40/content/browser/web_contents/web_contents_view_aura.cc [modify] https://crrev.com/51c80cac41cbf6b434f5c26ec09166ec2c3afd40/content/browser/web_contents/web_contents_view_aura.h [modify] https://crrev.com/51c80cac41cbf6b434f5c26ec09166ec2c3afd40/content/browser/web_contents/web_contents_view_aura_browsertest.cc [modify] https://crrev.com/51c80cac41cbf6b434f5c26ec09166ec2c3afd40/content/public/browser/web_contents_delegate.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/93faac10394251cf1138650bb8ebb2f50da5e86c commit 93faac10394251cf1138650bb8ebb2f50da5e86c Author: Mohsen Izadi <mohsen@chromium.org> Date: Sat Jul 29 04:45:15 2017 Add --pull-to-refresh flag for pull-to-refresh Pull-to-refresh should land behind a flag. There is an unused --scroll-end-effect flag that was supposed to be used for a related scroll-end effect feature which was never implemented. This change renames the flag to use with pull-to-refresh. BUG= 702404 TEST=none Change-Id: If0d9b4e84ef6515137e1280154bf5dfc31eb4dd6 Reviewed-on: https://chromium-review.googlesource.com/582169 Commit-Queue: Mohsen Izadi <mohsen@chromium.org> Reviewed-by: Nick Carter <nick@chromium.org> Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org> Reviewed-by: Jesse Doherty <jwd@chromium.org> Cr-Commit-Position: refs/heads/master@{#490626} [modify] https://crrev.com/93faac10394251cf1138650bb8ebb2f50da5e86c/chrome/browser/about_flags.cc [modify] https://crrev.com/93faac10394251cf1138650bb8ebb2f50da5e86c/chrome/browser/flag_descriptions.cc [modify] https://crrev.com/93faac10394251cf1138650bb8ebb2f50da5e86c/chrome/browser/flag_descriptions.h [modify] https://crrev.com/93faac10394251cf1138650bb8ebb2f50da5e86c/content/browser/renderer_host/overscroll_controller.cc [modify] https://crrev.com/93faac10394251cf1138650bb8ebb2f50da5e86c/content/public/common/content_switches.cc [modify] https://crrev.com/93faac10394251cf1138650bb8ebb2f50da5e86c/content/public/common/content_switches.h [modify] https://crrev.com/93faac10394251cf1138650bb8ebb2f50da5e86c/tools/metrics/histograms/enums.xml
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/fb306d2641b7dc302adf0203d37cc81be2ed838a commit fb306d2641b7dc302adf0203d37cc81be2ed838a Author: Mohsen Izadi <mohsen@chromium.org> Date: Wed Aug 02 04:05:41 2017 Move gesture nav arrow to its own layer Currently, gesture nav affordance uses a single layer that paints everything in each frame. This CL moves the arrow to its own layer which is drawn once and then appropriate transform and opacity are applied on it. This is needed for implementing pull-to-refresh which needs the arrow be rotated. Also, generally we want to decompose the affordance into a few layers to avoid painting it on each frame. BUG= 702404 ,743239 TEST=none Change-Id: I9140471d6b6edbbb84f97fd5148994fea58e5a90 Reviewed-on: https://chromium-review.googlesource.com/594840 Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org> Commit-Queue: Mohsen Izadi <mohsen@chromium.org> Cr-Commit-Position: refs/heads/master@{#491261} [modify] https://crrev.com/fb306d2641b7dc302adf0203d37cc81be2ed838a/content/browser/web_contents/aura/gesture_nav_simple.cc [modify] https://crrev.com/fb306d2641b7dc302adf0203d37cc81be2ed838a/content/browser/web_contents/aura/gesture_nav_simple.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/31c2a76a6c78d7b26a0d080f4efe22ebb1084683 commit 31c2a76a6c78d7b26a0d080f4efe22ebb1084683 Author: Mohsen Izadi <mohsen@chromium.org> Date: Wed Aug 02 07:42:09 2017 Move reload icon to vector_icons component To implement pull-to-refresh on Aura, reload icon should be accessible from content/browser/ directory. This CL moves it out of chrome/app/ into components/vector_icons/. BUG= 702404 TEST=none Change-Id: I4265eca2244dba561b696881939eea7a75475ab7 Reviewed-on: https://chromium-review.googlesource.com/594676 Commit-Queue: Mohsen Izadi <mohsen@chromium.org> Reviewed-by: Evan Stade <estade@chromium.org> Reviewed-by: Scott Violet <sky@chromium.org> Cr-Commit-Position: refs/heads/master@{#491299} [modify] https://crrev.com/31c2a76a6c78d7b26a0d080f4efe22ebb1084683/chrome/app/vector_icons/BUILD.gn [modify] https://crrev.com/31c2a76a6c78d7b26a0d080f4efe22ebb1084683/chrome/browser/ui/cocoa/browser_window_touch_bar.mm [modify] https://crrev.com/31c2a76a6c78d7b26a0d080f4efe22ebb1084683/chrome/browser/ui/cocoa/toolbar/reload_button_cocoa.mm [modify] https://crrev.com/31c2a76a6c78d7b26a0d080f4efe22ebb1084683/chrome/browser/ui/cocoa/toolbar/toolbar_button_cocoa.mm [modify] https://crrev.com/31c2a76a6c78d7b26a0d080f4efe22ebb1084683/chrome/browser/ui/views/toolbar/reload_button.cc [modify] https://crrev.com/31c2a76a6c78d7b26a0d080f4efe22ebb1084683/components/vector_icons/BUILD.gn [rename] https://crrev.com/31c2a76a6c78d7b26a0d080f4efe22ebb1084683/components/vector_icons/reload.1x.icon [rename] https://crrev.com/31c2a76a6c78d7b26a0d080f4efe22ebb1084683/components/vector_icons/reload.icon
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/dd0d2d32e5ffe9102ae14b89fcdccd21a61eab15 commit dd0d2d32e5ffe9102ae14b89fcdccd21a61eab15 Author: Mohsen Izadi <mohsen@chromium.org> Date: Fri Aug 04 21:01:01 2017 Implement pull-to-refresh for Aura Pull-to-refresh effect is implemented for Aura platforms. This is behind the --pull-to-refresh flag. The overscroll controller is changed to make vertical overscroll behavior similar to horizontal overscroll; i.e., for a vertical overscroll to start, the page should be scrolled to the top before gesture sequence is started. BUG= 702404 TEST=manual with --pull-to-refresh flag Change-Id: I74e9b08182683586a66a931615ab72b525de3af4 Reviewed-on: https://chromium-review.googlesource.com/586952 Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org> Reviewed-by: Jesse Doherty <jwd@chromium.org> Commit-Queue: Mohsen Izadi <mohsen@chromium.org> Cr-Commit-Position: refs/heads/master@{#492119} [modify] https://crrev.com/dd0d2d32e5ffe9102ae14b89fcdccd21a61eab15/content/browser/renderer_host/overscroll_configuration.cc [modify] https://crrev.com/dd0d2d32e5ffe9102ae14b89fcdccd21a61eab15/content/browser/renderer_host/overscroll_controller.cc [modify] https://crrev.com/dd0d2d32e5ffe9102ae14b89fcdccd21a61eab15/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc [modify] https://crrev.com/dd0d2d32e5ffe9102ae14b89fcdccd21a61eab15/content/browser/web_contents/aura/gesture_nav_simple.cc [modify] https://crrev.com/dd0d2d32e5ffe9102ae14b89fcdccd21a61eab15/content/browser/web_contents/aura/gesture_nav_simple.h [modify] https://crrev.com/dd0d2d32e5ffe9102ae14b89fcdccd21a61eab15/content/browser/web_contents/aura/types.cc [modify] https://crrev.com/dd0d2d32e5ffe9102ae14b89fcdccd21a61eab15/content/browser/web_contents/aura/types.h [modify] https://crrev.com/dd0d2d32e5ffe9102ae14b89fcdccd21a61eab15/tools/metrics/actions/actions.xml [modify] https://crrev.com/dd0d2d32e5ffe9102ae14b89fcdccd21a61eab15/tools/metrics/histograms/enums.xml
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f commit 8c59ba5c4bcb6dd38610f26b960538ed8e23b35f Author: Mohsen Izadi <mohsen@chromium.org> Date: Thu Apr 12 18:52:01 2018 Allow disabling Aura's pull-to-refresh for touchpad This CL changes --pull-to-refresh flag to have 4 possible values: - "Default": Currently the same as Disabled; - "Disabled": No PTR; - "Enabled": PTR enabled for both touchpad and touchscreen; - "Enabled for touchscreen only": PTR enabled only for touchscreen. BUG= 702404 TEST=OverscrollControllerTest.PullToRefresh* in content_unittest Change-Id: I18e1e39f967e1041f56f25b49e42b9a6dfc934fa Reviewed-on: https://chromium-review.googlesource.com/998549 Reviewed-by: Jochen Eisinger <jochen@chromium.org> Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org> Commit-Queue: Mohsen Izadi <mohsen@chromium.org> Cr-Commit-Position: refs/heads/master@{#550288} [modify] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/chrome/browser/about_flags.cc [modify] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/chrome/browser/flag_descriptions.cc [modify] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/chrome/browser/flag_descriptions.h [modify] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/chrome/browser/ui/browser.cc [modify] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/content/browser/frame_host/navigation_entry_screenshot_manager.cc [modify] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/content/browser/renderer_host/input/touch_selection_controller_client_aura_browsertest.cc [modify] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/content/browser/renderer_host/overscroll_configuration.cc [modify] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/content/browser/renderer_host/overscroll_controller.cc [modify] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/content/browser/renderer_host/overscroll_controller_unittest.cc [modify] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/content/browser/renderer_host/render_widget_host_view_aura.cc [modify] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/content/browser/web_contents/web_contents_view_aura.cc [modify] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/content/browser/web_contents/web_contents_view_aura_browsertest.cc [modify] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/content/public/browser/overscroll_configuration.h [modify] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/content/public/common/content_switches.cc [delete] https://crrev.com/2b26997337e61e94757e0ad17901e94fccb0d1e3/content/public/test/scoped_overscroll_mode.cc [delete] https://crrev.com/2b26997337e61e94757e0ad17901e94fccb0d1e3/content/public/test/scoped_overscroll_mode.h [add] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/content/public/test/scoped_overscroll_modes.cc [add] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/content/public/test/scoped_overscroll_modes.h [modify] https://crrev.com/8c59ba5c4bcb6dd38610f26b960538ed8e23b35f/content/test/BUILD.gn
Seems like this should respect overscroll-behavior similar to the Android implementation: https://developers.google.com/web/updates/2017/11/overscroll-behavior Example: "pulling down" when scrolled to the top of a Google Doc shouldn't refresh the page.
As of r546736 it should respect overscroll-behavior. Please file a bug if it is not.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/5a65835140f37027e435fd2b9be61f40eea0f8bf commit 5a65835140f37027e435fd2b9be61f40eea0f8bf Author: Mohsen Izadi <mohsen@chromium.org> Date: Mon Apr 23 18:31:19 2018 Add cool off period to Aura's pull-to-refresh A cool off period of 600ms is added between the time page is scrolled to the top and the time a pull-to-refresh can be initiated. If the user tries overscroll before the cool off period is passed, the timer will reset and the user has to wait 600ms more. BUG= 702404 TEST=OverscrollControllerTest.* in content_unittests Change-Id: I151ec8ef2faab297e9a80251942040acd40af399 Reviewed-on: https://chromium-review.googlesource.com/1022512 Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org> Commit-Queue: Mohsen Izadi <mohsen@chromium.org> Cr-Commit-Position: refs/heads/master@{#552760} [modify] https://crrev.com/5a65835140f37027e435fd2b9be61f40eea0f8bf/content/browser/renderer_host/overscroll_controller.cc [modify] https://crrev.com/5a65835140f37027e435fd2b9be61f40eea0f8bf/content/browser/renderer_host/overscroll_controller.h [modify] https://crrev.com/5a65835140f37027e435fd2b9be61f40eea0f8bf/content/browser/renderer_host/overscroll_controller_unittest.cc
This is done behind a flag.
Comment 1 by tdander...@chromium.org
, Apr 11 2017Labels: M-60
Owner: moh...@chromium.org
Status: Assigned (was: Available)