[LayoutNG] Add |PostLayoutChildren()|

This patch adds |PostLayoutChildren()|, and use it for the
fix made at r661990 (crrev.com/c/1621796).

When subtree layout occurs, ancestors of the subtree root may
keep the reference to the old fragments. The new collection
|PostLayoutChildren()| returns the latest fragments.

Changing all uses of |Children()| to this does not work:
1. Some callers expect fragments being built during the
   layout, not the latest post-layout. Simply replacing
   breaks such callers.
2. This collection is not as fast as I wish it to be.
   Need to optimize/cache |IsRelayoutBoundary()| before
   using this in more performance critical work.
3. The best way to handle this situation isn't clear yet.
   Instead of this on-the-fly replacement, we may want to
   find all refences and patch them, as we tried in
   crrev.com/c/1622907. Maybe we need to support more
   generations. This is an architectual decision to be
   discussed more.

This addition makes it easier to apply to other places if
needed, and makes merging easier if we need to after the
branch point, but where to apply is in future investigation.

Bug: 965639
Change-Id: Idd4b539e88465cf0b810ae249fdcb87c0b19ae45
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1624010
Reviewed-by: Aleks Totic <atotic@chromium.org>
Reviewed-by: Emil A Eklund <eae@chromium.org>
Reviewed-by: Yoshifumi Inoue <yosin@chromium.org>
Commit-Queue: Koji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/master@{#662988}
5 files changed