-
Morten Stenshorne authored
Floats and out-of-flow objects need to be true layout siblings of the inlines, or rendering will be wrong. This means that such objects should never be siblings of anonymous blocks, but rather inside them. This already works correctly for initial layout tree building, and also for many DOM manipulations. However, code was missing to satisfy this requirement if we removed a regular block that was a sibling of an anonymous block and either a float or out-of-flow positioned object. This even caused a crash triggered by ruby code, which ended up mixing inline and block children within the same container. That is not allowed. This happened in the MoveAllChildrenIncludingFloatsTo() call inside LayoutRubyBase::MoveBlockChildren(). Added a DCHECK to MoveAllChildrenIncludingFloatsTo() (which could fail prior to this fix); When moving children from one container to another, either both or none of the containers must have inline children. This is a reland of https://chromium-review.googlesource.com/1102690 with some modifications to avoid bug 853552. Bug: 852640 Change-Id: I0f8a0aa5523e8fe60c841164d25aad088f4b728f Reviewed-on: https://chromium-review.googlesource.com/1104900 Commit-Queue: Morten Stenshorne <mstensho@chromium.org> Commit-Queue: Emil A Eklund <eae@chromium.org> Reviewed-by:
Emil A Eklund <eae@chromium.org> Cr-Commit-Position: refs/heads/master@{#568196}
b414bf17