cef/patch/patches/webkit_popups_and_background.patch
2021-04-23 11:38:51 -04:00

152 lines
7.4 KiB
Diff

diff --git third_party/blink/common/web_preferences/web_preferences.cc third_party/blink/common/web_preferences/web_preferences.cc
index 1363ee73abdfb..dca6c5b9bf66f 100644
--- third_party/blink/common/web_preferences/web_preferences.cc
+++ third_party/blink/common/web_preferences/web_preferences.cc
@@ -153,6 +153,7 @@ WebPreferences::WebPreferences()
animation_policy(
blink::mojom::ImageAnimationPolicy::kImageAnimationPolicyAllowed),
user_gesture_required_for_presentation(true),
+ base_background_color(0xFFFFFFFF), // Color::kWhite
text_tracks_enabled(false),
text_track_margin_percentage(0.0f),
immersive_mode_enabled(false),
diff --git third_party/blink/common/web_preferences/web_preferences_mojom_traits.cc third_party/blink/common/web_preferences/web_preferences_mojom_traits.cc
index 7fa49dd367b28..af16c09d0b85f 100644
--- third_party/blink/common/web_preferences/web_preferences_mojom_traits.cc
+++ third_party/blink/common/web_preferences/web_preferences_mojom_traits.cc
@@ -159,6 +159,7 @@ bool StructTraits<blink::mojom::WebPreferencesDataView,
data.accelerated_video_decode_enabled();
out->user_gesture_required_for_presentation =
data.user_gesture_required_for_presentation();
+ out->base_background_color = data.base_background_color();
out->text_tracks_enabled = data.text_tracks_enabled();
out->text_track_margin_percentage = data.text_track_margin_percentage();
out->immersive_mode_enabled = data.immersive_mode_enabled();
diff --git third_party/blink/public/common/web_preferences/web_preferences.h third_party/blink/public/common/web_preferences/web_preferences.h
index c457698eba5dc..5e1e6b80cee3c 100644
--- third_party/blink/public/common/web_preferences/web_preferences.h
+++ third_party/blink/public/common/web_preferences/web_preferences.h
@@ -177,6 +177,8 @@ struct BLINK_COMMON_EXPORT WebPreferences {
bool user_gesture_required_for_presentation;
+ uint32_t base_background_color;
+
bool text_tracks_enabled;
// These fields specify the foreground and background color for WebVTT text
diff --git third_party/blink/public/common/web_preferences/web_preferences_mojom_traits.h third_party/blink/public/common/web_preferences/web_preferences_mojom_traits.h
index e35980e72f5d7..92f222bb29d06 100644
--- third_party/blink/public/common/web_preferences/web_preferences_mojom_traits.h
+++ third_party/blink/public/common/web_preferences/web_preferences_mojom_traits.h
@@ -465,6 +465,11 @@ struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::WebPreferencesDataView,
return r.user_gesture_required_for_presentation;
}
+ static uint32_t base_background_color(
+ const blink::web_pref::WebPreferences& r) {
+ return r.base_background_color;
+ }
+
static bool text_tracks_enabled(const blink::web_pref::WebPreferences& r) {
return r.text_tracks_enabled;
}
diff --git third_party/blink/public/mojom/webpreferences/web_preferences.mojom third_party/blink/public/mojom/webpreferences/web_preferences.mojom
index 3e2aae1d92b1c..2c0ed243eedec 100644
--- third_party/blink/public/mojom/webpreferences/web_preferences.mojom
+++ third_party/blink/public/mojom/webpreferences/web_preferences.mojom
@@ -227,6 +227,8 @@ struct WebPreferences {
bool user_gesture_required_for_presentation;
+ uint32 base_background_color;
+
bool text_tracks_enabled;
// These fields specify the foreground and background color for WebVTT text
diff --git third_party/blink/public/web/web_view.h third_party/blink/public/web/web_view.h
index 209067240ccce..55d642f88ad30 100644
--- third_party/blink/public/web/web_view.h
+++ third_party/blink/public/web/web_view.h
@@ -315,6 +315,7 @@ class WebView {
// Sets whether select popup menus should be rendered by the browser.
BLINK_EXPORT static void SetUseExternalPopupMenus(bool);
+ virtual void SetUseExternalPopupMenusThisInstance(bool) = 0;
// Cancels and hides the current popup (datetime, select...) if any.
virtual void CancelPagePopup() = 0;
diff --git third_party/blink/renderer/core/exported/web_view_impl.cc third_party/blink/renderer/core/exported/web_view_impl.cc
index f8ac3ecb711fa..eb59f73583dca 100644
--- third_party/blink/renderer/core/exported/web_view_impl.cc
+++ third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -241,8 +241,13 @@ void WebView::SetUseExternalPopupMenus(bool use_external_popup_menus) {
g_should_use_external_popup_menus = use_external_popup_menus;
}
-bool WebViewImpl::UseExternalPopupMenus() {
- return g_should_use_external_popup_menus;
+void WebViewImpl::SetUseExternalPopupMenusThisInstance(
+ bool use_external_popup_menus) {
+ should_use_external_popup_menus_ = use_external_popup_menus;
+}
+
+bool WebViewImpl::UseExternalPopupMenus() const {
+ return should_use_external_popup_menus_;
}
namespace {
@@ -551,6 +556,7 @@ WebViewImpl::WebViewImpl(
chrome_client_(MakeGarbageCollected<ChromeClientImpl>(this)),
minimum_zoom_level_(PageZoomFactorToZoomLevel(kMinimumPageZoomFactor)),
maximum_zoom_level_(PageZoomFactorToZoomLevel(kMaximumPageZoomFactor)),
+ should_use_external_popup_menus_(g_should_use_external_popup_menus),
does_composite_(does_composite),
fullscreen_controller_(std::make_unique<FullscreenController>(this)),
receiver_(this,
@@ -1769,6 +1775,8 @@ void WebView::ApplyWebPreferences(const web_pref::WebPreferences& prefs,
RuntimeEnabledFeatures::SetTranslateServiceEnabled(
prefs.translate_service_available);
+
+ web_view->SetBaseBackgroundColor(prefs.base_background_color);
}
void WebViewImpl::ThemeChanged() {
diff --git third_party/blink/renderer/core/exported/web_view_impl.h third_party/blink/renderer/core/exported/web_view_impl.h
index ace66b559cdc5..130638e2dfaba 100644
--- third_party/blink/renderer/core/exported/web_view_impl.h
+++ third_party/blink/renderer/core/exported/web_view_impl.h
@@ -128,7 +128,8 @@ class CORE_EXPORT WebViewImpl final : public WebView,
static HashSet<WebViewImpl*>& AllInstances();
// Returns true if popup menus should be rendered by the browser, false if
// they should be rendered by WebKit (which is the default).
- static bool UseExternalPopupMenus();
+ void SetUseExternalPopupMenusThisInstance(bool) override;
+ bool UseExternalPopupMenus() const;
// Returns whether frames under this WebView are backed by a compositor.
bool does_composite() const { return does_composite_; }
@@ -749,6 +750,8 @@ class CORE_EXPORT WebViewImpl final : public WebView,
float fake_page_scale_animation_page_scale_factor_ = 0.f;
bool fake_page_scale_animation_use_anchor_ = false;
+ bool should_use_external_popup_menus_;
+
float compositor_device_scale_factor_override_ = 0.f;
TransformationMatrix device_emulation_transform_;
diff --git third_party/blink/renderer/core/page/chrome_client_impl.cc third_party/blink/renderer/core/page/chrome_client_impl.cc
index 4e33591b87e15..f3381f4436024 100644
--- third_party/blink/renderer/core/page/chrome_client_impl.cc
+++ third_party/blink/renderer/core/page/chrome_client_impl.cc
@@ -811,7 +811,7 @@ bool ChromeClientImpl::HasOpenedPopup() const {
PopupMenu* ChromeClientImpl::OpenPopupMenu(LocalFrame& frame,
HTMLSelectElement& select) {
NotifyPopupOpeningObservers();
- if (WebViewImpl::UseExternalPopupMenus())
+ if (web_view_->UseExternalPopupMenus())
return MakeGarbageCollected<ExternalPopupMenu>(frame, select);
DCHECK(RuntimeEnabledFeatures::PagePopupEnabled());