renderer‑main entry to Blink’s lifecycle.
This is where a compositor BeginFrame (coming in via content/public and mojo plumbing) first turns into Blink work on the renderer main thread. It receives the frame tick, decides what lifecycle phases to run (e.g. style/layout/paint), and pushes the work into the local root’s LocalFrameView. (Chromium Git Repositories)
Key fields (why they matter)
* scoped_refptr root_layer_ — holds the Blink‑owned root cc layer for this widget’s subtree; exists so Blink can update properties before the commit boundary. (Chromium Git Repositories)
* std::unique_ptr animation_host_ — lets main‑thread animations be driven and ticked in sync with lifecycle updates. (Chromium Git Repositories)
* std::unique_ptr layer_tree_view_ — the view side of the compositor connection that WebFrameWidgetImpl closes/tears down when the widget goes away. (Chromium Git Repositories)
Most important methods (how they advance the pixel)
* void BeginMainFrame(base::TimeTicks last_frame_time) — entry point for a new main‑thread frame; schedules lifecycle phase execution in Blink. (Chromium Git Repositories)
* void UpdateLifecycle(WebLifecycleUpdate requested_update, DocumentUpdateReason reason) — runs the Blink lifecycle (style → layout → pre‑paint/paint) as needed for this frame. (Chromium Git Repositories)
* void RecordEndOfFrameMetrics(base::TimeTicks frame_begin_time) — stamps timing for UMA/UKM; not directly pixel‑producing but tied to the same lifecycle boundary. (Chromium Git Repositories)
Hands off to: LocalFrameView of the local root to perform style/layout/paint.