New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 9 users
Status: Fixed
Owner:
on maternity leave
Closed: Mar 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Launch-OWP
Launch-Accessibility: NA
Launch-Legal: NotReviewed
Launch-M-Approved: ----
Launch-M-Target: ----
Launch-Privacy: NotReviewed
Launch-Security: NotReviewed
Launch-Status: ----
Launch-Test: NotReviewed
Launch-UI: NA
Product-Review: ----

Blocked on:
issue 601037
issue 646069

Blocking:
issue 631899
issue 598248
issue 700465



Sign in to add a comment
Make touch events on a flinging layer non-blocking (including ignoring touch-action)
Project Member Reported by tdres...@chromium.org, Mar 16 2016 Back to list
Blocking touchstart handlers during fling can cause major hiccups during fling boosting / flywheel fling.

We should stop blocking on these events.
 
Blocking: 598248
Internal thread discussing this here: https://groups.google.com/a/google.com/d/msg/chrome-input/_tyas1nNmfk/lxevE5O3CAAJ

There's some risk of breakage here, so I think we intend to follow the intervention process (guide, measure, etc.).  But I'm optimistic there are some good wins available.

Cc: skyos...@chromium.org
Blockedon: 601037
Labels: Hotlist-Interventions
Comment 6 by rbyers@chromium.org, Jul 27 2016
Blocking: 631899
Comment 7 by rbyers@chromium.org, Jul 27 2016
Note that this should include skipping the touch-action computation (Edge doesn't do it either during a fling - see issue 631899).  Perhaps we can safely ignore the explicit passive:false regions too.

In addition to better repeated fling performance, this should also generally be  a better UX.  When you're repeatedly flinging a scroller, you don't expect it to suddently stop moving if you happen to do one of the flings overtop of an element that cancels the touch or disables the scroll via touch-action.
Comment 8 by rbyers@chromium.org, Jul 27 2016
Cc: dtapu...@chromium.org
Summary: Make touch events on a flinging layer non-blocking (including ignoring touch-action) (was: Make touchstart events during fling non-blocking)
Owner: lanwei@chromium.org
Status: Started
Project Member Comment 10 by bugdroid1@chromium.org, Aug 15 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/59bb2579a58499fc1f8f9e2ccc0ef5c930d34159

commit 59bb2579a58499fc1f8f9e2ccc0ef5c930d34159
Author: lanwei <lanwei@chromium.org>
Date: Mon Aug 15 23:29:52 2016

Add flag to force touch events to be passive during fling as a runtime feature.

We are forcing touchstart and first touchmove to be passive during fling as our part of
intervention. Now we add a flag to turn on this feature at runtime.

BUG= 595327 

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

[modify] https://crrev.com/59bb2579a58499fc1f8f9e2ccc0ef5c930d34159/chrome/app/generated_resources.grd
[modify] https://crrev.com/59bb2579a58499fc1f8f9e2ccc0ef5c930d34159/chrome/browser/about_flags.cc
[modify] https://crrev.com/59bb2579a58499fc1f8f9e2ccc0ef5c930d34159/content/child/runtime_features.cc
[modify] https://crrev.com/59bb2579a58499fc1f8f9e2ccc0ef5c930d34159/content/public/common/content_features.cc
[modify] https://crrev.com/59bb2579a58499fc1f8f9e2ccc0ef5c930d34159/content/public/common/content_features.h
[modify] https://crrev.com/59bb2579a58499fc1f8f9e2ccc0ef5c930d34159/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in
[modify] https://crrev.com/59bb2579a58499fc1f8f9e2ccc0ef5c930d34159/third_party/WebKit/Source/web/WebRuntimeFeatures.cpp
[modify] https://crrev.com/59bb2579a58499fc1f8f9e2ccc0ef5c930d34159/third_party/WebKit/public/web/WebRuntimeFeatures.h
[modify] https://crrev.com/59bb2579a58499fc1f8f9e2ccc0ef5c930d34159/tools/metrics/actions/actions.xml
[modify] https://crrev.com/59bb2579a58499fc1f8f9e2ccc0ef5c930d34159/tools/metrics/histograms/histograms.xml

Cc: tdres...@chromium.org
Labels: -Type-Bug PM-KenjiBaheux OS-All Type-Launch
Labels: Launch-Accessibility-NA Launch-Legal-NotReviewed Launch-Privacy-NotReviewed Launch-Security-NotReviewed Launch-Test-NotReviewed Launch-UI-NA
Project Member Comment 13 by bugdroid1@chromium.org, Aug 19 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0

commit 4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0
Author: lanwei <lanwei@chromium.org>
Date: Fri Aug 19 18:23:11 2016

Make first TouchStart and first TouchMove events on a flinging layer non-blocking.

Blocking touchstart and first touchMove handlers during fling can cause major hiccups during
fling boosting / flywheel fling.

We are doing a passive event listener during fling intervention experiment to see if we can
improve the fling performance by forcing touchstart and first touchmove to be passive when
there is an active fling animation.

BUG= 595327 

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

[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/content/browser/renderer_host/input/touch_event_queue.cc
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/content/browser/renderer_host/input/touch_event_queue_unittest.cc
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/content/common/input/event_with_latency_info.cc
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/content/common/input/event_with_latency_info_unittest.cc
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/content/renderer/input/main_thread_event_queue.cc
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/content/renderer/input/main_thread_event_queue.h
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/content/renderer/input/main_thread_event_queue_unittest.cc
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/content/renderer/input/render_widget_input_handler.cc
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/content/renderer/render_widget_unittest.cc
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/third_party/WebKit/Source/core/events/Event.cpp
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/third_party/WebKit/Source/core/events/Event.h
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/third_party/WebKit/Source/core/input/TouchEventManager.cpp
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/third_party/WebKit/Source/core/input/TouchEventManager.h
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/third_party/WebKit/Source/platform/PlatformEvent.h
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/third_party/WebKit/Source/platform/PlatformTouchEvent.h
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/third_party/WebKit/Source/web/WebInputEventConversion.cpp
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/third_party/WebKit/public/platform/WebInputEvent.h
[modify] https://crrev.com/4cc123442a0ef00e377d7e9b8703ba3bf4c6b5a0/tools/metrics/histograms/histograms.xml

Labels: Merge-Request-54
Comment 15 by dimu@chromium.org, Aug 20 2016
Labels: -Merge-Request-54 Merge-Review-54 Hotlist-Merge-Review
[Automated comment] Commit may have occurred before M54 branch point (8/25/2016), needs manual review.
Labels: -Merge-Review-54
M54 is not branched yet so removing "Merge-Review-54" label.
Blockedon: 646069
Project Member Comment 19 by bugdroid1@chromium.org, Nov 8 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99

commit 8f1957b19f5c0e8e09dc98480c613e2e5c59cd99
Author: lanwei <lanwei@chromium.org>
Date: Tue Nov 08 17:09:25 2016

In the previous patch, https://codereview.chromium.org/1923973002/, we added a is_fling flag
to indicate if the active fling is happening on either main or impl thread.

Now we only consider about scrolling happening in impl thread and we will use ack states to
indicate if we want to make the touch events uncancelable.

BUG= 595327 

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

[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/blimp/client/core/input/blimp_input_handler_wrapper.cc
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/blimp/client/core/input/blimp_input_handler_wrapper.h
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/content/browser/renderer_host/input/input_router_impl.cc
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/content/common/input/input_event_ack_state.h
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/content/renderer/input/input_event_filter.cc
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/content/renderer/input/input_event_filter.h
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/content/renderer/input/input_handler_manager.cc
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/content/renderer/input/input_handler_manager.h
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/content/renderer/input/input_handler_manager_client.h
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/content/renderer/input/input_handler_wrapper.cc
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/content/renderer/input/input_handler_wrapper.h
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/content/renderer/input/main_thread_event_queue.cc
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/content/renderer/input/main_thread_event_queue.h
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/content/renderer/input/main_thread_event_queue_unittest.cc
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/content/renderer/mus/compositor_mus_connection_unittest.cc
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/content/renderer/render_widget_unittest.cc
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/third_party/WebKit/Source/platform/PlatformTouchEvent.h
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/third_party/WebKit/Source/web/WebInputEventConversion.cpp
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/third_party/WebKit/public/platform/WebInputEvent.h
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/ui/events/blink/input_handler_proxy.cc
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/ui/events/blink/input_handler_proxy.h
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/ui/events/blink/input_handler_proxy_client.h
[modify] https://crrev.com/8f1957b19f5c0e8e09dc98480c613e2e5c59cd99/ui/events/blink/input_handler_proxy_unittest.cc

Project Member Comment 20 by bugdroid1@chromium.org, Nov 29 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/53c12368f78425a27d592f47f814029cf2edaae7

commit 53c12368f78425a27d592f47f814029cf2edaae7
Author: lanwei <lanwei@chromium.org>
Date: Tue Nov 29 06:51:17 2016

Make touch events uncancelable during fling when they are on the current active scroll layer

In the previous patch https://codereview.chromium.org/2233543002/, we missed to check if the
touch events which we will make uncancelable when there is an active fling are on the
same layer as the current active scroll layer or its descendants.

Now, we add the scroll layer check here to minimize the breaking cases and also match with other
browsers' behavior, such as Safaris and Firefox.

This code has two parts:
1. Delete the is_fling flag we used on https://codereview.chromium.org/1923973002/
to indicate if the actice fling is happening.
2. Add check to the touch start if it hits on the same layer as the current active scroll layer.

BUG= 595327 

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

[modify] https://crrev.com/53c12368f78425a27d592f47f814029cf2edaae7/cc/input/input_handler.h
[modify] https://crrev.com/53c12368f78425a27d592f47f814029cf2edaae7/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/53c12368f78425a27d592f47f814029cf2edaae7/cc/trees/layer_tree_host_impl.h
[modify] https://crrev.com/53c12368f78425a27d592f47f814029cf2edaae7/cc/trees/layer_tree_host_impl_unittest.cc
[modify] https://crrev.com/53c12368f78425a27d592f47f814029cf2edaae7/content/renderer/input/input_handler_manager.cc
[modify] https://crrev.com/53c12368f78425a27d592f47f814029cf2edaae7/ui/events/blink/input_handler_proxy.cc
[modify] https://crrev.com/53c12368f78425a27d592f47f814029cf2edaae7/ui/events/blink/input_handler_proxy_unittest.cc

Status: Fixed
Status: Started
Let's leave this Started until we've shipped it.
Project Member Comment 23 by bugdroid1@chromium.org, Dec 9 2016
Project Member Comment 24 by bugdroid1@chromium.org, Dec 9 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/176226667ce5adc58e636ebf31049acff46810b2

commit 176226667ce5adc58e636ebf31049acff46810b2
Author: lanwei <lanwei@chromium.org>
Date: Fri Dec 09 15:26:28 2016

Enable PassiveDocumentEventListeners feature

We decide to ship the intervention of 'Uncancelable Touch Events During A Fling',
so enable 'PassiveDocumentEventListeners' feature.

Below is the link to the discussion on blink-dev
https://groups.google.com/a/chromium.org/d/topic/blink-dev/wJGmsdYxwrg/discussion

BUG= 595327 

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

[modify] https://crrev.com/176226667ce5adc58e636ebf31049acff46810b2/content/public/common/content_features.cc

Cc: rbyers@chromium.org kenjibaheux@chromium.org lanwei@chromium.org
Issue 646069 has been merged into this issue.
Labels: -Type-Launch OWP-Type-ChangeBehavior M-57 Type-Launch-OWP
Status: Fixed
Moving to Launch-OWP to make this web platform change public.
This shipped in M57, right?  Marking 'Fixed' to properly track it's status.

Also updated chromestatus entry to point here and properly mark this as shipping in M57: https://www.chromestatus.com/feature/5707400183021568

Spec issue: https://github.com/w3c/touch-events/issues/76
Blocking: 700465
Sign in to add a comment