From 89bf71e580ca06cc7c17f0eaace65e0f787399cf Mon Sep 17 00:00:00 2001 From: Andy Dill Date: Sun, 14 Oct 2018 10:59:47 -0700 Subject: [PATCH] fix: preserve background color through reload (#15105) * fix: preserve background color through reload * fix: only set backgroundColor on top-level frames --- atom/renderer/renderer_client_base.cc | 28 +++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/atom/renderer/renderer_client_base.cc b/atom/renderer/renderer_client_base.cc index 19853096387b..eb35f78349d1 100644 --- a/atom/renderer/renderer_client_base.cc +++ b/atom/renderer/renderer_client_base.cc @@ -200,22 +200,26 @@ void RendererClientBase::RenderFrameCreated( blink::WebSecurityPolicy::AddOriginAccessWhitelistEntry( GURL(kPdfViewerUIOrigin), "file", "", true); #endif // BUILDFLAG(ENABLE_PDF_VIEWER) + + content::RenderView* render_view = render_frame->GetRenderView(); + if (render_frame->IsMainFrame() && render_view) { + blink::WebFrameWidget* web_frame_widget = render_view->GetWebFrameWidget(); + if (web_frame_widget) { + base::CommandLine* cmd = base::CommandLine::ForCurrentProcess(); + if (cmd->HasSwitch(switches::kGuestInstanceID)) { // webview. + web_frame_widget->SetBaseBackgroundColor(SK_ColorTRANSPARENT); + } else { // normal window. + std::string name = cmd->GetSwitchValueASCII(switches::kBackgroundColor); + SkColor color = + name.empty() ? SK_ColorTRANSPARENT : ParseHexColor(name); + web_frame_widget->SetBaseBackgroundColor(color); + } + } + } } void RendererClientBase::RenderViewCreated(content::RenderView* render_view) { new AtomRenderViewObserver(render_view); - blink::WebFrameWidget* web_frame_widget = render_view->GetWebFrameWidget(); - if (!web_frame_widget) - return; - - base::CommandLine* cmd = base::CommandLine::ForCurrentProcess(); - if (cmd->HasSwitch(switches::kGuestInstanceID)) { // webview. - web_frame_widget->SetBaseBackgroundColor(SK_ColorTRANSPARENT); - } else { // normal window. - std::string name = cmd->GetSwitchValueASCII(switches::kBackgroundColor); - SkColor color = name.empty() ? SK_ColorTRANSPARENT : ParseHexColor(name); - web_frame_widget->SetBaseBackgroundColor(color); - } } void RendererClientBase::DidClearWindowObject(