[FlexNG] Fix %-relpos for a grandchild of a flexbox.
When we resolve %-based offsets for a relative position child, if its parent is a flex-item we'll read the constraint-space used to generate this fragment, and resolve the %-based offset using that block-size. I.e. https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/core/layout/layout_box.cc;l=4521;drc=3f50460dcc4c426eb876cd0a1d2838eb35472e18?originalUrl=https:%2F%2Fcs.chromium.org%2F However flex can have two passes, one without a fixed block-size, and one with. If we can determine ahead of time that these would result in the same fragment we'll hit the cache, but the constraint space would be the one without the fixed block-size. In other words, if a flex-item remained the same size between the measure, and layout passes, a relative position grandchild would resolve its %-based offsets incorrectly. This patch introduces *some* logic from another patch current WIP: https://chromium-review.googlesource.com/c/chromium/src/+/2214608 which got reverted for unrelated reasons. Effectively if we have a %-based grandchild like this, we'll miss the cache, meaning that when we later read the constraint space fixed block-size, it'll resolve against the correct size. Bug: 1106074 Change-Id: I5003e4c0903bda408c45f8fb608ad4106c8f22b0 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2302231 Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org> Reviewed-by:David Grogan <dgrogan@chromium.org> Cr-Commit-Position: refs/heads/master@{#789058}
Showing
Please register or sign in to comment