Open Bug 1365305 Opened 7 years ago Updated 1 month ago

0.86ms uninterruptible reflow at _positionPinnedTabs@chrome://browser/content/tabbrowser.xml:6147:33

Categories

(Firefox :: Tabbed Browser, defect, P5)

defect

Tracking

()

Performance Impact low

People

(Reporter: mconley, Unassigned)

References

(Blocks 1 open bug)

Details

(Keywords: perf, perf:frontend, perf:responsiveness, Whiteboard: [ohnoreflow])

Attachments

(1 file)

Here's the stack:

_positionPinnedTabs@chrome://browser/content/tabbrowser.xml:6147:33
onxbloverflow@chrome://browser/content/tabbrowser.xml:5696:9

That's this stuff: http://searchfox.org/mozilla-central/rev/ae24a3c83d22e0e35aecfd9049c2b463ca7e045b/browser/base/content/tabbrowser.xml#6154-6158
Component: Untriaged → Tabbed Browser
Flags: qe-verify?
Whiteboard: [ohnoreflow][qf:p1][photon-performance] → [ohnoreflow][qf:p1][photon-performance] [triage]
Priority: -- → P2
Whiteboard: [ohnoreflow][qf:p1][photon-performance] [triage] → [ohnoreflow][qf:p1][photon-performance]
Flags: qe-verify? → qe-verify+
QA Contact: adrian.florinescu
Priority: P2 → P3
Whiteboard: [ohnoreflow][qf:p1][photon-performance] → [ohnoreflow][qf:p1][reserve-photon-performance]
Assignee: nobody → jiangperry
Status: NEW → ASSIGNED
Priority: P3 → P1
I wasn't able to detect this reflow with ohnoreflow on Nightly 57.0a1 (2017-08-02) when the code around this.childNodes[0].getBoundingClientRect().width gets called.
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → WORKSFORME
Hey Perry,

I'm going to re-open this. It's quite possible that:

1) Oh no! Reflow! is running with too high a threshold to detect it
2) The STR are very precise - likely also occurring once per browser window, because it looks like we're caching some results here: http://searchfox.org/mozilla-central/rev/ae24a3c83d22e0e35aecfd9049c2b463ca7e045b/browser/base/content/tabbrowser.xml#6151-6159

Still, we're using getBoundingClientRect(), which guarantees a layout flush if we ever hit that codepath with a dirty DOM. So I think this bug is still legitimate.
Status: RESOLVED → REOPENED
Resolution: WORKSFORME → ---
Comment on attachment 8895977 [details] [diff] [review]
Bug 1365305 - wrap _positionPinnedTabs's getBoundingClientRect() in requestAnimationFrame

This makes the pinned tab area flicker when the tab strip overflows.
Attachment #8895977 - Flags: review?(mconley) → review-
I believe that we should downgrade this bug from p1 to a p2 or even a p3. There's a sync reflow here to get the pinned tab dimensions, but that only happens only once per session, and then that information is cached and the reflow won't happen again. Also, pinned tabs are not a widely known feature. And it's not clear there's a non-flickering way to avoid this reflow.

I'm directly marking as a p2. If anyone disagrees feel free to change it back.
Assignee: jiangperry → nobody
Whiteboard: [ohnoreflow][qf:p1][reserve-photon-performance] → [ohnoreflow][qf:p2][reserve-photon-performance]
Status: REOPENED → NEW
Priority: P1 → P3
Priority: P3 → P4
Keywords: perf
Setting this to qf:p3 as per comment 5 for now.
Whiteboard: [ohnoreflow][qf:p2][reserve-photon-performance] → [ohnoreflow][qf:p3][reserve-photon-performance]
Whiteboard: [ohnoreflow][qf:p3][reserve-photon-performance] → [ohnoreflow][qf:p3][reserve-photon-performance] [fxperf]
Whiteboard: [ohnoreflow][qf:p3][reserve-photon-performance] [fxperf] → [ohnoreflow][qf:p3][reserve-photon-performance] [fxperf:p3]
Whiteboard: [ohnoreflow][qf:p3][reserve-photon-performance] [fxperf:p3] → [ohnoreflow][qf:p3][fxperf:p3]
Priority: P4 → P5
Performance Impact: --- → P3
Whiteboard: [ohnoreflow][qf:p3][fxperf:p3] → [ohnoreflow][fxperf:p3]
Severity: normal → S3

The code doing the sync layout flushes is still there: https://searchfox.org/mozilla-central/rev/a06d5a8871b1796f2dbd588ab518eaa98507e018/browser/base/content/tabbrowser-tabs.js#1463-1469

Interestingly, this branch of the code seems to have 0 test coverage. Is it possible that no test exercises pinned tabs with an overflowing tab bar?

Whiteboard: [ohnoreflow][fxperf:p3] → [ohnoreflow]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: