[LayoutNG] Fix |ComputeMinMaxSize| not to clear |NeedsLayout|

This patch fixes |ComputeMinMaxSize| not to clear |NeedsLayout|
when all of following conditions are met:
1. Needs |MinMaxSize|
2. Is an orthogonal flow root.
3. Is legacy layout.
4. Change is applied that dirties the layout.

In this case, |NGBlockNode::ComputeMinMaxSize()| calls
|Layout()|, which goes to |RunLegacyLayout()|, which calls
|LayoutObject::LayoutIfNeeded()|. However, its constraint
space is intermediate that it does not update
|CachedLayoutResult|.

Then when laying it out, because |NeedsLayout()| is cleared,
existing out-of-date |CachedLayoutResult| is used.

This patch fixes:
1. Not to pre-layout orthogonal roots if it has
   |CachedLayoutResult|.
2. Set |NeedsLayout()| if |RunLegacyLayout()| clears it, but
   |CachedLayoutResult| was not updated.

Bug: 976859
Change-Id: Ic2d979a3c4f9479040bfd0e54cf4283b60ed52b5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1670146
Reviewed-by: Christian Biesinger <cbiesinger@chromium.org>
Reviewed-by: Emil A Eklund <eae@chromium.org>
Commit-Queue: Emil A Eklund <eae@chromium.org>
Cr-Commit-Position: refs/heads/master@{#671460}
3 files changed