fix: ensure child window transparency works (#28054)
* fix: ensure child window transparency works Windows opened via window.open and intecepted via setWindowOpenHandler or the `new-window` event should (a) have the correct background color and (b) that background color should be transparent if specified. The changes in api_web_contents fix (a) and the changes in web_contents_preferences fix (b). Notes: Child windows with specified background colors or transpency now work as intended * fix: set background_color in blink prefs apply logic * chore: update for PR comments
This commit is contained in:
parent
102a3740ea
commit
089ac8180f
6 changed files with 59 additions and 17 deletions
|
@ -108,3 +108,4 @@ add_trustedauthclient_to_urlloaderfactory.patch
|
|||
fix_route_mouse_event_navigations_through_the_web_contents_delegate.patch
|
||||
disable_unload_metrics.patch
|
||||
fix_add_check_for_sandbox_then_result.patch
|
||||
moves_background_color_setter_of_webview_to_blinks_webprefs_logic.patch
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Samuel Attard <sattard@slack-corp.com>
|
||||
Date: Mon, 8 Mar 2021 16:27:39 -0800
|
||||
Subject: moves background_color setter of WebView to blinks webprefs 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 fb994344ea53e17df84f176ad7d8722793b72cfd..fb3d42378d1ec2611c3c2055f96380e3a9873847 100644
|
||||
--- a/third_party/blink/renderer/core/exported/web_view_impl.cc
|
||||
+++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
|
||||
@@ -154,6 +154,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"
|
||||
@@ -1763,6 +1764,14 @@ 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 <webview /> tag, which is always transparent.
|
||||
+ Color blink_color;
|
||||
+ if (blink_color.SetFromString(WebString::FromASCII(prefs.background_color)))
|
||||
+ color = static_cast<SkColor>(blink_color);
|
||||
+ }
|
||||
+ web_view->SetBaseBackgroundColor(color);
|
||||
}
|
||||
|
||||
void WebViewImpl::ThemeChanged() {
|
Loading…
Add table
Add a link
Reference in a new issue