69f1731bbb
* chore: bump chromium in DEPS to cbdeef954dfc34e94c8ca9cf72ad326b4a121158 * chore: bump chromium in DEPS to 29723f905baeab1d4228eef2c31cdb341ebeffe0 * chore: bump chromium in DEPS to 44d6d78e852137fff58c14ed26ab1e803e5bf822 * update patches * chore: bump chromium in DEPS to 8a3a0fccb39d6b8334c9a0496c0d5056e50cdb3f * chore: update patches * refactor: fix PrintBackend::CreateInstance() calls Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2354541 * chore: bump chromium in DEPS to b9ebec3bcb1cabdd1426f367636f54cc98e0500e * chore: remove patches to code that was deleted upstream CL: https://chromium-review.googlesource.com/c/chromium/src/+/2360314 * Remove uses of kCGColorSpaceITUR_2020_PQ_EOTF/HLG CL: https://chromium-review.googlesource.com/c/chromium/src/+/2363950 just garden variety code shear * chore: update patch indices * Move ColorModel to //printing/mojom/print.mojom https://chromium-review.googlesource.com/c/chromium/src/+/2355083 sync with printing ColorModel changes: moved to mojo, different naming scheme * chore: bump chromium in DEPS to 56c4b4d2ce5ba941acd2e0fdb5100e8a48847134 * chore: bump chromium in DEPS to 130501f220b684a79dc82c17e236e63ac1f2a093 * Convert PrintHostMsg_DidGetPrintedPagesCount to Mojo https://chromium-review.googlesource.com/c/chromium/src/+/2326857 Update argument list to Print() * chore: update patch indices * DumpAccTree: convert utf16 to utf8 in PropertyFilter https://chromium-review.googlesource.com/c/chromium/src/+/2360218 * chore: bump chromium in DEPS to 3058368c6646e0dc8be6f8ea838b0343428b7998 * chore: bump chromium in DEPS to f51b4e6555364363c61438dac7afd988c8347bfc * chore: bump chromium in DEPS to 2dcc6f8fc23ac41b2499eb69dee0b4017e9d1046 * update patches * chore: bump chromium in DEPS to 2d8e98ecedc7e4905540b053bc1c87e964715be5 * update patches * 2345900: Move content::RecordContentToVisibleTimeRequest struct to mojo https://chromium-review.googlesource.com/c/chromium/src/+/2345900 * update patches * 2345900: Move content::RecordContentToVisibleTimeRequest struct to mojo https://chromium-review.googlesource.com/c/chromium/src/+/2345900 * 2367394: Remove net::LOAD_DO_NOT_SEND_COOKIES and net::LOAD_DO_NOT_SEND_AUTH_DATA. https://chromium-review.googlesource.com/c/chromium/src/+/2367394 * 2373227: [XProto] Consolidate all <X11/*> includes to //ui/gfx/x/x11.h https://chromium-review.googlesource.com/c/chromium/src/+/2373227 * fixup! 2373227: [XProto] Consolidate all <X11/*> includes to //ui/gfx/x/x11.h * chore: bump chromium in DEPS to c090e3f960520cbd2328608b97f87238c76d6143 * update patches * chore: bump chromium in DEPS to 13a25e0a755de9a14271022c595f3d2e29829e1a * chore: bump chromium in DEPS to 6adbb767b012c41efaeab0d1bdbb3eefed0977bc * chore: bump chromium in DEPS to 339ec5455c5932ef1322ea9953a6349b0732199e * chore: bump chromium in DEPS to 20291807c33f7ef4ef4f57d62075e099b027bfe6 * chore: bump chromium in DEPS to 226fbd1b8b17d4ac84fdb9548ef3a1c646878d47 * update patches * fixup disable_color_correct_rendering patch * chore: bump chromium in DEPS to 577c45979cad4359f2e206d68efd9317d3d79315 * update patches * viz: Rename RenderPass to CompositorRenderPass (and related types). https://chromium-review.googlesource.com/c/chromium/src/+/2380730 * chore: bump chromium in DEPS to 37e2ad5303f2c03a1b5d8eda65341bf2561196cd * update patches * add kOmitCookies_Electron * update patch * chore: bump chromium in DEPS to 256e42409ea63a7e71016de07818a983a97db463 * update patches * fix worker script ready hook https://chromium-review.googlesource.com/c/chromium/src/+/2335713 * Fixup printing page ranges patch * [printing] Move PrintMsg_PrintPages_Params to print.mojom https://chromium-review.googlesource.com/c/chromium/src/+/2340854 * Add MIME sniffer overloads that take base::StringPieces https://chromium-review.googlesource.com/c/chromium/src/+/2382896 * [printing] Move PrintHostMsg_PreviewIds to print.mojom https://chromium-review.googlesource.com/c/chromium/src/+/2379455 * fixup test due to new DCHECK https://chromium-review.googlesource.com/c/chromium/src/+/2333750 * stop sending cookies when useSessionCookies is false * chore: bump chromium in DEPS to dd429dbc556449951ee8160d8a4d61fd95a139d5 * update patches * chore: bump chromium in DEPS to 5202bde3f9f44c2065f5dacf27e7000dd19e4e4d * chore: bump chromium in DEPS to 099e8e07b89da65932431bb0fd51b6f7f5344c19 * chore: bump chromium in DEPS to 104e5da2a43b759732d5b94bfc750b3a9a639653 * chore: bump chromium in DEPS to a4519ce657af25834e355315fd7fefa77b13426a * update patches * Make FileURLLoaderFactory always owned by its |receivers_|. https://chromium-review.googlesource.com/c/chromium/src/+/2337411 * Make FileURLLoaderFactory always owned by its |receivers_|. https://chromium-review.googlesource.com/c/chromium/src/+/2337411 * chore: bump chromium in DEPS to 1b62e9e8c8eaf6b8e3a9c77ee67a4c1bfa6a4d6b * chore: update patches * fixup! Make FileURLLoaderFactory always owned by its |receivers_|. * chore: update patches - mac: Disable CoreServices _CSCheckFix. https://chromium-review.googlesource.com/c/chromium/src/+/2401334 - [XProto] Remove bad DCHECK in x11_error_tracker.cc https://chromium-review.googlesource.com/c/chromium/src/+/2402304 - Move content/browser/frame_host/* over to content/browser/renderer_host/ https://chromium-review.googlesource.com/c/chromium/src/+/2401303 * Refactor WebContentSettingsClient to dedupe AllowXYZ methods https://chromium-review.googlesource.com/c/chromium/src/+/2353552 * Introduce NonNetworkURLLoaderFactoryBase class. https://chromium-review.googlesource.com/c/chromium/src/+/2357559 * [XProto] Remove usage of all Xlib headers https://chromium-review.googlesource.com/c/chromium/src/+/2392140 * fixup! chore: update patches * chore: bump chromium in DEPS to c1df55fbeb8207d036a604f59e4ea4e8ee79930a * chore: update patches * Move content::WebPreferences struct to Blink https://chromium-review.googlesource.com/c/chromium/src/+/2397670 * chore: bump chromium in DEPS to 57a23ec4884fff6c2f8d9b8536131cdc9b551ec2 * Set appid on Pip windows. https://chromium-review.googlesource.com/c/chromium/src/+/2388274 * fixup! Set appid on Pip windows. * fix: add a patch to remove deprecated factory * chore: bump chromium in DEPS to 1a9ddb7ea43955877823d5c4dcbf241b64228635 * fix compilation on windows * chore: bump chromium in DEPS to 234e6c6a77f61ffad9335099d9b13892cf88fd44 * chore: update patches * chore: bump chromium in DEPS to 7631eb0a9f57a8a47d3c28e1d265961b3a4d6b2b * chore: update patches * chore: bump chromium in DEPS to f9c34cd485845b95c2d17a7f55fdf92cda9a1b3a * chore: update patches * chore: implement GetSurveyAPIKey Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2362182 * chore: replace CreateWebUIURLLoader with CreateWebUIURLLoaderFactory Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2358309 * chore: bump chromium in DEPS to 5bdbd2373da884adf41c087be1465fcc344d168c * chore: update node patches for common.gypi * chore: update patches * chore: non_network_url_loader_factory_base was moved Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2357431 * 2415752: Reland "Reland "OOR-CORS: Remove BlinkCORS supporting code outside Blink"" Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2415752 * chore: bump chromium in DEPS to b943d006a33ec5bc1743792d64724693eb357083 * fix: replace x11::None with x11::Window::None * chore: update patches * chore: update patches * fix: cast x11::Window to int * 2402123: Use end date when deleting http auth cache Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2402123 * 2320268: Migrate DragHostMsg_StartDragging to Mojo Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2320268 * 2401303: Move content/browser/frame_host/* over to content/browser/renderer_host/ https://chromium-review.googlesource.com/c/chromium/src/+/2401303 * chore: fix lint * chore: fix build * Update config.yml Co-authored-by: Electron Bot <anonymous@electronjs.org> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: Jeremy Rose <nornagon@nornagon.net> 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: Samuel Attard <sattard@slack-corp.com>
182 lines
7.4 KiB
C++
182 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
|