Closed Bug 1559389 Opened 6 months ago Closed 5 months ago

Document splitting fails to render Customizable UI after Bug 1558995


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




Tracking Status
firefox-esr60 --- unaffected
firefox67 --- unaffected
firefox68 --- unaffected
firefox69 --- disabled
firefox70 --- fixed


(Reporter: bgrins, Assigned: kats)


(Blocks 1 open bug)



(2 files)

See this discussion:

Previously the markup looked like:

  <deck id="content-deck" renderoot="content">
    <hbox id="browser" />
    <box id="customization-container" />

And then after Bug 1558995 it will look like:

  <hbox id="browser" renderoot="content" />
  <box id="customization-container" renderoot="content" />

If I ./mach run --temp-profile --setpref gfx.webrender.all=true --setpref gfx.webrender.split-render-roots=true with the change, then the content area continues to render properly, but the Customizable UI doesn't get painted.

One observation I've made is that if I remove renderroot="content" from the #browser element then the web content stops rendering (as expected) but the Customizable UI starts working (both with and without the attribute set on #customization-container).

Has STR: --- → yes
Priority: -- → P3
Duplicate of this bug: 1562813

Doug: "we just need to add something somewhere in Gecko display list building to appropriately create an nsDisplayRenderRoot for this. It doesn't go through nsBoxFrame. I think it goes through nsFlexContainerFrame? This side of things is a bit outside my knowledge anyway, and I would just be poking around and trying to cargo cult something together."

Assignee: nobody → kats

Indeed, modifying nsFlexContainerFrame::BuildDisplayList wrap stuff in a nsDisplayRenderRoot seems to fix things locally. Will clean my patch a bit and do a try push.

Only the parent process ever respects the renderroot attribute, so we can
add some extra early-exit checks for this. This also adds a bit of safety
for the next patch, to avoid inadvertently exposing renderroot stuff to
web content.

Also, the GetRenderRootForElement function is only ever called by the
GetRenderRootForFrame function, so let's scope it down to avoid doing
unnecessary work.

Pushed by
Clean up renderroot-finding methods. r=Gankro
Support renderroot attributes on XUL elements that generate nsFlexContainer frames. r=mattwoodrow
Closed: 5 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla70
You need to log in before you can comment on or make changes to this bug.