blink::WebFrameWidgetImpl
from Blink286 Hosted by Free Debreuil
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.
Embed this episode
No transcript yet.