summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-10-21 11:49:59 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-10-21 14:10:47 +0200
commite23696665cf6e9e7ac848d2125995bae8948e909 (patch)
tree58c3f6f5a0827ba0fbc3b91554c01fe17e87a36c
parent43f26916a5716ddcd2270c513f15a62b183929bb (diff)
Follow theme settings like Chrome does
Set Blink-settings based on Chromium theme settings to match Chrome defaults. Change-Id: I02975c319644583166ed3c5a0eae02975d7b14f1 Fixes: QTBUG-79347 Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
-rw-r--r--src/core/web_engine_settings.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/core/web_engine_settings.cpp b/src/core/web_engine_settings.cpp
index 9bc1279ba..49006ec20 100644
--- a/src/core/web_engine_settings.cpp
+++ b/src/core/web_engine_settings.cpp
@@ -53,7 +53,9 @@
#include "content/public/common/webrtc_ip_handling_policy.h"
#include "media/base/media_switches.h"
#include "third_party/blink/public/mojom/renderer_preferences.mojom.h"
+#include "ui/base/ui_base_switches.h"
#include "ui/events/event_switches.h"
+#include "ui/native_theme/native_theme.h"
#include <QFont>
#include <QTimer>
@@ -399,6 +401,50 @@ void WebEngineSettings::applySettingsToWebPreferences(content::WebPreferences *p
prefs->minimum_font_size = fontSize(MinimumFontSize);
prefs->minimum_logical_font_size = fontSize(MinimumLogicalFontSize);
prefs->default_encoding = defaultTextEncoding().toStdString();
+
+ // Set the theme colors. Based on chrome_content_browser_client.cc:
+ const ui::NativeTheme *webTheme = ui::NativeTheme::GetInstanceForWeb();
+ if (webTheme) {
+#if !defined(OS_MACOSX)
+ // Mac has a concept of high contrast that does not relate to forced colors.
+ prefs->forced_colors = webTheme->UsesHighContrastColors()
+ ? blink::ForcedColors::kActive
+ : blink::ForcedColors::kNone;
+#endif // !defined(OS_MACOSX)
+ switch (webTheme->GetPreferredColorScheme()) {
+ case ui::NativeTheme::PreferredColorScheme::kDark:
+ prefs->preferred_color_scheme = blink::PreferredColorScheme::kDark;
+ break;
+ case ui::NativeTheme::PreferredColorScheme::kLight:
+ prefs->preferred_color_scheme = blink::PreferredColorScheme::kLight;
+ break;
+ case ui::NativeTheme::PreferredColorScheme::kNoPreference:
+ prefs->preferred_color_scheme = blink::PreferredColorScheme::kNoPreference;
+ }
+ }
+
+ // Apply native CaptionStyle parameters.
+ base::Optional<ui::CaptionStyle> style;
+ if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kForceCaptionStyle)) {
+ style = ui::CaptionStyle::FromSpec(
+ base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(switches::kForceCaptionStyle));
+ }
+
+ // Apply system caption style.
+ if (!style && webTheme)
+ style = webTheme->GetSystemCaptionStyle();
+
+ if (style) {
+ prefs->text_track_background_color = style->background_color;
+ prefs->text_track_text_color = style->text_color;
+ prefs->text_track_text_size = style->text_size;
+ prefs->text_track_text_shadow = style->text_shadow;
+ prefs->text_track_font_family = style->font_family;
+ prefs->text_track_font_variant = style->font_variant;
+ prefs->text_track_window_color = style->window_color;
+ prefs->text_track_window_padding = style->window_padding;
+ prefs->text_track_window_radius = style->window_radius;
+ }
}
bool WebEngineSettings::applySettingsToRendererPreferences(blink::mojom::RendererPreferences *prefs)