When dispatching actions the "input cancel list" is wrongly updated before the actual action is dispatched
Categories
(Remote Protocol :: Agent, defect, P3)
Tracking
(firefox-esr128 unaffected, firefox132 unaffected, firefox133 fixed, firefox134 fixed)
Tracking | Status | |
---|---|---|
firefox-esr128 | --- | unaffected |
firefox132 | --- | unaffected |
firefox133 | --- | fixed |
firefox134 | --- | fixed |
People
(Reporter: whimboo, Assigned: whimboo)
References
(Blocks 1 open bug, Regression)
Details
(Keywords: regression, Whiteboard: [webdriver:m13], [wptsync upstream])
Attachments
(4 files)
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
phab-bot
:
approval-mozilla-beta+
|
Details | Review |
48 bytes,
text/x-phabricator-request
|
phab-bot
:
approval-mozilla-beta+
|
Details | Review |
I noticed this problem when working on the patch on bug 1930530. It can be seen especially for pointer
related actions of subtype pen
which we do not have support for yet. That means that dispatching a pointerDown
will fail with an unsupported error
but because the input cancel list
was already updated before with a new pointerUp
action to reset the state of the input device, we will see another unexpected error when the release actions are automatically performed.
Per WebDriver specification we need to do:
7. Let algorithm be the value of the column dispatch action algorithm from the following table where the source type column is source type and the subtype column is equal to subtype.
source type subtype Dispatch action algorithm
"none" "pause" Dispatch a pause action
"key" "pause" Dispatch a pause action
"key" "keyDown" Dispatch a keyDown action
"key" "keyUp" Dispatch a keyUp action
"pointer" "pause" Dispatch a pause action
"pointer" "pointerDown" Dispatch a pointerDown action
"pointer" "pointerUp" Dispatch a pointerUp action
"pointer" "pointerMove" Dispatch a pointerMove action
"pointer" "pointerCancel" Dispatch a pointerCancel action
"wheel" "pause" Dispatch a pause action
"wheel" "scroll" Dispatch a scroll action
8.Try to run algorithm with arguments action object, source, global key state, tick duration, browsing context, and actions options.
9. If subtype is "keyDown", append a copy of action object with the subtype property changed to "keyUp" to input state's input cancel list.
10. If subtype is "pointerDown", append a copy of action object with the subtype property changed to "pointerUp" to input state's input cancel list.
This as well applies to other input sources as well.
This bug blocks my work on bug 1930530.
Assignee | ||
Comment 1•6 days ago
|
||
This wasn't visible yet because my patch on bug 1915798 accidentally introduced a regression in release actions
due to a missing await
. Due to that we did not see the error for pen
as mentioned above. I'm still not sure why we even didn't see it before this patch landed.
Assignee | ||
Updated•6 days ago
|
Assignee | ||
Updated•6 days ago
|
Comment 2•6 days ago
|
||
Set release status flags based on info from the regressing bug 1915798
Assignee | ||
Comment 3•6 days ago
|
||
Assignee | ||
Comment 4•6 days ago
|
||
Comment 7•4 days ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/53ab6d394f59
https://hg.mozilla.org/mozilla-central/rev/c71ce74e6512
Assignee | ||
Comment 9•4 days ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D228817
Updated•4 days ago
|
Assignee | ||
Comment 10•4 days ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D228818
Updated•4 days ago
|
Comment 11•4 days ago
|
||
beta Uplift Approval Request
- User impact if declined: For WebDriver users a race condition would be visible when Actions are performed and released.
- Code covered by automated testing: yes
- Fix verified in Nightly: no
- Needs manual QE test: no
- Steps to reproduce for manual QE testing: None
- Risk associated with taking this patch: low
- Explanation of risk level: Just adds an
await
for the affected calls to methods returning a Promise. - String changes made/needed: no
- Is Android affected?: yes
Comment 12•4 days ago
|
||
beta Uplift Approval Request
- User impact if declined: For WebDriver users a race condition would be visible when Actions are performed and released.
- Code covered by automated testing: yes
- Fix verified in Nightly: no
- Needs manual QE test: no
- Steps to reproduce for manual QE testing: None
- Risk associated with taking this patch: low
- Explanation of risk level: Just adds an await for the affected calls to methods returning a Promise.
- String changes made/needed: No
- Is Android affected?: yes
Updated•4 days ago
|
Updated•4 days ago
|
Comment 13•4 days ago
|
||
uplift |
Updated•4 days ago
|
Description
•