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

Issue 779372 link

Starred by 59 users

Issue metadata

Status: Fixed
Owner:
Closed: Mar 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug

Blocking:
issue 575670
issue 647140
issue 778454



Sign in to add a comment

Support Windows Precision Touchpad

Project Member Reported by chaopeng@chromium.org, Oct 29 2017

Issue description

This is the main issue for tracking Windows Precision Touchpad.
 
Blocking: 647140
 crbug.com/762386  Not related.
crbug.com/765311 Should be not related since that is not an issue only for touchpad.

 crbug.com/713907  Maybe related.
 crbug.com/517187  this issue continue the patch introduce in 517187
Yeah I also think https://bugs.chromium.org/p/chromium/issues/detail?id=713907 is related because when I tested this issue in VS Code the behaviour in Chrome seemed exactly the same.
Thank you. I will for sure try 713907 when I have progress for this issue.
Blocking: 778454
Do you have an ETA on this issue? I'm looking forward to this fix :)

Comment 7 by bokan@chromium.org, Nov 15 2017

There's no ETA as development can be hard to predict. But progress has been made and we're hoping it'll be launched in Q1 2018.
Any chance this fix will add Pinch To Zoom support for devices with Windows Precision Touchpad as well?

See: https://bugs.chromium.org/p/chromium/issues/detail?id=575670 and https://bugs.chromium.org/p/chromium/issues/detail?id=681390#c1

Comment 9 by bokan@chromium.org, Dec 14 2017

chaopeng@ will know for sure but I believe that is the intention, yes.
Blocking: 575670
Might be a bit off-topic, but has anyone checked how can Win32 applications make use of the precision touchpad with Windows APIs/COM? I was interested in implementing it in an application and have done a bit of searching, but I couldn't find any related MSDN docs on this topic. Makes me wonder if this is even doable at all.

Comment 12 by bokan@chromium.org, Jan 15 2018

chaopeng@ would have more details but I believe you need to use the DirectManipulation API to get the precise scroll deltas. Our approach is to create a "fake" window in the DirectManipulation compositor to capture the deltas, translate them to a Chrome event, and dispatch them to the Chrome input pipeline.
Project Member

Comment 13 by bugdroid1@chromium.org, Mar 2 2018

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

commit 04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9
Author: chaopeng <chaopeng@chromium.org>
Date: Fri Mar 02 21:43:06 2018

Initial code for Direct Manipulation

For support Windows Precision Touchpad, we need to use Direct Manipulation.

In this patch, we read the scale factor and translate offset from Direct
Manipulation and convert them to ui::MouseWheelEvent.

This patch not change touchpad scroll behaviour. But the scale will be too fast
since we receive too much scale event and convert them to ctrl+wheel. I will fix
the scale issue in following patch.

Bug:  779372 
Change-Id: I8fa9db0643390660e08afc1398828eb051177fe2
Reviewed-on: https://chromium-review.googlesource.com/653581
Commit-Queue: Jianpeng Chao <chaopeng@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: Dave Tapuska <dtapuska@chromium.org>
Cr-Commit-Position: refs/heads/master@{#540640}
[add] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/content/browser/renderer_host/direct_manipulation_browsertest.cc
[modify] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/content/browser/renderer_host/legacy_render_widget_host_win.cc
[modify] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/content/browser/renderer_host/legacy_render_widget_host_win.h
[modify] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/content/browser/renderer_host/render_widget_host_view_aura.cc
[modify] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/content/browser/renderer_host/render_widget_host_view_aura.h
[modify] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/content/test/BUILD.gn
[modify] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/ui/base/BUILD.gn
[modify] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/ui/base/ui_base_features.cc
[modify] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/ui/base/ui_base_features.h
[modify] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/ui/base/win/direct_manipulation.cc
[modify] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/ui/base/win/direct_manipulation.h
[add] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/ui/base/win/direct_manipulation_unittest.cc
[modify] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/ui/base/win/window_event_target.h
[modify] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/ui/events/blink/web_input_event.cc
[modify] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/ui/events/event_constants.h
[modify] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/ui/views/win/hwnd_message_handler.cc
[modify] https://crrev.com/04fd930126b0e3cfd6a200b9d9c1b6fa682f12a9/ui/views/win/hwnd_message_handler.h

Project Member

Comment 14 by bugdroid1@chromium.org, Mar 15 2018

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

commit 6f420a45b30601bd3d3864f0d748e42b4573b977
Author: chaopeng <chaopeng@chromium.org>
Date: Thu Mar 15 01:13:09 2018

Allow any direction scroll on Windows Touchpad

In this patch, we remove the rails configuration on Direct Manipulation.
The rails configuration would restrict scroll events on X or Y rails.
After this changes, user able to scroll to any direction by touchpad as
touch screen on Windows, Android and touchpad on Edge.

Bug:  779372 
Change-Id: Idf1da1eb85c2a73f432b78b0002fde28609a4cfe
Reviewed-on: https://chromium-review.googlesource.com/963043
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Jianpeng Chao <chaopeng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#543271}
[modify] https://crrev.com/6f420a45b30601bd3d3864f0d748e42b4573b977/ui/base/win/direct_manipulation.cc

Exciting! Any idea when we can see this in Canary?

Comment 16 by bokan@chromium.org, Mar 19 2018

We should be flipping the flag on in Canary in the next week or two.

chaopeng@ will know the details but I believe you could try it out in current canary by launching chrome from the command line and passing --enable-features=PrecisionTouchpad
Project Member

Comment 17 by bugdroid1@chromium.org, Mar 20 2018

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

commit 0384143a530475e19b9fbe3c12235786336fe707
Author: chaopeng <chaopeng@chromium.org>
Date: Tue Mar 20 16:28:50 2018

Enable Direct Manipulation API for Windows Precision Touchpad.

Bug:  779372 
Change-Id: Ibee8c53d6a7f5eb08669620f5fe26403fa4ba2b0
Reviewed-on: https://chromium-review.googlesource.com/963013
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Commit-Queue: Jianpeng Chao <chaopeng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544397}
[modify] https://crrev.com/0384143a530475e19b9fbe3c12235786336fe707/ui/base/ui_base_features.cc

