Open Bug 1442863 Opened 2 years ago Updated 5 months ago

Smooth scrolling implementations perform badly with resistFingerprinting's reduced timer precision

Categories

(Core :: DOM: Core & HTML, defect, P3)

60 Branch
defect

Tracking

()

Tracking Status
firefox60 --- affected

People

(Reporter: ke5trel, Unassigned)

References

(Blocks 2 open bugs)

Details

(Whiteboard: [fingerprinting][fp-triaged])

STR:
1. Enable privacy.resistFingerprinting (or equivalently set privacy.resistFingerprinting.reduceTimerPrecision.microseconds = 100000)
2. Visit https://presscustomizr.com/hueman/
3. Scroll page.

The Wordpress Hueman theme with over 80k active installs has "Press Customizr version of Galambosi's SmoothScroll" enabled by default which uses requestAnimationFrame() and is throttled by reduced timer precision, making scrolling unsmooth.

The code comes from a Chrome extension created to address the historic lack of smooth scrolling in the Chrome browser but is being applied to all browsers despite Firefox already having native smooth scrolling.

A few thoughts:

1. resistFingerprinting uses 100ms precision which is only 10fps, at the very least animations should be 30fps (33ms) or preferably 60fps (17ms). Cosmetic animations don't need to be a priority but page scrolling is quite important, increasing the timer precision a small amount gives a big improvement in perceived smoothness. Maybe it could be a little higher?

2. Users could easily make the mistake of thinking that Firefox is performing poorly without realizing it is due to resistFingerprinting. Clearly indicating it is enabled in the UI and what the consequences are would go a long way to avoiding confusion.

3. Smooth scrolling could possibly be detected and prevented in some way, like ignoring repeated calls to scrollBy().
Tom, thoughts?
Flags: needinfo?(tom)
It's on the fingerprinting team's radar; but in our backlog.
Flags: needinfo?(tom)
Priority: -- → P3
Whiteboard: [fingerprinting-breakage] → [fingerprinting]
Whiteboard: [fingerprinting] → [fingerprinting][fp-triaged]
Using JS for smoothing scrolling is misuse of JS. People can also make their websites intentionally nonfunctional without JS at all and then say "you either enable JS and all0w us fingerprint your device or go away" in a more polite words. I have encountered this in the Web several times. I vote for `wontfix`ing this bug report.
Component: DOM → DOM: Core & HTML

http://madebyevan.com/shaders/fast-rounded-rectangle-shadows/ this page also demonstrates this bug, it seems to not just be for scrolling

You need to log in before you can comment on or make changes to this bug.