Make invisible nodes count in total matches for find-in-page

Previously, invisible nodes are skipped when doing find-in-page
because they don't have layout objects. With this change, when
find-in-page encounters invisible nodes in a block, it will calculate
the layout tree for the block including the invisible nodes, making
those nodes findable through find buffer. Invisible nodes that are
located in a different block/doesn't share the same invisible root
will not be calculated because they are not relevant. Once we have
finished finding through a block, we will remove the layout objects
for invisible nodes.

This change makes the total match count include matches that are
in invisible nodes, but since find-in-page active match highlighting
still uses  Editor::FindRangeOfString instead of FindBuffer,
this change doesn't make invisible matches navigable (e.g. highlighted
and can be scrolled to with find next/prev arrow buttons). That
functionality will be added in a different CL.

See doc for details:
https://docs.google.com/document/d/1D5q7ZMrLPfilXnIGI3SOL0mwdiQC7SQEtGWk-9ysbMg/edit?usp=sharing


Bug: 873057
Change-Id: I800747d6cf37879c238d7922ff6b9fd959b60540
Reviewed-on: https://chromium-review.googlesource.com/c/1406493
Auto-Submit: Rakina Zata Amni <rakina@chromium.org>
Reviewed-by: Rune Lillesveen <futhark@chromium.org>
Commit-Queue: Rakina Zata Amni <rakina@chromium.org>
Cr-Commit-Position: refs/heads/master@{#624369}
15 files changed