Reland "Find-in-page per block using FindBuffer"

This reverts commit 9c484a22d01e9482be2997dea811367505556a86.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> Revert "Find-in-page per block using FindBuffer"
> 
> This reverts commit 71e551ac476ec9b247be8f19c6eb696632d90cf4.
> 
> Reason for revert: broke MHTMLGenerationTest.ViewedMHTMLContainsNoStoreContentIfNoCacheControlPolicy on win7 tests dbg: https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Win7%20Tests%20%28dbg%29%281%29/73554
> 
> [7424:304:1214/084019.035:FATAL:find_buffer.cc(27)] Check failed: start_position == PositionInFlatTree::FirstPositionInNode( *start_position.ComputeContainerNode()).
> 
> Original change's description:
> > Find-in-page per block using FindBuffer
> >
> > This CL introduces FindBuffer, which Find-in-page will use to find
> > matches instead of using FindPlainText that uses TextIterator.
> >
> > Since find-in-page matches can't span multiple blocks, we are using
> > that fact to know where we can separate the text in the document.
> > FindBuffer collects text one block at a time, and then finds the match
> > in that block. We trigger FindBuffer text collection & finding many
> > times until it goes through everything. FindInPage uses TextSearcherICU
> > to find text, and uses flat-tree traversal, ComputedStyle, and
> > LayoutObject + NGOffsetMapping, whereas the previous way was to use
> > TextIterator.
> >
> > This CL also changes the way we handle newlines - newlines will be
> > saved as object replacement character/whitespaces for Find-in-page
> > purposes. Some tests that rely on newlines are deleted as a result.
> > Note:
> > This change is not user-visible because it is not possible to do a
> > Find-in-page from the UI with newlines.
> >
> > See doc for details:
> > https://docs.google.com/document/d/1D5q7ZMrLPfilXnIGI3SOL0mwdiQC7SQEtGWk-9ysbMg/edit?usp=sharing
> >
> > Bug: 868227
> > Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng
> > Change-Id: Id5dd7e6c428f59442d02ec88ea0cec6eb4e64c22
> > Reviewed-on: https://chromium-review.googlesource.com/c/1282425
> > Commit-Queue: Rakina Zata Amni <rakina@chromium.org>
> > Reviewed-by: Elly Fong-Jones <ellyjones@chromium.org>
> > Reviewed-by: Xiaocheng Hu <xiaochengh@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#616701}
> 
> TBR=ellyjones@chromium.org,yosin@chromium.org,yoichio@chromium.org,kojii@chromium.org,xiaochengh@chromium.org,rakina@chromium.org
> 
> Change-Id: Ic06a33d1c630bb4423fc0963bc55b6af5e8ef865
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: 868227
> Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng
> Reviewed-on: https://chromium-review.googlesource.com/c/1378407
> Reviewed-by: Elly Fong-Jones <ellyjones@chromium.org>
> Reviewed-by: Hongchan Choi <hongchan@chromium.org>
> Commit-Queue: Hongchan Choi <hongchan@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#616757}

TBR=ellyjones@chromium.org,yosin@chromium.org,yoichio@chromium.org,kojii@chromium.org,hongchan@chromium.org,xiaochengh@chromium.org,rakina@chromium.org

Change-Id: Ib48618ecfb9a0daa55cd0bd86bda4744a324d5cf
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 868227
Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng
Reviewed-on: https://chromium-review.googlesource.com/c/1379086
Reviewed-by: Rakina Zata Amni <rakina@chromium.org>
Commit-Queue: Rakina Zata Amni <rakina@chromium.org>
Cr-Commit-Position: refs/heads/master@{#616898}
7 files changed