From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Samuel Attard Date: Mon, 8 Mar 2021 16:27:39 -0800 Subject: extend ApplyWebPreferences with Electron-specific logic background_color can be updated at runtime, as such we need to apply the new background color to the WebView in the ApplyPreferences method. There is no current way to attach an observer to these prefs so patching is our only option. Ideally we could add an embedder observer pattern here but that can be done in future work. diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc index ac730780c3f643b7131b742bd8fb6fd34aae0d9b..4db50c1dc41b4b0bec636f885a1fad6a11c0b5b7 100644 --- a/third_party/blink/renderer/core/exported/web_view_impl.cc +++ b/third_party/blink/renderer/core/exported/web_view_impl.cc @@ -155,6 +155,7 @@ #include "third_party/blink/renderer/core/timing/dom_window_performance.h" #include "third_party/blink/renderer/core/timing/window_performance.h" #include "third_party/blink/renderer/platform/fonts/font_cache.h" +#include "third_party/blink/renderer/platform/graphics/color.h" #include "third_party/blink/renderer/platform/graphics/image.h" #include "third_party/blink/renderer/platform/graphics/paint/cull_rect.h" #include "third_party/blink/renderer/platform/graphics/paint/paint_record_builder.h" @@ -1788,6 +1789,16 @@ void WebView::ApplyWebPreferences(const web_pref::WebPreferences& prefs, RuntimeEnabledFeatures::SetTranslateServiceEnabled( prefs.translate_service_available); + + SkColor color = SK_ColorTRANSPARENT; + if (!prefs.guest_instance_id) { // not inside electron tag, which is always transparent. + Color blink_color; + if (blink_color.SetFromString(WebString::FromASCII(prefs.background_color))) + color = static_cast(blink_color); + } + web_view->SetBaseBackgroundColor(color); + + SetUseExternalPopupMenus(!prefs.offscreen); } void WebViewImpl::ThemeChanged() {