Closed Bug 1688888 Opened 3 years ago Closed 3 years ago

Audio scrubber on sputniknews.com is draggable outside of the area it should be

Categories

(Core :: Layout, defect)

Unspecified
Android
defect

Tracking

()

RESOLVED FIXED
94 Branch
Webcompat Priority P2
Tracking Status
firefox-esr78 --- unaffected
firefox-esr91 --- unaffected
firefox92 --- wontfix
firefox93 --- wontfix
firefox94 --- fixed

People

(Reporter: denschub, Assigned: mcomella)

References

(Regression, )

Details

(Keywords: regression)

Attachments

(3 files)

The audio scrubber in this sputniknews.com article shows a bit of a weird behavior.

As you can see in the attached screen recording, you can drag the scrubber element far below where it should be. In this case, it causes an issue where you can't always hit the play button and end up seeking forward instead. This reproduces in Fenix and GVE, but not on Desktop.

Also, this is probably in the wrong component, so please move it around if that's the case.

Also attaching a screenshot of the element's area according to the devtools - so this is probably not an issue with the element's sizing, but something else.

So is the event listener for some touch event added to ancestor element of the 'scrubber'?

Or, I wonder if some of this https://searchfox.org/mozilla-central/rev/69babd862de70cabfa1d0a369d38e4881bd41e4d/layout/base/PositionedEventTargeting.cpp#198,214 affects here.

Yeah, I suspect this is just the "fat fingers" target enlargement code... Dennis, does this repro on Fenix with ui.touch.radius.enabled=false?

Flags: needinfo?(dschubert)

This does not reproduce with ui.touch.radius.enabled=false, so yeah, this is "fat finger" code. One day, I'll remember that this preference exists... :/

Unsure what to do here, now. We could try reach out to the site, but given this works fine in Chrome, I think we'd have a hard time getting them into making the player larger/more compatible.

Flags: needinfo?(dschubert)
Component: DOM: UI Events & Focus Handling → Layout

Sounds like this is the ui.touch.radius.* options working as expected, isn't it? Or is the behavior somehow incorrect even once that is taken into account?

Flags: needinfo?(dschubert)

(In reply to Jonathan Kew (:jfkthame) from comment #5)

Or is the behavior somehow incorrect even once that is taken into account?

I'm honestly not quite sure what to reply here.

It is probably working as expected, yeah, but maybe the expectations are wrong and maybe there is something we can do here. I don't know specifics on how the touch radius is implemented and if there is room for additional logic. What I do know is that the media player in this issue is pretty much unusable for Firefox users, but works fine in Chrome and Safari.

Since this is probably not the only instance of a player similar to this, I'd hate to close this as a wontfix, because it might drive users away. On the other hand, I honestly know nothing about the touch radius implementation, so I don't know if we can do something here.

Flags: needinfo?(dschubert)

Putting bug 1618532 in "Regressed by" since I believe this issue has started since the bug. Though I am not sure why the scrubber is targeted rather than the play/pause buttons, we should improve the event retargetting machinery. I will check what's going on there in this case later.

Flags: needinfo?(hikezoe.birchill)
OS: Unspecified → Android
Regressed by: 1618532

I just quickly dumped event.retarget log and IIUC the log, it looks the event retarggeting machinery correctly targeted to the play/pause buttons.

D/event.retarget Final target is 0x76ed5918834

And the 0x76ed5918834 frame is;

Block(a)(1)@76ed59188340 parent=76ed5af77f88 (x=1200, y=960, w=660, h=600) [content=76ed5b728a80] [cs=76ed59125f28] <

I believe this is either the pause button or the play button. I am pretty sure it's not the scrubber which is a <div> element. So something goes wrong after we found the target.

Clearing NI to me since further investigation needs more time.

Flags: needinfo?(hikezoe.birchill)

Setting S3 for now since users can avoid this situation by zooming up the content.

Severity: -- → S3

Note that mouse events and touch events can both get retargeted (separately). Per comment 4, it's the touch retargeting that's causing this issue, so this is more likely a regression from bug 1637908 than from bug 1618532. And I don't know if comment 8 relates to retargeting of touch events or mouse events; if it's mouse events it may be irrelevant.

Also keep in mind that bug 1637908 was explicitly intended to make these kinds of scrubbers easier to drag. But we could reduce the radius mm values to fine-tune the behaviour some, and I expect that would probably be good enough for this case.

Thank you kats for the input! What I tested in comment 8 is on an Android emulator by using a mouse, I believe it behaves touch events, no? (I confirmed this issue happened at that time)

(In reply to Kartikaya Gupta (email:kats@mozilla.staktrace.com) from comment #10)

Also keep in mind that bug 1637908 was explicitly intended to make these kinds of scrubbers easier to drag. But we could reduce the radius mm values to fine-tune the behaviour some, and I expect that would probably be good enough for this case.

Thanks! Let's do it!

I started to look into this. I modified the ui.touch.radius.topmm preference to change the behavior. It defaults to 5mm and I tried:

  • at 2mm, I almost never accidentally move the audio scrubber
  • at 3mm, I sometimes accidentally move the audio scrubber but it's straightforward to me to move my finger

I would go with 2mm which matches the default bottom radius (left/right is at 3mm). I tested this behavior on vuetify js sliders via https://vuetifyjs.com/en/components/sliders/ (from bug 1637908 which enabled the feature that caused this behavior) and they are still easy to use. However, I'm not sure how the change in this preference would impact other pages with touch event areas. My intuition says it'll be okay – in bug 1637908, the issue was touch event fluffing was not enabled at all, not that the fluffing radius was incorrect so having a smaller value should still address the issue and similar ones – but I don't know for sure.

Assignee: nobody → michael.l.comella
Regressed by: 1637908
Has Regression Range: --- → yes

On one website, the touch input fluffing made an audio scrubber so large that it
covered other playback controls, making them inaccessible. This patch addresses
this problem by changing the top fluffing radius so it more closely matches the
bottom radius.

Attachment #9239042 - Attachment description: Bug 1688888: decrease ui.touch.radius.topmm on Android. r=botond → Bug 1688888: decrease ui.*.radius.topmm on Android. r=botond
Pushed by bballo@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/aa1e0da89303
decrease ui.*.radius.topmm on Android. r=botond
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 94 Branch

Mike, is that something we would like to uplift in 93 or can it ride the 94 train? Thanks

Flags: needinfo?(michael.l.comella)

This bug has been around for a while and it's particularly difficult for me as an individual to understand it works well for all users on all pages so I'd rather let it ride the 94 train – thanks for asking.

Flags: needinfo?(michael.l.comella)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: