New issue
Advanced search Search tips

Issue 656801 link

Starred by 5 users

Issue metadata

Status: WontFix
Merged: issue 651214
Owner:
Closed: May 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 2
Type: Feature

Blocking:
issue 651214



Sign in to add a comment

Use CSS:overscroll-action to prevent pull-to-refresh

Project Member Reported by sunyunjia@chromium.org, Oct 17 2016

Issue description

Feature description:

Pull to refresh is a feature of Mobile Chrome (and Opera) where once the user overscrolls the page, the browser shows a refresh animation and refreshes the page. The UX pattern was popularized by native mobile applications as a way to fetch new content which in the context of the browser translates to refreshing the page. However refreshing the page does not make sense and is not relevant for some mobile web applications and can be disruptive and costly.

We propose a non-inherited CSS property overscroll-action, that may be specified on the root element and applies to the viewport. It controls the permitted overscroll actions by the browser.

Design doc: https://docs.google.com/a/google.com/document/d/1cqyeFamVmSu5EN5sBpQFB3Madm-41BtJEMDEbW1xdh4/edit?usp=sharing


 
Cc: majidvp@chromium.org
Mergedinto: 651214
Status: Duplicate (was: Assigned)
Status: Assigned (was: Duplicate)
We usually keep the bug for tracking the actual implementation work separate from OWP bug which is mean for tracking the launch process.
Blocking: 651214
Labels: Hotlist-Input-Dev
Blockedon: 681143
Components: Blink>Scroll

Comment 8 by aelias@chromium.org, Mar 15 2017

Blocking: 701715
Blocking: -701715
Blockedon: -681143
Status: WontFix (was: Assigned)
This is abandoned in favor of implementing `scroll-boundary-behavior` which is  issue  672921 .
Project Member

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

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

commit bbea8a99d2643b97d9dfe9d368cba6d129850a28
Author: sunyunjia <sunyunjia@chromium.org>
Date: Thu Aug 31 11:18:54 2017

Use scroll-boundary-behavior to control overscroll-refresh/glow on android.

Overscroll navigation is a feature of Chrome. Users can pull verticallly to
refresh the page on android, or swipe horizontally to browse history on desktop
platform. Overscroll-glow is a visual effect indicating user that his scroll
has passed the extent of the scroller. However, for some mobile web
applications, navigation or glow does not make sense. This patch allows users
to use a css attribute: scroll-boundary-behavior on the viewport defining
element in order to control overscroll-navigation and overscroll-glow.

On main thread, we set this property in OverscrollController, and on the
compositor thread, we plumb this property to LayerTreeImpl. When overscroll
happens, scroll-boundary-behavior is bundled in did_overscroll_params and is
passed to OverscrollControllerAndroid::Overscrolled(). Thus, we make the
decision of whether to pull-to-refresh and whether to glow on Overscrolled()
as opposed to immediately after ScrollUpdateAck.

Spec: https://wicg.github.io/scroll-boundary-behavior/
Design Doc: https://docs.google.com/a/google.com/document/d/1cqyeFamVmSu5EN5sBpQFB3Madm-41BtJEMDEbW1xdh4/edit?usp=sharing

BUG= 656801 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

Review-Url: https://codereview.chromium.org/2884423003
Cr-Commit-Position: refs/heads/master@{#498816}

[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/cc/BUILD.gn
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/cc/input/input_handler.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/cc/input/scroll_boundary_behavior.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/cc/input/scroll_state.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/cc/input/scroll_state_data.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/cc/input/scroll_state_data.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/cc/trees/layer_tree_host.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/cc/trees/layer_tree_host.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/cc/trees/layer_tree_impl.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/cc/trees/layer_tree_impl.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/browser/android/overscroll_controller_android.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/browser/android/overscroll_controller_android.h
[add] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/browser/android/overscroll_controller_android_unittest.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/common/input_messages.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/renderer/gpu/render_widget_compositor.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/renderer/gpu/render_widget_compositor.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/renderer/input/input_handler_wrapper.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/renderer/input/input_handler_wrapper.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/renderer/input/render_widget_input_handler.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/renderer/input/render_widget_input_handler.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/renderer/input/widget_input_handler_manager.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/renderer/input/widget_input_handler_manager.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/renderer/render_view_impl.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/renderer/render_view_impl.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/renderer/render_widget.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/renderer/render_widget.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/renderer/render_widget_unittest.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/content/test/BUILD.gn
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/third_party/WebKit/Source/core/dom/Document.cpp
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/third_party/WebKit/Source/core/exported/WebFrameTest.cpp
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/third_party/WebKit/Source/core/exported/WebViewImpl.cpp
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/third_party/WebKit/Source/core/exported/WebViewImpl.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/third_party/WebKit/Source/core/loader/EmptyClients.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/third_party/WebKit/Source/core/page/ChromeClient.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/third_party/WebKit/Source/core/page/ChromeClientImpl.cpp
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/third_party/WebKit/Source/core/page/ChromeClientImpl.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/third_party/WebKit/Source/core/page/scrolling/OverscrollController.cpp
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/third_party/WebKit/Source/core/page/scrolling/OverscrollController.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/third_party/WebKit/Source/core/page/scrolling/RootScrollerTest.cpp
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/third_party/WebKit/public/BUILD.gn
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/third_party/WebKit/public/platform/WebLayerTreeView.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/third_party/WebKit/public/web/WebViewClient.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/third_party/WebKit/public/web/WebWidgetClient.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/ui/android/overscroll_glow.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/ui/android/overscroll_glow.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/ui/android/overscroll_refresh.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/ui/android/overscroll_refresh.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/ui/android/overscroll_refresh_unittest.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/ui/events/blink/DEPS
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/ui/events/blink/did_overscroll_params.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/ui/events/blink/input_handler_proxy.cc
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/ui/events/blink/input_handler_proxy_client.h
[modify] https://crrev.com/bbea8a99d2643b97d9dfe9d368cba6d129850a28/ui/events/blink/input_handler_proxy_unittest.cc

Sign in to add a comment