IntersectionObserver] Reland: Run algorithm in a post-lifecycle step

Relanding after revert:

https://chromium-review.googlesource.com/c/chromium/src/+/1475488

The flakiness should be fixed by:

https://chromium-review.googlesource.com/c/chromium/src/+/1478944

BUG=933694
[email protected],[email protected],[email protected],[email protected],[email protected]

Change-Id: Ic91811caaaa626a077157950d7cf4917f8d5f923
Reviewed-on: https://chromium-review.googlesource.com/c/1479930
Reviewed-by: Stefan Zager <[email protected]>
Commit-Queue: Stefan Zager <[email protected]>
Cr-Commit-Position: refs/heads/master@{#633943}
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 1c27abb..43b44e5 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -1102,6 +1102,12 @@
   GetWebWidget()->BeginFrame(frame_time, record_main_frame_metrics);
 }
 
+void RenderWidget::DidBeginMainFrame() {
+  if (!GetWebWidget())
+    return;
+  GetWebWidget()->DidBeginFrame();
+}
+
 void RenderWidget::RequestNewLayerTreeFrameSink(
     LayerTreeFrameSinkCallback callback) {
   // For widgets that are never visible, we don't start the compositor, so we