Closed Bug 1611710 Opened 5 years ago Closed 5 years ago

Checkmark icons disappearing in the One-Click Search Engines section

Categories

(Core :: Graphics: WebRender, defect, P1)

Desktop
All
defect

Tracking

()

RESOLVED FIXED
mozilla75
Tracking Status
firefox-esr68 --- unaffected
firefox72 --- unaffected
firefox73 --- unaffected
firefox74 + fixed
firefox75 --- verified

People

(Reporter: itiel_yn8, Assigned: jrmuizel)

References

(Regression)

Details

(Keywords: regression)

Attachments

(5 files)

STR:

  1. Open about:preferences#search
  2. Ctrl+Shift+C
  3. Scroll down to the One-Click Search Engines section -- all the search engines except for one (presumably the default one?) have no checkmark next to them
  4. Hover the search engines tree -- checkmarks are back
  5. Scroll back to the top and then down -- same results as in steps 3 & 4

https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=fd2d5ef280f4501b8fe79c66f9011d6a73a10115&tochange=a65aef85ad0df16d756283fb1975cdd90ea61843
Suspect: bug 1588142

Flags: needinfo?(ksteuber)

(In reply to Itiel from comment #0)

STR:

  1. Open about:preferences#search
  2. Ctrl+Shift+C

What does this do for you? On mac, it shows the inspector with the "inspect" tool selected for me.

  1. Scroll down to the One-Click Search Engines section -- all the search engines except for one (presumably the default one?) have no checkmark next to them

Can't reproduce this on macOS. :-(

  1. Hover the search engines tree -- checkmarks are back
  2. Scroll back to the top and then down -- same results as in steps 3 & 4

https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=fd2d5ef280f4501b8fe79c66f9011d6a73a10115&tochange=a65aef85ad0df16d756283fb1975cdd90ea61843
Suspect: bug 1588142

Can you reproduce in safe mode?

Flags: needinfo?(itiel_yn8)

(In reply to :Gijs (he/him) from comment #1)

What does this do for you? On mac, it shows the inspector with the "inspect" tool selected for me.

Yep, that's what I meant.

Can't reproduce this on macOS. :-(

I'm on Windows 10 btw.

Can you reproduce in safe mode?

This was tested on a clean profile, using mozregression.
I can still test in safe mode if you'd like.

Flags: needinfo?(itiel_yn8)

(In reply to Itiel from comment #2)

(In reply to :Gijs (he/him) from comment #1)

Can you reproduce in safe mode?

This was tested on a clean profile, using mozregression.
I can still test in safe mode if you'd like.

Yes please; I somewhat suspect a graphics issue, in which case I'd expect safe mode to resolve the problem, so trying to confirm that. :-)

Flags: needinfo?(itiel_yn8)

(In reply to :Gijs (he/him) from comment #3)

Yes please; I somewhat suspect a graphics issue, in which case I'd expect safe mode to resolve the problem, so trying to confirm that. :-)

Yep, that's probably the case. This works okay in safe mode.

Flags: needinfo?(ksteuber)
Flags: needinfo?(itiel_yn8)
Attached file about:support contents

Punting this to graphics based on comment #4...

Component: Preferences → Graphics
Product: Firefox → Core
Component: Graphics → Graphics: WebRender

Attachment 9123189 [details] says that WebRender was used. And I could reproduce the problem on Linux and on Windows. And when I disabled WebRender, I did not see the problem.

We could not know the regression of WebRender because of comment 0 :(

Blocks: wr-73

Managed to reproduce the issue on Nightly 74.0a1 (2020-02-03) using Windows 10 x64 and Ubuntu 18.04.3 LTS. On Release 72.0.2 and Beta 73.0 the issue couldn't be reproduced. Will add the according flags.

OS: Unspecified → All
Hardware: Unspecified → Desktop

:gw, can you comment to this bug? Is it caused by WebRender side or gecko side?

Flags: needinfo?(gwatson)

(In reply to Sotaro Ikeda [:sotaro] from comment #8)

We could not know the regression of WebRender because of comment 0 :(

I'd be happy to check for the regression range if a reduced test case can be made.

I can't seem to repro this on Linux with current m-c. Sotaro, is it still occurring for you? Could you attach a screenshot, maybe I'm looking at the wrong thing?

Flags: needinfo?(gwatson) → needinfo?(sotaro.ikeda.g)

I can also reproduce this without having to open the inspector, by zooming in the about:preferences page:
https://gfycat.com/darkearlyfireant

Screencast with opening the inspector:
https://gfycat.com/mediumblindgermanspitz

(In reply to Itiel from comment #13)

I can also reproduce this without having to open the inspector, by zooming in the about:preferences page:
https://gfycat.com/darkearlyfireant

For whatever reason I could reproduce this only when the zoom-in is >200%.

I confirmed that the problem happened with latest nightly and latest m-c on Ubuntu. Attachment 9124626 [details] is a video when problem happened.
In the STR in comment 0, if we did not follow "2. Ctrl+Shift+C", the problem did not happen. Then it might be related to WR bug.

Flags: needinfo?(sotaro.ikeda.g)

OK, I am able to reproduce now. I'll try a mozregression to see if I can identify when it broke.

Attached image bug.png

I was able to get a WR capture when the bug occurs.

By tweaking the scene.ron file, I can confirm that the portion of the output in the red dashed box is a single image that has been sent to WR by Gecko.

From that, I assume that this is a blob image and that there is a bug in the blob handling code.

The number of checkmarks that get drawn seems somewhat dependent on size of the viewport and/or inspector panel. So I suspect some kind of culling / visibility issue.

Jeff, Nical, does that sound right? Could you take a look at this?

Flags: needinfo?(nical.bugzilla)
Flags: needinfo?(jmuizelaar)
Blocks: wr-74
No longer blocks: wr-73

Ok, yeah the "One-Click Search Engines" table use a xul tree element which will cause fallback to blob rendering, given the complexity of what can go in a xul tree it's not that surprising that it would break.

Gijs, how hard would it be to replace the xul tree with a non-xul widget?

Flags: needinfo?(jmuizelaar) → needinfo?(gijskruitbosch+bugs)
Depends on: 1446359

(In reply to Jeff Muizelaar [:jrmuizel] from comment #20)

Ok, yeah the "One-Click Search Engines" table use a xul tree element which will cause fallback to blob rendering, given the complexity of what can go in a xul tree it's not that surprising that it would break.

Gijs, how hard would it be to replace the xul tree with a non-xul widget?

I don't know the exact details of this UI, but from a quick look converting this tree is doable but not easy. The good news is that we aren't dealing with an infinite number of rows so performance isn't a concern, and we aren't extending places-tree or reusing this same tree in other places in the chrome. But the things that look like they would take a fair amount of time here are:

So if we wanted to port this and maintain the exact same functionality it would take some time. Certainly not anything that could make it into 74.

More generally, is this something that could happen to any tree and WR or is it somehow constrained with a particular feature this is using? I'm wondering if we need to kick off a project to completely remove XUL trees (things like the Places tree will be a lot more work) or to better support them with WR. The current plan is to not focus on general removal for them beyond the XBL->Custom Element because of the cost to do so, unless if it becomes necessary for other reasons (see https://bugzilla.mozilla.org/show_bug.cgi?id=1446341#c27). If you think this may be necessary, let's have a chat to discuss the options.

Flags: needinfo?(jmuizelaar)

(In reply to Brian Grinstead [:bgrins] from comment #21)

More generally, is this something that could happen to any tree and WR or is it somehow constrained with a particular feature this is using? I'm wondering if we need to kick off a project to completely remove XUL trees (things like the Places tree will be a lot more work) or to better support them with WR. The current plan is to not focus on general removal for them beyond the XBL->Custom Element because of the cost to do so, unless if it becomes necessary for other reasons (see https://bugzilla.mozilla.org/show_bug.cgi?id=1446341#c27). If you think this may be necessary, let's have a chat to discuss the options.

I was hoping it would be relatively easy so that we could just avoid investigating what's going wrong. It sounds like it's hard enough that it's probably still worth taking a look at what's going wrong.

Regardless of this particular instance it's still true that XUL trees will have bad performance with WebRender (any changes of content will cause a full repaint) so it's still good to move away from them in places where performance maters.

Flags: needinfo?(jmuizelaar)

I think Brian's answered my ni here. :-)

Flags: needinfo?(gijskruitbosch+bugs)
Priority: -- → P3

Changing the priority to p1 as the bug is tracked by a release manager for the current beta.
See What Do You Triage for more information

Priority: P3 → P1
Flags: needinfo?(jbonisteel)

Jeff - per our chat, can you update here what next steps/a potential fix might be?

We will try and get to this for 74, but not sure we will be able to.

Flags: needinfo?(jbonisteel) → needinfo?(jmuizelaar)

I looked at this some more. We're calling RenderDocument on each svg icon but not calling Fill() for the ones that don't show up. Something must be going wrong inbetween.

Assignee: nobody → jmuizelaar
Flags: needinfo?(jmuizelaar)
Flags: needinfo?(nical.bugzilla)
Attached patch A possible fixSplinter Review

Sometimes the painting code will look at the clip which is derived
from the intial size of the surface and not draw if things if they
are outside of it. We want to draw the entire item so use dtRect
instead of visibleRect.

Pushed by jmuizelaar@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/bd13b92ec265 Don't restrict the draw target to the visible area.

Jeff, is that something you want to uplift to 74? (last beta being built in a few hours)

Flags: needinfo?(jmuizelaar)
Blocks: 1617627

Comment on attachment 9129018 [details]
Bug 1611710. Don't restrict the draw target to the visible area.

Beta/Release Uplift Approval Request

  • User impact if declined: - Checkmark icons disappearing in the One-Click Search Engines section
  • Blobs are clipped incorrectly (bug 1617426)
  • Text does not appear until mouseover when using WebRender (bug 1617627)
  • Is this code covered by automated tests?: Yes
  • Has the fix been verified in Nightly?: No
  • Needs manual test from QE?: No
  • If yes, steps to reproduce:
  • List of other uplifts needed: None
  • Risk to taking this patch: Medium
  • Why is the change risky/not risky? (and alternatives if risky): The code should be pretty well covered by tests. This adds a new tests which passes and it fixes a number of different bugs. That being said it hasn't had much time to bake on Nightly. It is, however, a one line change so easy to revert if needed.
  • String changes made/needed:
Flags: needinfo?(jmuizelaar)
Attachment #9129018 - Flags: approval-mozilla-beta?
Attachment #9128622 - Flags: approval-mozilla-beta?

Comment on attachment 9129018 [details]
Bug 1611710. Don't restrict the draw target to the visible area.

Taking in our last 74 beta as it fixes several bugs caused by webrender and the patch is small and would be backed out easily in RC if we encounter a problem.

Attachment #9129018 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Attachment #9128622 - Flags: approval-mozilla-beta? → approval-mozilla-beta+

Can you review the patch, please? It already landed.

Flags: needinfo?(mstange)

Done.

Flags: needinfo?(mstange)
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla75
Regressions: 1620179
No longer regressions: 1620179
Has Regression Range: --- → yes
No longer depends on: 1446359
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: