An element sized by a stylesheet rule had no explicit size, so its scroll
offset never clamped. The geometry group now tracks width and height, and
getElementAxis reads them from the cascade, which already folds in the
inline style. html and body read only their inline size, without
materializing the style object. Removes the now unused
CSS.parseDimensionViewport.
rebuildIfDirty walks group_fields like the other per-group code, so a new
group needs no change there. Capacities moves out of Group since it
doesn't depend on the spec. Also updates the ownProps and compute call
sites to the (el, frame) order.
Each group owns its rule buckets, its memo and its cascade priorities, so a
rule only joins the groups it declares something in. Visibility keeps
display, visibility, opacity and pointer-events; overflow and
overscroll-behavior move to a geometry group. A visibility probe no longer
matches overflow-only rules, and its memo entry shrinks to 6 bits.
Response headers get lower cased once, upfront. Any consumer of a transfer's /
response's headers is now `mem.eql` rather than `ascii.eqlIgnoreCase`. This
fixes 1 or 2 WPT cases (e.g. XHR's `getAllResponseHeaders`), it also mergers
values in some cases (which is generally correct) - we need a follow up PR
to correctly merge in all cases.
Preloaded modules would discard errors in the hope that re-fetching the script
when it was needed, might work. This reverses that decision and stores the
error state. When a preload fails, that failure sticks.
This does mean that a transient failure doesn't get a second chance.
But it also means we don't log the failure multiple times (I noticed this when
using adblocking and seeing duplicate failures for the same endpoint). Since we
don't keep trying, it cuts down the CDP flow too.
We previously supported the legacy constructors via new Image() and new Audio()
and https://github.com/lightpanda-io/browser/pull/3620 adds support for
new Option(). In most cases, that was good enough, but it wasn't quite up to
spec, e.g. new HTMLImageElement() still worked and HtMLImageElement showed up
in window.
This PR cleans it up by giving each one a distinct constructor for their legacy
function and NOT creating the default one bridge.constructor would otherwise
create.
Builds ontop of https://github.com/lightpanda-io/browser/pull/3604 to actually
use a Sanitizer across 6 apis (some of which we didn't have at all, and some
of which were incomplete). Namely setHtml and setHTMLUnsafe for Element,
ShadowRoot and Document.