richard pushed to branch tor-browser-115.11.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
-
b4fbb624
by Pier Angelo Vendrame at 2024-05-30T08:49:54+02:00
-
73f0f817
by Pier Angelo Vendrame at 2024-05-30T08:50:18+02:00
-
3841a1fd
by Pier Angelo Vendrame at 2024-05-30T08:50:37+02:00
-
09bd48db
by Pier Angelo Vendrame at 2024-05-30T08:56:02+02:00
-
fa069b8b
by cypherpunks1 at 2024-05-30T08:56:03+02:00
5 changed files:
- gfx/thebes/gfxPlatformFontList.cpp
- layout/base/nsLayoutUtils.cpp
- layout/reftests/font-matching/reftest.list
- + layout/reftests/font-matching/system-font-rfp-ref.html
- + layout/reftests/font-matching/system-font-rfp.html
Changes:
... | ... | @@ -1973,19 +1973,17 @@ static void GetSystemUIFontFamilies(const nsPresContext* aPresContext, |
1973 | 1973 | nsFont systemFont;
|
1974 | 1974 | gfxFontStyle fontStyle;
|
1975 | 1975 | nsAutoString systemFontName;
|
1976 | - if (aPresContext && aPresContext->Document()
|
|
1977 | - ? aPresContext->Document()->ShouldResistFingerprinting(
|
|
1978 | - RFPTarget::Unknown)
|
|
1979 | - : nsContentUtils::ShouldResistFingerprinting(
|
|
1980 | - "aPresContext not available", RFPTarget::Unknown)) {
|
|
1981 | -#ifdef XP_MACOSX
|
|
1976 | + if (aPresContext ? aPresContext->Document()->ShouldResistFingerprinting(
|
|
1977 | + RFPTarget::Unknown)
|
|
1978 | + : nsContentUtils::ShouldResistFingerprinting(
|
|
1979 | + "aPresContext not available", RFPTarget::Unknown)) {
|
|
1980 | +#if defined(XP_MACOSX) || defined(MOZ_WIDGET_UIKIT)
|
|
1982 | 1981 | *aFamilies.AppendElement() = "-apple-system"_ns;
|
1983 | 1982 | return;
|
1984 | 1983 | #elif !defined(MOZ_WIDGET_ANDROID)
|
1985 | 1984 | *aFamilies.AppendElement() = "sans-serif"_ns;
|
1986 | 1985 | return;
|
1987 | 1986 | #endif
|
1988 | - // Android uses already fixed fonts.
|
|
1989 | 1987 | }
|
1990 | 1988 | if (!LookAndFeel::GetFont(StyleSystemFont::Menu, systemFontName, fontStyle)) {
|
1991 | 1989 | return;
|
... | ... | @@ -9680,7 +9680,7 @@ already_AddRefed<nsFontMetrics> nsLayoutUtils::GetMetricsFor( |
9680 | 9680 | |
9681 | 9681 | static void GetSpoofedSystemFontForRFP(LookAndFeel::FontID aFontID,
|
9682 | 9682 | gfxFontStyle& aStyle, nsAString& aName) {
|
9683 | -#if defined(XP_MACOSX)
|
|
9683 | +#if defined(XP_MACOSX) || defined(MOZ_WIDGET_UIKIT)
|
|
9684 | 9684 | aName = u"-apple-system"_ns;
|
9685 | 9685 | // Values taken from a macOS 10.15 system.
|
9686 | 9686 | switch (aFontID) {
|
... | ... | @@ -9690,7 +9690,8 @@ static void GetSpoofedSystemFontForRFP(LookAndFeel::FontID aFontID, |
9690 | 9690 | break;
|
9691 | 9691 | case LookAndFeel::FontID::SmallCaption:
|
9692 | 9692 | aStyle.weight = gfxFontStyle::FontWeight::BOLD;
|
9693 | - // fall-through
|
|
9693 | + // fall-through for font-size
|
|
9694 | + [[fallthrough]];
|
|
9694 | 9695 | case LookAndFeel::FontID::MessageBox:
|
9695 | 9696 | case LookAndFeel::FontID::StatusBar:
|
9696 | 9697 | aStyle.size = 11;
|
... | ... | @@ -9704,14 +9705,13 @@ static void GetSpoofedSystemFontForRFP(LookAndFeel::FontID aFontID, |
9704 | 9705 | // languages, so we fallback to sans-serif to fall back to the user's
|
9705 | 9706 | // default sans-serif. Size is 12px for all system fonts (tried in an en-US
|
9706 | 9707 | // system).
|
9707 | - // Several Android systems reported Roboto 12px, so similar to what Windows
|
|
9708 | - // does.
|
|
9709 | 9708 | aName = u"sans-serif"_ns;
|
9710 | 9709 | aStyle.size = 12;
|
9711 | 9710 | #elif defined(MOZ_WIDGET_ANDROID)
|
9711 | + // Keep consistency with nsLookAndFeel::NativeGetFont.
|
|
9712 | 9712 | aName = u"Roboto"_ns;
|
9713 | 9713 | aStyle.size = 12;
|
9714 | -#else
|
|
9714 | +#elif defined(MOZ_WIDGET_GTK)
|
|
9715 | 9715 | // On Linux, there is not a default. For example, GNOME on Debian uses
|
9716 | 9716 | // Cantarell, 14.667px. Ubuntu Mate uses the Ubuntu font, but also 14.667px.
|
9717 | 9717 | // Fedora with KDE uses Noto Sans, 13.3333px, but it uses Noto Sans on
|
... | ... | @@ -9721,6 +9721,8 @@ static void GetSpoofedSystemFontForRFP(LookAndFeel::FontID aFontID, |
9721 | 9721 | // UI font-size.
|
9722 | 9722 | aName = u"sans-serif"_ns;
|
9723 | 9723 | aStyle.size = 15;
|
9724 | +#else
|
|
9725 | +# error "Unknown platform"
|
|
9724 | 9726 | #endif
|
9725 | 9727 | }
|
9726 | 9728 |
... | ... | @@ -195,3 +195,6 @@ pref(ui.font.menu,"serif") test-pref(ui.font.menu.weight,"800") != system-font-p |
195 | 195 | |
196 | 196 | # Reset default prefs.
|
197 | 197 | defaults
|
198 | + |
|
199 | +# Bug 1787790 - Normalize system fonts when using RFP
|
|
200 | +test-pref(privacy.resistFingerprinting,true) == system-font-rfp.html system-font-rfp-ref.html |
1 | +<!DOCTYPE html>
|
|
2 | +<meta charset="utf-8">
|
|
3 | +<style>
|
|
4 | +body {
|
|
5 | + font-family: -apple-system, sans-serif;
|
|
6 | + font-size: 12px;
|
|
7 | +}
|
|
8 | + |
|
9 | +.android {
|
|
10 | + font-family: Roboto;
|
|
11 | +}
|
|
12 | + |
|
13 | +.linux {
|
|
14 | + font-size: 15px;
|
|
15 | +}
|
|
16 | + |
|
17 | +.mac {
|
|
18 | + .caption, .menu {
|
|
19 | + font-size: 13px;
|
|
20 | + }
|
|
21 | + .message-box, .status-bar {
|
|
22 | + font-size: 11px;
|
|
23 | + }
|
|
24 | + .small-caption {
|
|
25 | + font-size: 11px;
|
|
26 | + font-weight: 700;
|
|
27 | + }
|
|
28 | +}
|
|
29 | +</style>
|
|
30 | +<div class="caption">Caption</div>
|
|
31 | +<div class="icon">Icon</div>
|
|
32 | +<div class="menu">Menu</div>
|
|
33 | +<div class="message-box">Message box</div>
|
|
34 | +<div class="small-caption">Small caption</div>
|
|
35 | +<div class="status-bar">Status bar</div>
|
|
36 | +<script>
|
|
37 | +if (navigator.platform.startsWith("Mac")) {
|
|
38 | + document.querySelector("body").className = "mac";
|
|
39 | +} else if (navigator.userAgent.includes("Android")) {
|
|
40 | + document.querySelector("body").className = "android";
|
|
41 | +} else if (navigator.platform.startsWith("Linux")) {
|
|
42 | + document.querySelector("body").className = "linux";
|
|
43 | +}
|
|
44 | +</script> |
1 | +<!DOCTYPE html>
|
|
2 | +<meta charset="utf-8">
|
|
3 | +<div style="font: caption">Caption</div>
|
|
4 | +<div style="font: icon">Icon</div>
|
|
5 | +<div style="font: menu">Menu</div>
|
|
6 | +<div style="font: message-box">Message box</div>
|
|
7 | +<div style="font: small-caption">Small caption</div>
|
|
8 | +<div style="font: status-bar">Status bar</div> |