New issue
Advanced search Search tips

Issue 765326 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Feb 2018
Cc:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Feature

Blocking:
issue 410974



Sign in to add a comment

Scroll Customization should have declarative controls to prevent unnecessary scrolling performance issues

Project Member Reported by majidvp@chromium.org, Sep 14 2017

Issue description

To ensure scroll customization does not tank native scrolling performance, we want to 
know ahead of time which component, user-agent or user scroll customization script,
is going to handle a scroll intent for any given element and gesture.


The proposed design is to use a css property `scroll-customization` which behaves 
similar to `touch-action` but for scroll customization. The property may be used 
to declare which scroll intents may be consumed by scroll customizer. This 
technique is well known, simple to use, and easy to understand.


More detailed discussion here:
https://docs.google.com/a/google.com/document/d/19__0qdiAPT8GOF9TY1x9c1U4Vc4geyqpS08tJ9aqKPc/edit?usp=sharing

 
Blocking: 410974
Project Member

Comment 2 by bugdroid1@chromium.org, Jan 22 2018

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

commit 04c9db95de540d4ead1d8297e7b4023a310b7a34
Author: Ehsan Karamad <ekaramad@chromium.org>
Date: Mon Jan 22 18:38:34 2018

Introduce ScrollCustomization Property

This CL introduces the CSS property, 'scroll-customization'. Through
modifying scroll-customization, unnecessary calls to apply/distributeScroll
handlers can be avoided.

This CL implements the logic inside blink's main thread. If an scrollable
node has customized scrolling handlers, it can further specify which class
of gestures it is interested in for custom scrolling.

The list of valid values for customization includes 'auto', 'pan-x',
'pan-left', 'pan-right', 'pan-y', 'pan-up', and 'pan-down', and 'none'.
The default value is 'none' (any node interested in customized scroll
handlers should specify that).

For RootScroller we ignore customized scroll as it will regress certain
features which depend on global RootScroller.

This CL will eventually be followed up by changes to the compositor layer
so that for nodes with custom scroll, the scroll events corresponding
not allowed through scroll customization do not get sent to the main thread.

Link to document:
https://docs.google.com/document/d/1fB524MG5SJpajou7QdulqklciCLWTcoGa9olkPzVQVo/edit#heading=h.2b398wn8pdq

Bug:  765326 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel
Change-Id: Ia54971b5535cb0b841682d242ef90761975f8c81
Reviewed-on: https://chromium-review.googlesource.com/590497
Commit-Queue: Ehsan Karamad <ekaramad@chromium.org>
Reviewed-by: Pavel Feldman <pfeldman@chromium.org>
Reviewed-by: Ian Vollick <vollick@chromium.org>
Reviewed-by: nainar <nainar@chromium.org>
Reviewed-by: David Bokan <bokan@chromium.org>
Reviewed-by: Ehsan Karamad <ekaramad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#530921}
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/LayoutTests/LeakExpectations
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/LayoutTests/SlowTests
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/LayoutTests/fast/scroll-behavior/scroll-customization/scrollstate-distribute-to-scroll-chain-descendant.html
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/LayoutTests/fast/scroll-behavior/scroll-customization/touch-scroll-customization.html
[add] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/LayoutTests/virtual/scroll_customization/fast/scroll-behavior/scroll-customization/scroll-customization-property.html
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/BUILD.gn
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/css/BUILD.gn
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/css/CSSComputedStyleDeclaration.cpp
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/css/CSSPrimitiveValueMappings.h
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/css/CSSProperties.json5
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/css/CSSValueKeywords.json5
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/css/parser/CSSPropertyParserTest.cpp
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/css/properties/ComputedStyleUtils.cpp
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/css/properties/ComputedStyleUtils.h
[add] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/css/properties/longhands/ScrollCustomizationCustom.cpp
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/dom/Element.cpp
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/dom/Element.h
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/frame/UseCounter.cpp
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/input/ScrollManager.cpp
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/input/ScrollManager.h
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/page/scrolling/RootScrollerUtil.cpp
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/page/scrolling/RootScrollerUtil.h
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/page/scrolling/ScrollCustomizationCallbacks.cpp
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/page/scrolling/ScrollCustomizationCallbacks.h
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/core/page/scrolling/ScrollState.h
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/devtools/front_end/sdk/CSSMetadata.js
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/platform/BUILD.gn
[add] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/platform/scroll/ScrollCustomization.cpp
[add] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/third_party/WebKit/Source/platform/scroll/ScrollCustomization.h
[modify] https://crrev.com/04c9db95de540d4ead1d8297e7b4023a310b7a34/tools/metrics/histograms/enums.xml

Project Member

Comment 3 by bugdroid1@chromium.org, Jan 23 2018

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

commit b73779e3acc3f6d94976e9fef9954e03987e623b
Author: Ehsan Karamad <ekaramad@chromium.org>
Date: Tue Jan 23 04:03:16 2018

Cleaning up some unsued methods

This is a followup to r530921. Some methods and a commented line
leaked throught the CL.

TBR=bokan@chromium.org

Bug:  765326 
Change-Id: I304a152d21cd88ca18156a337bc276f5485a5d40
Reviewed-on: https://chromium-review.googlesource.com/879537
Reviewed-by: Ehsan Karamad <ekaramad@chromium.org>
Commit-Queue: Ehsan Karamad <ekaramad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#531151}
[modify] https://crrev.com/b73779e3acc3f6d94976e9fef9954e03987e623b/third_party/WebKit/LayoutTests/virtual/scroll_customization/fast/scroll-behavior/scroll-customization/scroll-customization-property.html
[modify] https://crrev.com/b73779e3acc3f6d94976e9fef9954e03987e623b/third_party/WebKit/Source/core/page/scrolling/ScrollState.h

Status: Fixed (was: Assigned)
Marking this issue as fixed but I will open another to track the potential implementation on the compositor thread.

Sign in to add a comment