I think I've tracked the problem down. The HTTP request for the html file dies in CefLoadHandler::OnLoadError() with ERR_FAILED if I have the following code:
void CMyCefRenderProcessHandler::OnContextCreated(
CefRefPtr<CefBrowser> pBrowser,
CefRefPtr<CefFrame> pFrame,
CefRefPtr<CefV8Context> pContext) /*override*/
{
CEF_REQUIRE_RENDERER_THREAD();
pBrowser->GetMainFrame()->GetURL();
}
Adding an if (pBrowser->GetMainFrame()) check before the GetURL() call fixes the problem.
It looks pBrowser->GetMainFrame() can be nullptr, or is more often nullptr, in CEF 79. I didn't see that with CEF 77.