Project Member

Comment 18 by bugdroid1@chromium.org, Mar 21 2018

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

commit eda59a110124419f9880b3da9101c22974d14ffc
Author: Jianpeng Chao <chaopeng@chromium.org>
Date: Wed Mar 21 21:42:41 2018

Revert "Allow any direction scroll on Windows Touchpad"

This reverts commit 6f420a45b30601bd3d3864f0d748e42b4573b977.

Reason for revert: We need rails setting to make swipe left/right for navigation change gesture. User can still scroll to any direction, but more events would restrict to XY rails.

Original change's description:
> Allow any direction scroll on Windows Touchpad
> 
> In this patch, we remove the rails configuration on Direct Manipulation.
> The rails configuration would restrict scroll events on X or Y rails.
> After this changes, user able to scroll to any direction by touchpad as
> touch screen on Windows, Android and touchpad on Edge.
> 
> Bug:  779372 
> Change-Id: Idf1da1eb85c2a73f432b78b0002fde28609a4cfe
> Reviewed-on: https://chromium-review.googlesource.com/963043
> Reviewed-by: Scott Violet <sky@chromium.org>
> Commit-Queue: Jianpeng Chao <chaopeng@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#543271}

TBR=sky@chromium.org,chaopeng@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug:  779372 
Change-Id: I296a0a1ef3c1a30aaa4d66d5bf24a29932dac543
Reviewed-on: https://chromium-review.googlesource.com/973469
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Jianpeng Chao <chaopeng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544859}
[modify] https://crrev.com/eda59a110124419f9880b3da9101c22974d14ffc/ui/base/win/direct_manipulation.cc

Project Member

Comment 19 by bugdroid1@chromium.org, Mar 21 2018

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

commit 1b85d085ece68469bb2cb84151a8a9f1ceaff5c5
Author: chaopeng <chaopeng@chromium.org>
Date: Wed Mar 21 23:17:05 2018

Fix the EF_PRECISION_SCROLLING_DELTA flag

The EF_PRECISION_SCROLLING_DELTA flag was fill in wrong flag in previous
CL. That will cause scroll animation.

Bug:  779372 
Change-Id: I82494721d53886b7c094d6bf006b26f0b2075bd9
Reviewed-on: https://chromium-review.googlesource.com/973742
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Commit-Queue: Jianpeng Chao <chaopeng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#544900}
[modify] https://crrev.com/1b85d085ece68469bb2cb84151a8a9f1ceaff5c5/content/browser/renderer_host/direct_manipulation_browsertest.cc
[modify] https://crrev.com/1b85d085ece68469bb2cb84151a8a9f1ceaff5c5/ui/views/win/hwnd_message_handler.cc

Status: Fixed (was: Started)
Project Member

Comment 21 by bugdroid1@chromium.org, Mar 22 2018

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

commit 8694ad2645fdc83cde4d813646ed8944322ae2eb
Author: Sadrul Habib Chowdhury <sadrul@chromium.org>
Date: Thu Mar 22 17:04:56 2018

events: Make it difficult to set the wrong flag.

Validate that the |changed_button_flags_| field is allowed only the
set of flags that makes sense.

BUG= 779372 , 824629

