Default themes are not applied correctly when they are switched from about:addons on Mac OS
Categories
(Core :: Web Painting, defect)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr68 | --- | unaffected |
firefox71 | --- | unaffected |
firefox72 | --- | verified |
firefox73 | --- | verified |
People
(Reporter: vvalentina, Assigned: mstange)
References
(Regression)
Details
(Keywords: regression)
Attachments
(3 files, 1 obsolete file)
708.66 KB,
image/png
|
Details | |
3.39 MB,
text/plain
|
Details | |
47 bytes,
text/x-phabricator-request
|
jcristau
:
approval-mozilla-beta+
|
Details | Review |
[Affected Versions]:
- Firefox Beta 72.0b2
[Affected Platforms]:
- All Mac
[Steps to reproduce]:
- Go to about:addons#Themes page
- Enable Light theme
- Switch to Standard theme
- Observe tabs strip behavior
[Expected results]:
- The new theme is applied and there are no display or layout issues.
[Actual results]:
- The theme is not applied correctly on the tab strip.
[Regression]:
23:31.26 INFO: No more inbound revisions, bisection finished.
23:31.26 INFO: Last good revision: 12df7898b0eee9b11ed6189769f2a6199d93d4e1
23:31.26 INFO: First bad revision: 4d9f24928383f3da9fe40a2900a403ceb76c5983
23:31.26 INFO: Pushlog:
https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=12df7898b0eee9b11ed6189769f2a6199d93d4e1&tochange=4d9f24928383f3da9fe40a2900a403ceb76c5983
It looks like bug 1592739 has caused this behavior.
[Notes]
- Issue observed better while hovering over the tab strip.
@mstange, could you please take a look at this?
Comment 1•5 years ago
|
||
Valentina, do you have a screenshot by any chance ? I can't reproduce this on my side.
Also, do you have WebRender enabled ?
Thanks!
Assignee | ||
Comment 2•5 years ago
|
||
I can reproduce this, but only on about:addons, not from the Customize... tab.
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 3•5 years ago
|
||
Assignee | ||
Comment 4•5 years ago
|
||
The PaintedLayer for the chrome contains opaque pixels instead of transparent pixels in the bad paints. That's even though the entire layer is invalidated and there's no SolidColor item in the display list after the switch from light -> default. I'm not sure where the opaque pixels come from. It's possible that we're forgetting to clear previous layer content. The PaintedLayer itself is not marked as opaque. But sometimes its parent layer (the ClientLayerManager's root container layer) is marked as opaque.
This bug does not happen with WebRender enabled.
Assignee | ||
Comment 5•5 years ago
|
||
Assignee | ||
Comment 6•5 years ago
|
||
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 7•5 years ago
|
||
This has to do with mIsOpaque on the window's root display list. Its value changes between true and false somewhat randomly, as far as I can tell. If mIsOpaque is false in the paint where we change from the light theme to the default theme, we get broken rendering. If it happens to be true, we get correct rendering.
Assignee | ||
Comment 8•5 years ago
|
||
This is a retained display list bug. Sometimes mIsOpaque=true from a previous frame can stick around, and then the bad value circles back through layers. (displayList->IsOpaque() causes us to set CONTENT_OPAQUE on a layer, and then the opaque layer region results in a call to displaylist->SetIsOpaque()).
This bug does not happen if layout.display-list.retain.chrome is set to false.
Assignee | ||
Comment 9•5 years ago
|
||
These values start out false in the other two ways display lists can be build:
- Without retained display lists, a new nsDisplayList object is created which starts out with these values being false.
- When partial update succeeds (or at least gets far enough to run PreProcessDisplayList), RestoreState() is called on the root display list which sets these values to false.
But when partial update fails, we have an old nsDisplayList object and we were not clearing those values.
Comment 10•5 years ago
|
||
Comment 11•5 years ago
|
||
bugherder |
Comment 13•5 years ago
•
|
||
Reproduced the initial issue using an old Nightly build: 20191204215924 and Beta 72.0b2.
Verified - fixed on latest Nightly 73.0a1 (2019-12-05) (Build id: 20191205041108) on Mac OS 10.14.
Updated•5 years ago
|
Assignee | ||
Comment 14•5 years ago
•
|
||
Comment on attachment 9113597 [details]
Bug 1601306 - When partial update fails, make sure that mIsOpaque and mForceTransparentSurface on the root display list are false. r=tnikkel
Beta/Release Uplift Approval Request
- User impact if declined: UI glitches when switching themes
- Is this code covered by automated tests?: No
- Has the fix been verified in Nightly?: Yes
- Needs manual test from QE?: Yes
- If yes, steps to reproduce: see comment 0
- List of other uplifts needed: None
- Risk to taking this patch: Low
- Why is the change risky/not risky? (and alternatives if risky): The fix is very simple.
- String changes made/needed:
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Updated•5 years ago
|
Updated•5 years ago
|
Comment 15•5 years ago
|
||
Comment on attachment 9113597 [details]
Bug 1601306 - When partial update fails, make sure that mIsOpaque and mForceTransparentSurface on the root display list are false. r=tnikkel
macos regression fix, verified in nightly, approved for 72.0b5
Comment 16•5 years ago
|
||
bugherder uplift |
Comment 17•5 years ago
|
||
Verified - fixed on latest Beta 72.0b5 (Build id: 20191209175918) on Mac OS 10.14.
Updated•3 years ago
|
Description
•