diff options
Diffstat (limited to 'devel/electron7/files/patch-base_test_fontconfig__util__linux.cc')
-rw-r--r-- | devel/electron7/files/patch-base_test_fontconfig__util__linux.cc | 408 |
1 files changed, 0 insertions, 408 deletions
diff --git a/devel/electron7/files/patch-base_test_fontconfig__util__linux.cc b/devel/electron7/files/patch-base_test_fontconfig__util__linux.cc deleted file mode 100644 index 1fccc0ad2475..000000000000 --- a/devel/electron7/files/patch-base_test_fontconfig__util__linux.cc +++ /dev/null @@ -1,408 +0,0 @@ ---- base/test/fontconfig_util_linux.cc.orig 2019-12-12 12:38:59 UTC -+++ base/test/fontconfig_util_linux.cc -@@ -6,24 +6,397 @@ - - #include <fontconfig/fontconfig.h> - --#include <memory> -- - #include "base/base_paths.h" - #include "base/environment.h" - #include "base/files/file_path.h" -+#include "base/files/file_util.h" - #include "base/logging.h" -+#include "base/macros.h" - #include "base/path_service.h" -+#include "base/strings/string_util.h" - - namespace base { - -+namespace { -+ -+const char kFontsConfTemplate[] = R"(<?xml version="1.0"?> -+<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> -+<fontconfig> -+ -+ <!-- Cache location. --> -+ <cachedir>$1</cachedir> -+ -+ <!-- GCS-synced fonts. --> -+ <dir>$2</dir> -+ -+ <!-- Default properties. --> -+ <match target="font"> -+ <edit name="embeddedbitmap" mode="append_last"> -+ <bool>false</bool> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>Times</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Tinos</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>sans</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>DejaVu Sans</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>sans serif</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Arimo</string> -+ </edit> -+ </match> -+ -+ <!-- Some layout tests specify Helvetica as a family and we need to make sure -+ that we don't fallback to Tinos for them --> -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>Helvetica</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Arimo</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>sans-serif</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Arimo</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>serif</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Tinos</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>mono</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Cousine</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>monospace</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Cousine</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>Courier</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Cousine</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>cursive</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Comic Sans MS</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>fantasy</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Impact</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>Monaco</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Tinos</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>Arial</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Arimo</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>Courier New</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Cousine</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>Georgia</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Gelasio</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>Times New Roman</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Tinos</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test qual="any" name="family"> -+ <string>Verdana</string> -+ </test> -+ <!-- NOT metrically compatible! --> -+ <edit name="family" mode="assign"> -+ <string>Arimo</string> -+ </edit> -+ </match> -+ -+ <!-- TODO(thomasanderson): Move these configs to be test-specific. --> -+ <match target="pattern"> -+ <test name="family" compare="eq"> -+ <string>NonAntiAliasedSans</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Arimo</string> -+ </edit> -+ <edit name="antialias" mode="assign"> -+ <bool>false</bool> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test name="family" compare="eq"> -+ <string>SlightHintedGeorgia</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Gelasio</string> -+ </edit> -+ <edit name="hintstyle" mode="assign"> -+ <const>hintslight</const> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test name="family" compare="eq"> -+ <string>NonHintedSans</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Arimo</string> -+ </edit> -+ <!-- These deliberately contradict each other. The 'hinting' preference -+ should take priority --> -+ <edit name="hintstyle" mode="assign"> -+ <const>hintfull</const> -+ </edit> -+ <edit name="hinting" mode="assign"> -+ <bool>false</bool> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test name="family" compare="eq"> -+ <string>AutohintedSerif</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Arimo</string> -+ </edit> -+ <edit name="autohint" mode="assign"> -+ <bool>true</bool> -+ </edit> -+ <edit name="hintstyle" mode="assign"> -+ <const>hintmedium</const> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test name="family" compare="eq"> -+ <string>HintedSerif</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Arimo</string> -+ </edit> -+ <edit name="autohint" mode="assign"> -+ <bool>false</bool> -+ </edit> -+ <edit name="hintstyle" mode="assign"> -+ <const>hintmedium</const> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test name="family" compare="eq"> -+ <string>FullAndAutoHintedSerif</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Arimo</string> -+ </edit> -+ <edit name="autohint" mode="assign"> -+ <bool>true</bool> -+ </edit> -+ <edit name="hintstyle" mode="assign"> -+ <const>hintfull</const> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test name="family" compare="eq"> -+ <string>SubpixelEnabledArial</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Arimo</string> -+ </edit> -+ <edit name="rgba" mode="assign"> -+ <const>rgb</const> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test name="family" compare="eq"> -+ <string>SubpixelDisabledArial</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Arimo</string> -+ </edit> -+ <edit name="rgba" mode="assign"> -+ <const>none</const> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <!-- FontConfig doesn't currently provide a well-defined way to turn on -+ subpixel positioning. This is just an arbitrary pattern to use after -+ turning subpixel positioning on globally to ensure that we don't have -+ issues with our style getting cached for other tests. --> -+ <test name="family" compare="eq"> -+ <string>SubpixelPositioning</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Tinos</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <!-- See comments above --> -+ <test name="family" compare="eq"> -+ <string>SubpixelPositioningAhem</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>ahem</string> -+ </edit> -+ </match> -+ -+ <match target="pattern"> -+ <test name="family" compare="eq"> -+ <string>SlightHintedTimesNewRoman</string> -+ </test> -+ <edit name="family" mode="assign"> -+ <string>Tinos</string> -+ </edit> -+ <edit name="hintstyle" mode="assign"> -+ <const>hintslight</const> -+ </edit> -+ </match> -+ -+ <!-- When we encounter a character that the current font doesn't -+ support, gfx::GetFallbackFontForChar() returns the first font -+ that does have a glyph for the character. The list of fonts is -+ sorted by a pattern that includes the current locale, but doesn't -+ include a font family (which means that the fallback font depends -+ on the locale but not on the current font). -+ -+ DejaVu Sans is commonly the only font that supports some -+ characters, such as "⇧", and even when other candidates are -+ available, DejaVu Sans is commonly first among them, because of -+ the way Fontconfig is ordinarily configured. For example, the -+ configuration in the Fonconfig source lists DejaVu Sans under the -+ sans-serif generic family, and appends sans-serif to patterns -+ that don't already include a generic family (such as the pattern -+ in gfx::GetFallbackFontForChar()). -+ -+ To get the same fallback font in the layout tests, we could -+ duplicate this configuration here, or more directly, simply -+ append DejaVu Sans to all patterns. --> -+ <match target="pattern"> -+ <edit name="family" mode="append_last"> -+ <string>DejaVu Sans</string> -+ </edit> -+ </match> -+ -+</fontconfig> -+)"; -+ -+} // namespace -+ - void SetUpFontconfig() { -- FilePath dir_module; -- CHECK(PathService::Get(DIR_MODULE, &dir_module)); -+ std::unique_ptr<Environment> env = Environment::Create(); -+ if (!env->HasVar("FONTCONFIG_FILE")) { -+ // fonts.conf must be generated on-the-fly since it contains absolute paths -+ // which may be different if -+ // 1. The user moves/renames their build directory (or any parent dirs). -+ // 2. The build directory is mapped on a swarming bot at a location -+ // different from the one the buildbot used. -+ FilePath dir_module; -+ PathService::Get(DIR_MODULE, &dir_module); -+ FilePath font_cache = dir_module.Append("fontconfig_caches"); -+ FilePath test_fonts = dir_module.Append("test_fonts"); -+ std::string fonts_conf = ReplaceStringPlaceholders( -+ kFontsConfTemplate, {font_cache.value(), test_fonts.value()}, nullptr); - -- std::unique_ptr<Environment> env(Environment::Create()); -- // TODO(thomasanderson): This still stat()'s the real /etc/fonts/fonts.conf. -- // Prevent fontconfig from doing this. -- CHECK(env->SetVar("FONTCONFIG_SYSROOT", dir_module.value().c_str())); -+ // Write the data to a different file and then atomically rename it to -+ // fonts.conf. This avoids the file being in a bad state when different -+ // parallel tests call this function at the same time. -+ FilePath fonts_conf_file_temp; -+ if(!CreateTemporaryFileInDir(dir_module, &fonts_conf_file_temp)) -+ CHECK(CreateTemporaryFile(&fonts_conf_file_temp)); -+ CHECK( -+ WriteFile(fonts_conf_file_temp, fonts_conf.c_str(), fonts_conf.size())); -+ FilePath fonts_conf_file = dir_module.Append("fonts.conf"); -+ if (ReplaceFile(fonts_conf_file_temp, fonts_conf_file, nullptr)) -+ env->SetVar("FONTCONFIG_FILE", fonts_conf_file.value()); -+ else -+ env->SetVar("FONTCONFIG_FILE", fonts_conf_file_temp.value()); -+ } - } - - } // namespace base |