Add a drawWindow() special case for <browser remote> that sources its shadow-layer tree




Canvas: 2D
7 years ago
5 years ago


(Reporter: cjones, Unassigned)


Firefox Tracking Flags

(Not tracked)


The fennec frontend will want to take a snapshot of the current content window before switching to another tab (and maybe in other situations).  There's currently no way to do that for <browser remote> because drawWindow() always re-renders content using a temporary layer manager, but that approach falls over with shadow layers.

Rob has discussed a generic API for drawing an arbitrary layer subtree into a context, but it might be easier to somehow special-case <browser remote> initially, since we can assume a lot about its configuration and it has a simple mapping from DOM --> layer tree.

All the required pieces are in place to implement this now, although bug 590294 will make things a bit trickier because drawWindow() will probably want to honor the view transform.
If we have to do this, why aren't we using asyncDrawXULElement like we did in tile-manager Fennec?
Oh, should have mentioned that that's a temporary workaround until we have drawWindow support.

asyncDrawXULElement() is a slow hard-to-maintain ugly duckling that has the guillotine millimeters away from its neck.  Making drawWindow() aware of (shadow) layers will result in a maximally-efficient, synchronous API that will give WSIWYG results (arguably that's an advantage over even drawWindow() of an in-process content window, in the current implementation).
Last Resolved: 5 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.