fix: set WebContents background color ubiquitously #27592 (#27593)

Move it from LoadURL to RenderViewCreated which is present
in all window creation cases and is called early enough to be
relevant from user prespective and after RenderWidgetHostView
is already present.
This commit is contained in:
marekharanczyk 2021-02-10 21:03:48 +01:00 committed by GitHub
parent 68d9adb388
commit 87064e5b5e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1361,6 +1361,19 @@ void WebContents::BeforeUnloadFired(bool proceed,
void WebContents::RenderViewCreated(content::RenderViewHost* render_view_host) {
if (!background_throttling_)
render_view_host->SetSchedulerThrottling(false);
// Set the background color of RenderWidgetHostView.
auto* const view = web_contents()->GetRenderWidgetHostView();
auto* web_preferences = WebContentsPreferences::From(web_contents());
if (view && web_preferences) {
std::string color_name;
if (web_preferences->GetPreference(options::kBackgroundColor,
&color_name)) {
view->SetBackgroundColor(ParseHexColor(color_name));
} else {
view->SetBackgroundColor(SK_ColorTRANSPARENT);
}
}
}
void WebContents::RenderFrameCreated(
@ -1994,21 +2007,6 @@ void WebContents::LoadURL(const GURL& url,
// Required to make beforeunload handler work.
NotifyUserActivation();
// Set the background color of RenderWidgetHostView.
// We have to call it right after LoadURL because the RenderViewHost is only
// created after loading a page.
auto* const view = weak_this->web_contents()->GetRenderWidgetHostView();
if (view) {
auto* web_preferences = WebContentsPreferences::From(web_contents());
std::string color_name;
if (web_preferences->GetPreference(options::kBackgroundColor,
&color_name)) {
view->SetBackgroundColor(ParseHexColor(color_name));
} else {
view->SetBackgroundColor(SK_ColorTRANSPARENT);
}
}
}
void WebContents::DownloadURL(const GURL& url) {