Change-Id: I5e4d8b8f07fbf6d881d8510f45414814d074278d
Reviewed-on: https://chromium-review.googlesource.com/974078
Commit-Queue: Sadrul Chowdhury <sadrul@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#545120}
[modify] https://crrev.com/8694ad2645fdc83cde4d813646ed8944322ae2eb/ash/drag_drop/drag_drop_tracker.cc
[modify] https://crrev.com/8694ad2645fdc83cde4d813646ed8944322ae2eb/ui/events/event.cc
[modify] https://crrev.com/8694ad2645fdc83cde4d813646ed8944322ae2eb/ui/views/controls/label_unittest.cc
[modify] https://crrev.com/8694ad2645fdc83cde4d813646ed8944322ae2eb/ui/views/controls/textfield/textfield_unittest.cc

The scrolling feels phenomenal! What a massive improvement. I can't wait until this is landed in stable, thank you so much!
Project Member

Comment 23 by bugdroid1@chromium.org, Mar 26 2018

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

commit 8a861942b8df83e80ec360e5d89be37048935e11
Author: chaopeng <chaopeng@chromium.org>
Date: Mon Mar 26 22:46:13 2018

Fix pan scroll too fast on high dpi

This issue is caused by Direct Manipulation pan transform already scale
for DPI, Chromium also scale the scroll event for DPI, so it scale twice.
In this patch, we read the device scale factor at the beginning
(DM_POINTERHITTEST) of the sequence then divide transform by device
scale factor.

Bug:  779372 
Change-Id: I849d37704fbc17b9abe07d1f9e6e5e2465fbffff
Reviewed-on: https://chromium-review.googlesource.com/976951
Reviewed-by: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Jianpeng Chao <chaopeng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#545878}
[modify] https://crrev.com/8a861942b8df83e80ec360e5d89be37048935e11/ui/base/win/direct_manipulation.cc
[modify] https://crrev.com/8a861942b8df83e80ec360e5d89be37048935e11/ui/base/win/direct_manipulation.h
[modify] https://crrev.com/8a861942b8df83e80ec360e5d89be37048935e11/ui/base/win/direct_manipulation_unittest.cc

Project Member

Comment 24 by bugdroid1@chromium.org, Apr 6 2018

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

commit 0dd7412668ce4dc71a063a6657e8cba460b1a377
Author: chaopeng <chaopeng@chromium.org>
Date: Fri Apr 06 17:08:41 2018

Fill the modifier state for scroll on Touchpad

Since touchpad gestures will expose as mousewheel events on JS.
Developer may want the modifier state. In this patch, we read the
modifier state and fill it into the event.

Bug:  779372 
Change-Id: Idf3ab53433795a40c7e89c887a9bb38a0c9f5f6b
Reviewed-on: https://chromium-review.googlesource.com/996379
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Jianpeng Chao <chaopeng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#548824}
[modify] https://crrev.com/0dd7412668ce4dc71a063a6657e8cba460b1a377/ui/views/win/hwnd_message_handler.cc

Project Member

Comment 25 by bugdroid1@chromium.org, Apr 11 2018

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

commit 8e8670f483f54e434a4e54d7d209159042a76568
Author: chaopeng <chaopeng@chromium.org>
Date: Wed Apr 11 15:07:20 2018

Save feature kPrecisionTouchpadScrollPhase state in HWNDMessageHandler

In this CL, we save the kPrecisionTouchpadScrollPhase state in
HWNDMessageHandler to avoid query the state of
kPrecisionTouchpadScrollPhase on each direct manipulation events.

Bug:  779372 
Change-Id: Ie97f4cbe180a5f01c7b513263ecb310d7df4b66f
Reviewed-on: https://chromium-review.googlesource.com/1005500
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Jianpeng Chao <chaopeng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#549885}
[modify] https://crrev.com/8e8670f483f54e434a4e54d7d209159042a76568/ui/views/win/hwnd_message_handler.cc
[modify] https://crrev.com/8e8670f483f54e434a4e54d7d209159042a76568/ui/views/win/hwnd_message_handler.h

Cc: ananta@chromium.org kylixrd@chromium.org rbyers@chromium.org chaopeng@chromium.org jsc...@chromium.org
 Issue 561550  has been merged into this issue.
Thanks chaopeng@chromium.org, the scrolling with PTPs in 67/68 is an amazing improvement. There's one more related issue, and I'm not sure if it should have a separate issue or not: Mice with high-precision scroll wheels still use interpolated scrolling, making them a awkward to use in comparison to Edge or most system apps.
I have a Microsft Surface Precision Mouse, which has two scroll wheel modes; one has discrete stops like a typical scroll wheel, and the other is a free-floating mode where the wheel sends precise, fast updates, similar to a PTP. Would it be possible to get this using the precise scrolling as well?
Edge detects it (without explicitly supporting this mouse AFAIK), and interpolates the scrolling in discrete mode while directly scrolling the page in free-floating mode.
Cc: ymalik@chromium.org skobes@chromium.org
 Issue 603651  has been merged into this issue.
Cc: pkasting@chromium.org
 Issue 583673  has been merged into this issue.

Sign in to add a comment