| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/prefs/prefs_tab_helper.h" | 5 #include "chrome/browser/ui/prefs/prefs_tab_helper.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <set> | 10 #include <set> |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 169 struct FontDefault { | 169 struct FontDefault { |
| 170 const char* pref_name; | 170 const char* pref_name; |
| 171 int resource_id; | 171 int resource_id; |
| 172 }; | 172 }; |
| 173 | 173 |
| 174 // Font pref defaults. The prefs that have defaults vary by platform, since not | 174 // Font pref defaults. The prefs that have defaults vary by platform, since not |
| 175 // all platforms have fonts for all scripts for all generic families. | 175 // all platforms have fonts for all scripts for all generic families. |
| 176 // TODO(falken): add proper defaults when possible for all | 176 // TODO(falken): add proper defaults when possible for all |
| 177 // platforms/scripts/generic families. | 177 // platforms/scripts/generic families. |
| 178 const FontDefault kFontDefaults[] = { | 178 const FontDefault kFontDefaults[] = { |
| 179 { prefs::kWebKitStandardFontFamily, IDS_STANDARD_FONT_FAMILY }, | 179 {prefs::kWebKitStandardFontFamily, IDS_STANDARD_FONT_FAMILY}, |
| 180 { prefs::kWebKitFixedFontFamily, IDS_FIXED_FONT_FAMILY }, | 180 {prefs::kWebKitFixedFontFamily, IDS_FIXED_FONT_FAMILY}, |
| 181 { prefs::kWebKitSerifFontFamily, IDS_SERIF_FONT_FAMILY }, | 181 {prefs::kWebKitSerifFontFamily, IDS_SERIF_FONT_FAMILY}, |
| 182 { prefs::kWebKitSansSerifFontFamily, IDS_SANS_SERIF_FONT_FAMILY }, | 182 {prefs::kWebKitSansSerifFontFamily, IDS_SANS_SERIF_FONT_FAMILY}, |
| 183 { prefs::kWebKitCursiveFontFamily, IDS_CURSIVE_FONT_FAMILY }, | 183 {prefs::kWebKitCursiveFontFamily, IDS_CURSIVE_FONT_FAMILY}, |
| 184 { prefs::kWebKitFantasyFontFamily, IDS_FANTASY_FONT_FAMILY }, | 184 {prefs::kWebKitFantasyFontFamily, IDS_FANTASY_FONT_FAMILY}, |
| 185 { prefs::kWebKitPictographFontFamily, IDS_PICTOGRAPH_FONT_FAMILY }, | 185 {prefs::kWebKitPictographFontFamily, IDS_PICTOGRAPH_FONT_FAMILY}, |
| 186 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) | 186 #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) |
| 187 { prefs::kWebKitStandardFontFamilyJapanese, | 187 {prefs::kWebKitStandardFontFamilyJapanese, |
| 188 IDS_STANDARD_FONT_FAMILY_JAPANESE }, | 188 IDS_STANDARD_FONT_FAMILY_JAPANESE}, |
| 189 { prefs::kWebKitFixedFontFamilyJapanese, IDS_FIXED_FONT_FAMILY_JAPANESE }, | 189 {prefs::kWebKitFixedFontFamilyJapanese, IDS_FIXED_FONT_FAMILY_JAPANESE}, |
| 190 { prefs::kWebKitSerifFontFamilyJapanese, IDS_SERIF_FONT_FAMILY_JAPANESE }, | 190 {prefs::kWebKitSerifFontFamilyJapanese, IDS_SERIF_FONT_FAMILY_JAPANESE}, |
| 191 { prefs::kWebKitSansSerifFontFamilyJapanese, | 191 {prefs::kWebKitSansSerifFontFamilyJapanese, |
| 192 IDS_SANS_SERIF_FONT_FAMILY_JAPANESE }, | 192 IDS_SANS_SERIF_FONT_FAMILY_JAPANESE}, |
| 193 { prefs::kWebKitStandardFontFamilyKorean, IDS_STANDARD_FONT_FAMILY_KOREAN }, | 193 {prefs::kWebKitStandardFontFamilyKorean, IDS_STANDARD_FONT_FAMILY_KOREAN}, |
| 194 { prefs::kWebKitSerifFontFamilyKorean, IDS_SERIF_FONT_FAMILY_KOREAN }, | 194 {prefs::kWebKitSerifFontFamilyKorean, IDS_SERIF_FONT_FAMILY_KOREAN}, |
| 195 { prefs::kWebKitSansSerifFontFamilyKorean, | 195 {prefs::kWebKitSansSerifFontFamilyKorean, |
| 196 IDS_SANS_SERIF_FONT_FAMILY_KOREAN }, | 196 IDS_SANS_SERIF_FONT_FAMILY_KOREAN}, |
| 197 { prefs::kWebKitStandardFontFamilySimplifiedHan, | 197 {prefs::kWebKitStandardFontFamilySimplifiedHan, |
| 198 IDS_STANDARD_FONT_FAMILY_SIMPLIFIED_HAN }, | 198 IDS_STANDARD_FONT_FAMILY_SIMPLIFIED_HAN}, |
| 199 { prefs::kWebKitSerifFontFamilySimplifiedHan, | 199 {prefs::kWebKitSerifFontFamilySimplifiedHan, |
| 200 IDS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN }, | 200 IDS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN}, |
| 201 { prefs::kWebKitSansSerifFontFamilySimplifiedHan, | 201 {prefs::kWebKitSansSerifFontFamilySimplifiedHan, |
| 202 IDS_SANS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN }, | 202 IDS_SANS_SERIF_FONT_FAMILY_SIMPLIFIED_HAN}, |
| 203 { prefs::kWebKitStandardFontFamilyTraditionalHan, | 203 {prefs::kWebKitStandardFontFamilyTraditionalHan, |
| 204 IDS_STANDARD_FONT_FAMILY_TRADITIONAL_HAN }, | 204 IDS_STANDARD_FONT_FAMILY_TRADITIONAL_HAN}, |
| 205 { prefs::kWebKitSerifFontFamilyTraditionalHan, | 205 {prefs::kWebKitSerifFontFamilyTraditionalHan, |
| 206 IDS_SERIF_FONT_FAMILY_TRADITIONAL_HAN }, | 206 IDS_SERIF_FONT_FAMILY_TRADITIONAL_HAN}, |
| 207 { prefs::kWebKitSansSerifFontFamilyTraditionalHan, | 207 {prefs::kWebKitSansSerifFontFamilyTraditionalHan, |
| 208 IDS_SANS_SERIF_FONT_FAMILY_TRADITIONAL_HAN }, | 208 IDS_SANS_SERIF_FONT_FAMILY_TRADITIONAL_HAN}, |
| 209 #endif |
| 210 #if defined(OS_MACOSX) || defined(OS_WIN) |
| 211 {prefs::kWebKitCursiveFontFamilySimplifiedHan, |
| 212 IDS_CURSIVE_FONT_FAMILY_SIMPLIFIED_HAN}, |
| 213 {prefs::kWebKitCursiveFontFamilyTraditionalHan, |
| 214 IDS_CURSIVE_FONT_FAMILY_TRADITIONAL_HAN}, |
| 209 #endif | 215 #endif |
| 210 #if defined(OS_CHROMEOS) | 216 #if defined(OS_CHROMEOS) |
| 211 { prefs::kWebKitStandardFontFamilyArabic, IDS_STANDARD_FONT_FAMILY_ARABIC }, | 217 {prefs::kWebKitStandardFontFamilyArabic, IDS_STANDARD_FONT_FAMILY_ARABIC}, |
| 212 { prefs::kWebKitSerifFontFamilyArabic, IDS_SERIF_FONT_FAMILY_ARABIC }, | 218 {prefs::kWebKitSerifFontFamilyArabic, IDS_SERIF_FONT_FAMILY_ARABIC}, |
| 213 { prefs::kWebKitSansSerifFontFamilyArabic, | 219 {prefs::kWebKitSansSerifFontFamilyArabic, |
| 214 IDS_SANS_SERIF_FONT_FAMILY_ARABIC }, | 220 IDS_SANS_SERIF_FONT_FAMILY_ARABIC}, |
| 215 { prefs::kWebKitFixedFontFamilyKorean, IDS_FIXED_FONT_FAMILY_KOREAN }, | 221 {prefs::kWebKitFixedFontFamilyKorean, IDS_FIXED_FONT_FAMILY_KOREAN}, |
| 216 { prefs::kWebKitFixedFontFamilySimplifiedHan, | 222 {prefs::kWebKitFixedFontFamilySimplifiedHan, |
| 217 IDS_FIXED_FONT_FAMILY_SIMPLIFIED_HAN }, | 223 IDS_FIXED_FONT_FAMILY_SIMPLIFIED_HAN}, |
| 218 { prefs::kWebKitFixedFontFamilyTraditionalHan, | 224 {prefs::kWebKitFixedFontFamilyTraditionalHan, |
| 219 IDS_FIXED_FONT_FAMILY_TRADITIONAL_HAN }, | 225 IDS_FIXED_FONT_FAMILY_TRADITIONAL_HAN}, |
| 220 #elif defined(OS_WIN) | 226 #elif defined(OS_WIN) |
| 221 { prefs::kWebKitFixedFontFamilyArabic, IDS_FIXED_FONT_FAMILY_ARABIC }, | 227 {prefs::kWebKitFixedFontFamilyArabic, IDS_FIXED_FONT_FAMILY_ARABIC}, |
| 222 { prefs::kWebKitSansSerifFontFamilyArabic, | 228 {prefs::kWebKitSansSerifFontFamilyArabic, |
| 223 IDS_SANS_SERIF_FONT_FAMILY_ARABIC }, | 229 IDS_SANS_SERIF_FONT_FAMILY_ARABIC}, |
| 224 { prefs::kWebKitStandardFontFamilyCyrillic, | 230 {prefs::kWebKitStandardFontFamilyCyrillic, |
| 225 IDS_STANDARD_FONT_FAMILY_CYRILLIC }, | 231 IDS_STANDARD_FONT_FAMILY_CYRILLIC}, |
| 226 { prefs::kWebKitFixedFontFamilyCyrillic, IDS_FIXED_FONT_FAMILY_CYRILLIC }, | 232 {prefs::kWebKitFixedFontFamilyCyrillic, IDS_FIXED_FONT_FAMILY_CYRILLIC}, |
| 227 { prefs::kWebKitSerifFontFamilyCyrillic, IDS_SERIF_FONT_FAMILY_CYRILLIC }, | 233 {prefs::kWebKitSerifFontFamilyCyrillic, IDS_SERIF_FONT_FAMILY_CYRILLIC}, |
| 228 { prefs::kWebKitSansSerifFontFamilyCyrillic, | 234 {prefs::kWebKitSansSerifFontFamilyCyrillic, |
| 229 IDS_SANS_SERIF_FONT_FAMILY_CYRILLIC }, | 235 IDS_SANS_SERIF_FONT_FAMILY_CYRILLIC}, |
| 230 { prefs::kWebKitStandardFontFamilyGreek, IDS_STANDARD_FONT_FAMILY_GREEK }, | 236 {prefs::kWebKitStandardFontFamilyGreek, IDS_STANDARD_FONT_FAMILY_GREEK}, |
| 231 { prefs::kWebKitFixedFontFamilyGreek, IDS_FIXED_FONT_FAMILY_GREEK }, | 237 {prefs::kWebKitFixedFontFamilyGreek, IDS_FIXED_FONT_FAMILY_GREEK}, |
| 232 { prefs::kWebKitSerifFontFamilyGreek, IDS_SERIF_FONT_FAMILY_GREEK }, | 238 {prefs::kWebKitSerifFontFamilyGreek, IDS_SERIF_FONT_FAMILY_GREEK}, |
| 233 { prefs::kWebKitSansSerifFontFamilyGreek, IDS_SANS_SERIF_FONT_FAMILY_GREEK }, | 239 {prefs::kWebKitSansSerifFontFamilyGreek, IDS_SANS_SERIF_FONT_FAMILY_GREEK}, |
| 234 { prefs::kWebKitFixedFontFamilyKorean, IDS_FIXED_FONT_FAMILY_KOREAN }, | 240 {prefs::kWebKitFixedFontFamilyKorean, IDS_FIXED_FONT_FAMILY_KOREAN}, |
| 235 { prefs::kWebKitCursiveFontFamilyKorean, IDS_CURSIVE_FONT_FAMILY_KOREAN }, | 241 {prefs::kWebKitCursiveFontFamilyKorean, IDS_CURSIVE_FONT_FAMILY_KOREAN}, |
| 236 { prefs::kWebKitFixedFontFamilySimplifiedHan, | 242 {prefs::kWebKitFixedFontFamilySimplifiedHan, |
| 237 IDS_FIXED_FONT_FAMILY_SIMPLIFIED_HAN }, | 243 IDS_FIXED_FONT_FAMILY_SIMPLIFIED_HAN}, |
| 238 { prefs::kWebKitFixedFontFamilyTraditionalHan, | 244 {prefs::kWebKitFixedFontFamilyTraditionalHan, |
| 239 IDS_FIXED_FONT_FAMILY_TRADITIONAL_HAN }, | 245 IDS_FIXED_FONT_FAMILY_TRADITIONAL_HAN}, |
| 240 #endif | 246 #endif |
| 241 }; | 247 }; |
| 242 | 248 |
| 243 const size_t kFontDefaultsLength = arraysize(kFontDefaults); | 249 const size_t kFontDefaultsLength = arraysize(kFontDefaults); |
| 244 | 250 |
| 245 // Returns the script of the font pref |pref_name|. For example, suppose | 251 // Returns the script of the font pref |pref_name|. For example, suppose |
| 246 // |pref_name| is "webkit.webprefs.fonts.serif.Hant". Since the script code for | 252 // |pref_name| is "webkit.webprefs.fonts.serif.Hant". Since the script code for |
| 247 // the script name "Hant" is USCRIPT_TRADITIONAL_HAN, the function returns | 253 // the script name "Hant" is USCRIPT_TRADITIONAL_HAN, the function returns |
| 248 // USCRIPT_TRADITIONAL_HAN. |pref_name| must be a valid font pref name. | 254 // USCRIPT_TRADITIONAL_HAN. |pref_name| must be a valid font pref name. |
| 249 UScriptCode GetScriptOfFontPref(const char* pref_name) { | 255 UScriptCode GetScriptOfFontPref(const char* pref_name) { |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 543 UScriptCode browser_script = GetScriptOfBrowserLocale(); | 549 UScriptCode browser_script = GetScriptOfBrowserLocale(); |
| 544 for (size_t i = 0; i < kFontDefaultsLength; ++i) { | 550 for (size_t i = 0; i < kFontDefaultsLength; ++i) { |
| 545 FontDefault pref = kFontDefaults[i]; | 551 FontDefault pref = kFontDefaults[i]; |
| 546 | 552 |
| 547 #if defined(OS_WIN) | 553 #if defined(OS_WIN) |
| 548 if (pref.pref_name == prefs::kWebKitFixedFontFamily) { | 554 if (pref.pref_name == prefs::kWebKitFixedFontFamily) { |
| 549 if (ShouldUseAlternateDefaultFixedFont( | 555 if (ShouldUseAlternateDefaultFixedFont( |
| 550 l10n_util::GetStringUTF8(pref.resource_id))) | 556 l10n_util::GetStringUTF8(pref.resource_id))) |
| 551 pref.resource_id = IDS_FIXED_FONT_FAMILY_ALT_WIN; | 557 pref.resource_id = IDS_FIXED_FONT_FAMILY_ALT_WIN; |
| 552 } | 558 } |
| 553 | |
| 554 // The standard font (Meiryo) isn't installed by default as of Win 10. | |
| 555 if (base::win::GetVersion() >= base::win::VERSION_WIN10) { | |
| 556 if (pref.pref_name == prefs::kWebKitStandardFontFamilyJapanese) { | |
| 557 pref.resource_id = IDS_STANDARD_FONT_FAMILY_JAPANESE_ALT_WIN; | |
| 558 } else if (pref.pref_name == prefs::kWebKitSansSerifFontFamilyJapanese) { | |
| 559 pref.resource_id = IDS_SANS_SERIF_FONT_FAMILY_JAPANESE_ALT_WIN; | |
| 560 } | |
| 561 } | |
| 562 #endif | 559 #endif |
| 563 | 560 |
| 564 UScriptCode pref_script = GetScriptOfFontPref(pref.pref_name); | 561 UScriptCode pref_script = GetScriptOfFontPref(pref.pref_name); |
| 565 | 562 |
| 566 // Suppress this default font pref value if it is for the primary script of | 563 // Suppress this default font pref value if it is for the primary script of |
| 567 // the browser's UI locale. For example, if the pref is for the sans-serif | 564 // the browser's UI locale. For example, if the pref is for the sans-serif |
| 568 // font for the Cyrillic script, and the browser locale is "ru" (Russian), | 565 // font for the Cyrillic script, and the browser locale is "ru" (Russian), |
| 569 // the default is suppressed. Otherwise, the default would override the | 566 // the default is suppressed. Otherwise, the default would override the |
| 570 // user's font preferences when viewing pages in their native language. | 567 // user's font preferences when viewing pages in their native language. |
| 571 // This is because users have no way yet of customizing their per-script | 568 // This is because users have no way yet of customizing their per-script |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 674 } | 671 } |
| 675 | 672 |
| 676 void PrefsTabHelper::NotifyWebkitPreferencesChanged( | 673 void PrefsTabHelper::NotifyWebkitPreferencesChanged( |
| 677 const std::string& pref_name) { | 674 const std::string& pref_name) { |
| 678 #if !defined(OS_ANDROID) | 675 #if !defined(OS_ANDROID) |
| 679 OnFontFamilyPrefChanged(pref_name); | 676 OnFontFamilyPrefChanged(pref_name); |
| 680 #endif | 677 #endif |
| 681 | 678 |
| 682 web_contents_->GetRenderViewHost()->OnWebkitPreferencesChanged(); | 679 web_contents_->GetRenderViewHost()->OnWebkitPreferencesChanged(); |
| 683 } | 680 } |
| OLD | NEW |