fix prefers-color-scheme

This commit is contained in:
Than Ngo 2023-02-13 12:44:57 +01:00
parent b9a9d41dd6
commit f53718b47d
2 changed files with 65 additions and 5 deletions

View File

@ -0,0 +1,60 @@
Update web_instance on GTK when checking for dark mode
Adds some extra code to change the theme in the web instance when on GTK,
to fix prefers-color-scheme.
Also makes SystemDarkModeSupported return true on Linux,
since the most modern Linux distributions support it,
and Linux dark mode code doesnt detect whether or not it is supported.
This function seems to only be used in telemetry, so maybe it doesnt
need to be changed.
Bug: 998903
Change-Id: I02a084d9f733b01c8e6ad0f5ca5f1ebcfb16d475
diff --git a/AUTHORS b/AUTHORS
index 758d0bf..8c91146 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -735,6 +735,7 @@
Leith Bade <leith@leithalweapon.geek.nz>
Lei Gao <leigao@huawei.com>
Lei Li <lli.kernel.kvm@gmail.com>
+Lena Wildervanck <lena.wildervanck@gmail.com>
Lenny Khazan <lenny.khazan@gmail.com>
Leo Wolf <jclw@ymail.com>
Leon Han <leon.han@intel.com>
diff --git a/ui/gtk/native_theme_gtk.cc b/ui/gtk/native_theme_gtk.cc
index a60d6e3..1200a80 100644
--- a/ui/gtk/native_theme_gtk.cc
+++ b/ui/gtk/native_theme_gtk.cc
@@ -165,6 +165,14 @@
UserHasContrastPreference()
? ui::NativeThemeBase::PreferredContrast::kMore
: ui::NativeThemeBase::PreferredContrast::kNoPreference);
+
+ // Update the web instance too to fix prefers-color-theme
+ NativeTheme* web_instance = NativeTheme::GetInstanceForWeb();
+ web_instance->set_use_dark_colors(ShouldUseDarkColors());
+ web_instance->set_preferred_color_scheme(CalculatePreferredColorScheme());
+ web_instance->SetPreferredContrast(CalculatePreferredContrast());
+ web_instance->NotifyOnNativeThemeUpdated();
+
native_theme->NotifyOnNativeThemeUpdated();
}
diff --git a/ui/native_theme/native_theme.cc b/ui/native_theme/native_theme.cc
index 835fa36..feec109 100644
--- a/ui/native_theme/native_theme.cc
+++ b/ui/native_theme/native_theme.cc
@@ -36,7 +36,11 @@
#if !BUILDFLAG(IS_WIN) && !BUILDFLAG(IS_APPLE)
// static
bool NativeTheme::SystemDarkModeSupported() {
+#if BUILDFLAG(IS_LINUX)
+ return true;
+#else
return false;
+#endif
}
#endif

View File

@ -306,6 +306,9 @@ Patch90: chromium-109-disable-GlobalMediaControlsCastStartStop.patch
# patch for using system opus
Patch91: chromium-108-system-opus.patch
# fix prefers-color-scheme
Patch92: chromium-110-gtktheme.patch
# From gentoo
Patch98: chromium-94.0.4606.71-InkDropHost-crash.patch
@ -929,6 +932,8 @@ udev.
%patch91 -p1 -b .system-opus
%endif
%patch92 -p1 -b .gtk-prefers-color-scheme
%patch98 -p1 -b .InkDropHost-crash
# Fedora branded user agent
@ -1366,8 +1371,6 @@ pushd %{builddir}
# V8 initial snapshots
# https://code.google.com/p/chromium/issues/detail?id=421063
cp -a v8_context_snapshot.bin %{buildroot}%{chromium_path}
cp -a xdg-mime xdg-settings %{buildroot}%{chromium_path}
cp -a MEIPreload %{buildroot}%{chromium_path}
# This is ANGLE, not to be confused with the similarly named files under swiftshader/
cp -a libEGL.so libGLESv2.so %{buildroot}%{chromium_path}
@ -1545,10 +1548,7 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt
%{chromium_path}/%{chromium_browser_channel}.sh
%{chromium_path}/libEGL.so*
%{chromium_path}/libGLESv2.so*
%{chromium_path}/MEIPreload/
%attr(4755, root, root) %{chromium_path}/chrome-sandbox
%{chromium_path}/xdg-mime
%{chromium_path}/xdg-settings
%if %{use_qt}
%{chromium_path}/libqt5_shim.so
%endif