When running headless Chrome HeadlessWebContentsImpl provides signal to trigger BeginFrame messages. This signal is routed through the following callstack:
HeadlessWebContentsImpl::BeginFrame()
Compositor::IssueExternalBeginFrame()
GpuProcessTransportFactory::IssueExternalBeginFrame()
ExternalBeginFrameController::IssueExternalBeginFrame()
ExternalBeginFrameSource::OnBeginFrame()
When running with --enable-viz the ExternalBeginFrameSource will be located in the GPU process so HeadlessWebContentsImpl can't trigger it directly. It's possible to send the signal over IPC to the GPU, but that will introduce some extra delay.
The headless BeginFrame signal is also closely linked to saving a screenshot, so this could add more requirements.
Comment 1 by kylec...@chromium.org
, Nov 16 2017