[LayoutNG] Fix NGInlineNode::MarkLineBoxesDirty

This patch fixes MarkLineBoxesDirty to mark correctly when:
1. The changed node has a parent inline box, and
2. is the first child of the parent, and
3. the parent has box fragment (not culled,) and
4. the parent wraps to multiple lines.

e.g.,
<span id="parent" style="background: yellow">
  <span id="changed"></span>
  <br>
  text
</span>

In this case, the old code marks the line box that contains
the last fragment of #parent because #parent is "previous"
of #changed in the pre-order DFS. The marked line box is the
one after #changed, and thus we try to reuse changed line.

This issue was found by a WIP to apply reusing line boxes in
more cases. From the stack, this looks the same as
crbug.com/900898.

Bug: 636993, 900898
Change-Id: I43d1d8150bfff7e1d9a6572be5a235cbe937caac
Reviewed-on: https://chromium-review.googlesource.com/c/1314086
Commit-Queue: Koji Ishii <kojii@chromium.org>
Reviewed-by: Emil A Eklund <eae@chromium.org>
Cr-Commit-Position: refs/heads/master@{#605422}
4 files changed