mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
* chore: bump chromium in DEPS to 87.0.4265.1 * chore: bump chromium in DEPS to 87.0.4266.2 * chore: bump chromium in DEPS to 87.0.4267.1 * update patches * chore: bump chromium in DEPS to 87.0.4270.0 * Update patches * Move content::WebPreferences struct to Blink https://chromium-review.googlesource.com/c/chromium/src/+/2397670 (cherry picked from commit5c98c5ebf4) * viz: Rename RenderPass to CompositorRenderPass (and related types). https://chromium-review.googlesource.com/c/chromium/src/+/2380730 (cherry picked from commitae999b29c1) * 2320268: Migrate DragHostMsg_StartDragging to Mojo Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2320268 (cherry picked from commit4e835d505d) * Make FileURLLoaderFactory always owned by its |receivers_|. https://chromium-review.googlesource.com/c/chromium/src/+/2337411 (cherry picked from commit284abad17d) * fix: add a patch to remove deprecated factory (cherry picked from commit98c9616829) Co-Authored-By: Robo <hop2deep@gmail.com> * fixup patch (cherry picked from commit98c9616829) Co-Authored-By: Robo <hop2deep@gmail.com> * Add MIME sniffer overloads that take base::StringPieces https://chromium-review.googlesource.com/c/chromium/src/+/2382896 (cherry picked from commit211fd4f8f0) * chore: implement GetSurveyAPIKey Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2362182 (cherry picked from commit6c539bc6fc) * 2415752: Reland "Reland "OOR-CORS: Remove BlinkCORS supporting code outside Blink"" Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2415752 (cherry picked from commitb67757d77d) * Make FileURLLoaderFactory always owned by its |receivers_|. https://chromium-review.googlesource.com/c/chromium/src/+/2337411 (cherry picked from commit507eb0965f) * fixup! Make FileURLLoaderFactory always owned by its |receivers_|. (cherry picked from commite19400b4e2) * 2418471: PDF Viewer update: Add missing aria-labels to various buttons. https://chromium-review.googlesource.com/c/chromium/src/+/2418471 * chore: bump chromium in DEPS to 87.0.4271.0 * Refactor WebContentSettingsClient to dedupe AllowXYZ methods https://chromium-review.googlesource.com/c/chromium/src/+/2353552 (cherry picked from commitf1a5414372) * 2402123: Use end date when deleting http auth cache Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2402123 (cherry picked from commitd00971d0cb) * [printing] Move PrintHostMsg_PreviewIds to print.mojom https://chromium-review.googlesource.com/c/chromium/src/+/2379455 (cherry picked from commite212297da9) * update patches * 2401303: Move content/browser/frame_host/* over to content/browser/renderer_host/ https://chromium-review.googlesource.com/c/chromium/src/+/2401303 (cherry picked from commitbcffa8aeab) * Introduce NonNetworkURLLoaderFactoryBase class. https://chromium-review.googlesource.com/c/chromium/src/+/2357559 (cherry picked from commit33e2e12114) * fix: add a patch to remove deprecated factory (cherry picked from commit98c9616829) * chore: non_network_url_loader_factory_base was moved Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2357431 (cherry picked from commita1a8878402) * chore: replace CreateWebUIURLLoader with CreateWebUIURLLoaderFactory Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2358309 (cherry picked from commit40bfaa5ea4) * 2346803: Study whether blocking of requests via webRequest is fingerprintable https://chromium-review.googlesource.com/c/chromium/src/+/2346803 * lint cleanup * chore: bump chromium in DEPS to 87.0.4272.0 * update patches * 2387901: Accessing C++ enums in Java for WebBluetooth https://chromium-review.googlesource.com/c/chromium/src/+/2387901 * chore: bump chromium in DEPS to 87.0.4273.0 * Update patches (cherry picked from commit b389d4adca71e268c390c41370e87033b69c649c) * chore: bump chromium in DEPS to 87.0.4274.0 * chore: bump chromium in DEPS to 87.0.4275.0 * chore: bump chromium in DEPS to 87.0.4276.0 * update patches * 2418443: Explicit use of deprecated global sources assignment filter https://chromium-review.googlesource.com/c/chromium/src/+/2418443 * fixup 2418443: Explicit use of deprecated global sources assignment filter * Use 87.0.4274.2 for now * 2401847: Cache Storage Permissions on ContentSettingsClientImpl https://chromium-review.googlesource.com/c/chromium/src/+/2401847 * 2418568: Remove ConvertPointToPixel() methods. https://chromium-review.googlesource.com/c/chromium/src/+/2418568 * 2419388: Rename Button methods to be suitable for builders and properties. https://chromium-review.googlesource.com/c/chromium/src/+/2419388 * [XProto] Remove usage of all Xlib headers https: //chromium-review.googlesource.com/c/chromium/src/+/2392140 Co-Authored-By: Robo <hop2deep@gmail.com> * service_manager::kCrashDumpSignal -> kCrashDumpSignal Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2417073 (cherry picked from commit 7d9d2a172f50e12830a2b8fbfbb2fe344756c377) * gfx::ConvertPointToPixel -> gfx::ConvertPointToPixels Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2418568 (cherry picked from commit a0bf07570409f84a3b7fa9d12bddd8c1805f43c5) * Fixup [XProto] Remove usage of all Xlib headers * Set appid on Pip windows. https: //chromium-review.googlesource.com/c/chromium/src/+/2388274 Co-Authored-By: Robo <hop2deep@gmail.com> * chore: update node patches for common.gypi Co-Authored-By: Samuel Attard <MarshallOfSound@users.noreply.github.com> * Try using lower number of processes for linux * fixup call to diagnose_goma_log.py * Use larger machines on linux to work around goma issue * Don't fail on goma stats * don't exit immediately * turn off pipefail * always return true Co-authored-by: John Kleinschmidt <jkleinsc@github.com> Co-authored-by: deepak1556 <hop2deep@gmail.com> Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com> Co-authored-by: Andy Locascio <andy@slack-corp.com> Co-authored-by: Samuel Attard <MarshallOfSound@users.noreply.github.com>
183 lines
7.4 KiB
C++
183 lines
7.4 KiB
C++
// Copyright (c) 2018 Slack Technologies, Inc.
|
|
// Use of this source code is governed by the MIT license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "shell/browser/font_defaults.h"
|
|
|
|
#include <string>
|
|
#include <unordered_map>
|
|
|
|
#include "base/stl_util.h"
|
|
#include "base/strings/stringprintf.h"
|
|
#include "base/strings/utf_string_conversions.h"
|
|
#include "chrome/common/pref_names.h"
|
|
#include "chrome/grit/platform_locale_settings.h"
|
|
#include "third_party/blink/public/common/web_preferences/web_preferences.h"
|
|
#include "ui/base/l10n/l10n_util.h"
|
|
|
|
namespace {
|
|
|
|
// The following list of font defaults was copied from
|
|
// https://chromium.googlesource.com/chromium/src/+/69.0.3497.106/chrome/browser/ui/prefs/prefs_tab_helper.cc#152
|
|
//
|
|
// The only updates that should be made to this list are copying updates that
|
|
// were made in Chromium.
|
|
//
|
|
// vvvvv DO NOT EDIT vvvvv
|
|
|
|
struct FontDefault {
|
|
const char* pref_name;
|
|
int resource_id;
|
|
};
|
|
|
|
// Font pref defaults. The prefs that have defaults vary by platform, since not
|
|
// all platforms have fonts for all scripts for all generic families.
|
|
// TODO(falken): add proper defaults when possible for all
|
|
// platforms/scripts/generic families.
|
|
const FontDefault kFontDefaults[] = {
|
|
{prefs::kWebKitStandardFontFamily, IDS_STANDARD_FONT_FAMILY},
|
|
{prefs::kWebKitFixedFontFamily, IDS_FIXED_FONT_FAMILY},
|
|
{prefs::kWebKitSerifFontFamily, IDS_SERIF_FONT_FAMILY},
|
|
{prefs::kWebKitSansSerifFontFamily, IDS_SANS_SERIF_FONT_FAMILY},
|
|
{prefs::kWebKitCursiveFontFamily, IDS_CURSIVE_FONT_FAMILY},
|
|
{prefs::kWebKitFantasyFontFamily, IDS_FANTASY_FONT_FAMILY},
|
|
{prefs::kWebKitPictographFontFamily, IDS_PICTOGRAPH_FONT_FAMILY},
|
|
#if defined(OS_CHROMEOS) || defined(OS_MAC) || defined(OS_WIN)
|
|
{prefs::kWebKitStandardFontFamilyJapanese,
|
|
IDS_STANDARD_FONT_FAMILY_JAPANESE},
|
|
{prefs::kWebKitFixedFontFamilyJapanese, IDS_FIXED_FONT_FAMILY_JAPANESE},
|
|
{prefs::kWebKitSerifFontFamilyJapanese, IDS_SERIF_FONT_FAMILY_JAPANESE},
|
|
{prefs::kWebKitSansSerifFontFamilyJapanese,
|
|
IDS_SANS_SERIF_FONT_FAMILY_JAPANESE},
|
|
{prefs::kWebKitStandardFontFamilyKorean, IDS_STANDARD_FONT_FAMILY_KOREAN},
|
|
{prefs::kWebKitSerifFontFamilyKorean, IDS_SERIF_FONT_FAMILY_KOREAN},
|
|
{prefs::kWebKitSansSerifFontFamilyKorean,
|
|
IDS_SANS_SERIF_FONT_FAMILY_KOREAN},
|
|
{prefs::kWebKitStandardFontFamilySimplifiedHan,
|
|
IDS_STANDARD_FONT_FAMILY_SIMPLIFIED_HAN},
|
|
{prefs::kWebKitSerifFontFamilySimplifiedHan,
|
|
IDS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN},
|
|
{prefs::kWebKitSansSerifFontFamilySimplifiedHan,
|
|
IDS_SANS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN},
|
|
{prefs::kWebKitStandardFontFamilyTraditionalHan,
|
|
IDS_STANDARD_FONT_FAMILY_TRADITIONAL_HAN},
|
|
{prefs::kWebKitSerifFontFamilyTraditionalHan,
|
|
IDS_SERIF_FONT_FAMILY_TRADITIONAL_HAN},
|
|
{prefs::kWebKitSansSerifFontFamilyTraditionalHan,
|
|
IDS_SANS_SERIF_FONT_FAMILY_TRADITIONAL_HAN},
|
|
#endif
|
|
#if defined(OS_MAC) || defined(OS_WIN)
|
|
{prefs::kWebKitCursiveFontFamilySimplifiedHan,
|
|
IDS_CURSIVE_FONT_FAMILY_SIMPLIFIED_HAN},
|
|
{prefs::kWebKitCursiveFontFamilyTraditionalHan,
|
|
IDS_CURSIVE_FONT_FAMILY_TRADITIONAL_HAN},
|
|
#endif
|
|
#if defined(OS_CHROMEOS)
|
|
{prefs::kWebKitStandardFontFamilyArabic, IDS_STANDARD_FONT_FAMILY_ARABIC},
|
|
{prefs::kWebKitSerifFontFamilyArabic, IDS_SERIF_FONT_FAMILY_ARABIC},
|
|
{prefs::kWebKitSansSerifFontFamilyArabic,
|
|
IDS_SANS_SERIF_FONT_FAMILY_ARABIC},
|
|
{prefs::kWebKitFixedFontFamilyKorean, IDS_FIXED_FONT_FAMILY_KOREAN},
|
|
{prefs::kWebKitFixedFontFamilySimplifiedHan,
|
|
IDS_FIXED_FONT_FAMILY_SIMPLIFIED_HAN},
|
|
{prefs::kWebKitFixedFontFamilyTraditionalHan,
|
|
IDS_FIXED_FONT_FAMILY_TRADITIONAL_HAN},
|
|
#elif defined(OS_WIN)
|
|
{prefs::kWebKitFixedFontFamilyArabic, IDS_FIXED_FONT_FAMILY_ARABIC},
|
|
{prefs::kWebKitSansSerifFontFamilyArabic,
|
|
IDS_SANS_SERIF_FONT_FAMILY_ARABIC},
|
|
{prefs::kWebKitStandardFontFamilyCyrillic,
|
|
IDS_STANDARD_FONT_FAMILY_CYRILLIC},
|
|
{prefs::kWebKitFixedFontFamilyCyrillic, IDS_FIXED_FONT_FAMILY_CYRILLIC},
|
|
{prefs::kWebKitSerifFontFamilyCyrillic, IDS_SERIF_FONT_FAMILY_CYRILLIC},
|
|
{prefs::kWebKitSansSerifFontFamilyCyrillic,
|
|
IDS_SANS_SERIF_FONT_FAMILY_CYRILLIC},
|
|
{prefs::kWebKitStandardFontFamilyGreek, IDS_STANDARD_FONT_FAMILY_GREEK},
|
|
{prefs::kWebKitFixedFontFamilyGreek, IDS_FIXED_FONT_FAMILY_GREEK},
|
|
{prefs::kWebKitSerifFontFamilyGreek, IDS_SERIF_FONT_FAMILY_GREEK},
|
|
{prefs::kWebKitSansSerifFontFamilyGreek, IDS_SANS_SERIF_FONT_FAMILY_GREEK},
|
|
{prefs::kWebKitFixedFontFamilyKorean, IDS_FIXED_FONT_FAMILY_KOREAN},
|
|
{prefs::kWebKitCursiveFontFamilyKorean, IDS_CURSIVE_FONT_FAMILY_KOREAN},
|
|
{prefs::kWebKitFixedFontFamilySimplifiedHan,
|
|
IDS_FIXED_FONT_FAMILY_SIMPLIFIED_HAN},
|
|
{prefs::kWebKitFixedFontFamilyTraditionalHan,
|
|
IDS_FIXED_FONT_FAMILY_TRADITIONAL_HAN},
|
|
#endif
|
|
};
|
|
const size_t kFontDefaultsLength = base::size(kFontDefaults);
|
|
|
|
// ^^^^^ DO NOT EDIT ^^^^^
|
|
|
|
std::string GetDefaultFontForPref(const char* pref_name) {
|
|
for (size_t i = 0; i < kFontDefaultsLength; ++i) {
|
|
FontDefault pref = kFontDefaults[i];
|
|
if (strcmp(pref.pref_name, pref_name) == 0) {
|
|
return l10n_util::GetStringUTF8(pref.resource_id);
|
|
}
|
|
}
|
|
return std::string();
|
|
}
|
|
|
|
// Map from script to font.
|
|
// Key comparison uses pointer equality.
|
|
using ScriptFontMap = std::unordered_map<const char*, base::string16>;
|
|
|
|
// Map from font family to ScriptFontMap.
|
|
// Key comparison uses pointer equality.
|
|
using FontFamilyMap = std::unordered_map<const char*, ScriptFontMap>;
|
|
|
|
// A lookup table mapping (font-family, script) -> font-name
|
|
// e.g. ("sans-serif", "Zyyy") -> "Arial"
|
|
FontFamilyMap g_font_cache;
|
|
|
|
base::string16 FetchFont(const char* script, const char* map_name) {
|
|
FontFamilyMap::const_iterator it = g_font_cache.find(map_name);
|
|
if (it != g_font_cache.end()) {
|
|
ScriptFontMap::const_iterator it2 = it->second.find(script);
|
|
if (it2 != it->second.end())
|
|
return it2->second;
|
|
}
|
|
|
|
std::string pref_name = base::StringPrintf("%s.%s", map_name, script);
|
|
std::string font = GetDefaultFontForPref(pref_name.c_str());
|
|
base::string16 font16 = base::UTF8ToUTF16(font);
|
|
|
|
ScriptFontMap& map = g_font_cache[map_name];
|
|
map[script] = font16;
|
|
return font16;
|
|
}
|
|
|
|
void FillFontFamilyMap(const char* map_name,
|
|
blink::web_pref::ScriptFontFamilyMap* map) {
|
|
for (size_t i = 0; i < prefs::kWebKitScriptsForFontFamilyMapsLength; ++i) {
|
|
const char* script = prefs::kWebKitScriptsForFontFamilyMaps[i];
|
|
base::string16 result = FetchFont(script, map_name);
|
|
if (!result.empty()) {
|
|
(*map)[script] = result;
|
|
}
|
|
}
|
|
}
|
|
|
|
} // namespace
|
|
|
|
namespace electron {
|
|
|
|
void SetFontDefaults(blink::web_pref::WebPreferences* prefs) {
|
|
FillFontFamilyMap(prefs::kWebKitStandardFontFamilyMap,
|
|
&prefs->standard_font_family_map);
|
|
FillFontFamilyMap(prefs::kWebKitFixedFontFamilyMap,
|
|
&prefs->fixed_font_family_map);
|
|
FillFontFamilyMap(prefs::kWebKitSerifFontFamilyMap,
|
|
&prefs->serif_font_family_map);
|
|
FillFontFamilyMap(prefs::kWebKitSansSerifFontFamilyMap,
|
|
&prefs->sans_serif_font_family_map);
|
|
FillFontFamilyMap(prefs::kWebKitCursiveFontFamilyMap,
|
|
&prefs->cursive_font_family_map);
|
|
FillFontFamilyMap(prefs::kWebKitFantasyFontFamilyMap,
|
|
&prefs->fantasy_font_family_map);
|
|
FillFontFamilyMap(prefs::kWebKitPictographFontFamilyMap,
|
|
&prefs->pictograph_font_family_map);
|
|
}
|
|
|
|
} // namespace electron
|