Module script::layout_dom

source ·
Expand description

A safe wrapper for DOM nodes that prevents layout from mutating the DOM, from letting DOM nodes escape, and from generally doing anything that it isn’t supposed to. This is accomplished via a simple whitelist of allowed operations, along with some lifetime magic to prevent nodes from escaping.

As a security wrapper is only as good as its whitelist, be careful when adding operations to this list. The cardinal rules are:

  1. Layout is not allowed to mutate the DOM.

  2. Layout is not allowed to see anything with LayoutDom in the name, because it could hang onto these objects and cause use-after-free.

When implementing wrapper functions, be careful that you do not touch the borrow flags, or you will race and cause spurious thread failure. (Note that I do not believe these races are exploitable, but they’ll result in brokenness nonetheless.)

Modules§

Structs§