Closed Bug 1559389 Opened 5 years ago Closed 5 years ago

Document splitting fails to render Customizable UI after Bug 1558995

Categories

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

defect

Tracking

()

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

People

(Reporter: bgrins, Assigned: kats)

References

Details

Attachments

(2 files)

See this discussion: https://phabricator.services.mozilla.com/D34792#inline-208116.

Previously the markup looked like:

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

And then after Bug 1558995 it will look like:

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

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

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 kgupta@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/33dc819da62f
Clean up renderroot-finding methods. r=Gankro
https://hg.mozilla.org/integration/autoland/rev/9e4404e0c267
Support renderroot attributes on XUL elements that generate nsFlexContainer frames. r=mattwoodrow
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla70
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: