It appears that the transparency is set to the incorrect view during some cases where the RenderFrameHostManager creates a pending render frame host. To fix the issue I made the following change:
web_contents_view_osr.cc
- Code: Select all
void CefWebContentsViewOSR::RenderViewCreated(content::RenderViewHost* host) {
if (host && host->GetWidget() && host->GetWidget()->GetView())
{
CefRenderWidgetHostViewOSR* PasedInView =
static_cast<CefRenderWidgetHostViewOSR*>(host->GetWidget()->GetView());
if (PasedInView)
{
PasedInView->InstallTransparency();
}
}
// Old code that will use the current RenderViewHost, not the pending/created one
//CefRenderWidgetHostViewOSR* view = GetView();
//if (view)
// view->InstallTransparency();
}
Is there a reason this function was not using the passed in host param before? Also, before finding this issue, I have been seeing and working around a number of issues revolving around this type of navigation. Looking back, I'm starting to wonder if there are other Pending vs Current frame host issues lurking about.