Unexpected navigation when tapping to add a project tag in Phabricator
Categories
(Core :: DOM: UI Events & Focus Handling, defect, P3)
Tracking
()
| Tracking | Status | |
|---|---|---|
| thunderbird_esr115 | --- | unaffected |
| thunderbird_esr128 | --- | unaffected |
| firefox-esr115 | --- | unaffected |
| firefox-esr128 | --- | unaffected |
| firefox138 | --- | unaffected |
| firefox139 | --- | unaffected |
| firefox140 | --- | fixed |
People
(Reporter: dholbert, Assigned: masayuki)
References
(Regression, )
Details
(Keywords: regression)
Attachments
(2 files)
Note: this reproduces on Android as well as in RDM. I'm including RDM steps since that's easier for most folks to test.
The tl;dr steps are: try to add a project-tag (e.g. testing-*) to a phab revision on Android or RDM. More detail below.
STR:
- Be signed into phabricator
- visit some phab revision like e.g. https://phabricator.services.mozilla.com/D249234
- Ctrl+Shift+M to enter Responsive Design Mode.
- If the device-selection dropdown is showing "Responsive", choose an actual device instead (e.g. Galaxy Note 20) and reload the page.
- Scroll to the bottom of the page and click "Add Action" | "Change Project Tags"
- Click the Project Tags section and type "te"
- In the autocompleted dropdown list that appears, choose any of the options (e.g. "testing-approved")
ACTUAL RESULTS:
The tag gets added to the project tags field, but then shortly afterwards, you get navigated to https://phabricator.services.mozilla.com/project/view/133/
EXPECTED RESULTS:
No navigation.
mozregression narrowed this to a pref-flip here:
https://hg-edge.mozilla.org/integration/autoland/pushloghtml?fromchange=fc63623a76df65764289dce018b0f4d818ead34e&tochange=8c31644eed164a0461d14198945b08b039899c30
I confirmed that the issue goes away if I toggle that pref dom.w3c_pointer_events.dispatch_click_on_pointer_capturing_element to false.
--> regression from bug 1885232
| Reporter | ||
Comment 1•1 year ago
|
||
| Reporter | ||
Updated•1 year ago
|
| Reporter | ||
Updated•1 year ago
|
| Assignee | ||
Comment 2•1 year ago
|
||
Hmm, I cannot keep opening the autocomplete popup, therefore, it's hard to understand what's going on from the content. However, this is reproducible with RDM (thank you for checking that!), so, I could debug from C++ side.
| Assignee | ||
Comment 3•1 year ago
|
||
Hmm... The server is too slow... I'll take a look tomorrow.
| Assignee | ||
Comment 4•1 year ago
|
||
If
eventis acontextmenuevent, oruserEventwas dispatched while the corresponding pointer was captured, then lettargetbe the target ofuserEvent.
The click event target is defined as this, event is click and userEvent is the preceding pointerup. So, click event target should be the target of pointerup.
However, Chromium implements this differently.
| Assignee | ||
Comment 5•1 year ago
|
||
It seems that Phabricator listens to mousedown and hide the autocomplete popup. Therefore, if the click target is not the ex-capture element, the hit-testing at dispatching pointerup won't reach the <div> which is a child of <a>.
| Assignee | ||
Comment 6•1 year ago
|
||
Oh, according to the testcase, Chrome does not use the pointerup target for click if it's caused by a touch. I'm looking for the dispatcher which must be different point from comment 4.
| Assignee | ||
Updated•1 year ago
|
| Assignee | ||
Comment 7•1 year ago
|
||
Pointer Events spec implies that the source event of click is the preceding
pointerup unless it's caused by keyboard or script and that defines the
click event target should be the pointerup event target if the pointer is
captured either explicitly or implicitly. However, when it's caused by a tap,
Chrome does not use the pointerup target as the click event target. For
now, we should align the behavior to Chrome because we got a web-compat issue on
Phabricator.
Updated•1 year ago
|
Comment 9•1 year ago
|
||
| bugherder | ||
Updated•1 year ago
|
Description
•