[go: nahoru, domu]

[css-layout-api] Implement the guts of the javascript layout runner.

This implements the hooks from the LayoutCustom object into a web
developer defined layout class.

See: https://drafts.css-houdini.org/css-layout-api/#invoke-a-layout-callback

Currently the only useful thing this does to allow the web developer to
return an "auto" block-size, e.g.

registerLayout('foo', class {
  *intrinsicSizes() {}
  *layout() {
    return { autoBlockSize: Math.random() * 100; } // FUN!
  }
});

The engine calculates the inline-size, and adjusts the block-size for the
web developer. This is a simplification on the current API as spec'd but
we'll see what the HoudiniTF thinks of this approach.

The other large behaviour change is appropriate "fallback" handling when
something goes wrong. See "fallback" tests.

Bug: 726125
Change-Id: I08cd2e439f4321bd534a4e3f7222fbdb898e1785
Reviewed-on: https://chromium-review.googlesource.com/917423
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Christian Biesinger <cbiesinger@chromium.org>
Reviewed-by: Morten Stenshorne <mstensho@chromium.org>
Reviewed-by: Hiroki Nakagawa <nhiroki@chromium.org>
Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#537371}
24 files changed