font_settings_handler.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/options/font_settings_handler.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind_helpers.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/i18n/rtl.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/string_number_conversions.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/string_util.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browser_process.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/character_encoding.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/prefs/pref_service.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/options/font_settings_utils.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_notification_types.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/pref_names.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/font_list_async.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_details.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_ui.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/chromium_strings.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/generated_resources.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/font.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/platform_font_win.h" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns the localized name of a font so that settings can find it within the 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// list of system fonts. On Windows, the list of system fonts has names only 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// for the system locale, but the pref value may be in the English name. 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string MaybeGetLocalizedFontName(const std::string& font_name) { 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Font font(font_name, 12); // dummy font size 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return static_cast<gfx::PlatformFontWin*>(font.platform_font())-> 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetLocalizedFontName(); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return font_name; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace options { 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FontSettingsHandler::FontSettingsHandler() { 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FontSettingsHandler::~FontSettingsHandler() { 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::GetLocalizedValues( 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DictionaryValue* localized_strings) { 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(localized_strings); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static OptionsStringResource resources[] = { 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSettingsStandard", 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FONT_LANGUAGE_SETTING_FONT_SELECTOR_STANDARD_LABEL }, 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSettingsSerif", 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FONT_LANGUAGE_SETTING_FONT_SELECTOR_SERIF_LABEL }, 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSettingsSansSerif", 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FONT_LANGUAGE_SETTING_FONT_SELECTOR_SANS_SERIF_LABEL }, 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSettingsFixedWidth", 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FONT_LANGUAGE_SETTING_FONT_SELECTOR_FIXED_WIDTH_LABEL }, 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSettingsMinimumSize", 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FONT_LANGUAGE_SETTING_MINIMUM_FONT_SIZE_TITLE }, 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSettingsEncoding", 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FONT_LANGUAGE_SETTING_FONT_SUB_DIALOG_ENCODING_TITLE }, 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSettingsSizeTiny", 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FONT_LANGUAGE_SETTING_FONT_SIZE_TINY }, 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSettingsSizeHuge", 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FONT_LANGUAGE_SETTING_FONT_SIZE_HUGE }, 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { "fontSettingsLoremIpsum", 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FONT_LANGUAGE_SETTING_LOREM_IPSUM }, 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RegisterStrings(localized_strings, resources, arraysize(resources)); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RegisterTitle(localized_strings, "fontSettingsPage", 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FONT_LANGUAGE_SETTING_FONT_TAB_TITLE); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) localized_strings->SetString("fontSettingsPlaceholder", 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) l10n_util::GetStringUTF16( 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_FONT_LANGUAGE_SETTING_PLACEHOLDER)); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::InitializePage() { 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(web_ui()); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpStandardFontSample(); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpSerifFontSample(); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpSansSerifFontSample(); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpFixedFontSample(); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpMinimumFontSample(); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::RegisterMessages() { 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Perform validation for saved fonts. 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FontSettingsUtilities::ValidateSavedFonts(pref_service); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Register for preferences that we need to observe manually. 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) standard_font_.Init(prefs::kWebKitStandardFontFamily, pref_service, this); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) serif_font_.Init(prefs::kWebKitSerifFontFamily, pref_service, this); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sans_serif_font_.Init(prefs::kWebKitSansSerifFontFamily, pref_service, this); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fixed_font_.Init(prefs::kWebKitFixedFontFamily, pref_service, this); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) font_encoding_.Init(prefs::kDefaultCharset, pref_service, this); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_font_size_.Init(prefs::kWebKitDefaultFontSize, pref_service, this); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_fixed_font_size_.Init(prefs::kWebKitDefaultFixedFontSize, 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref_service, this); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) minimum_font_size_.Init(prefs::kWebKitMinimumFontSize, pref_service, this); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback("fetchFontsData", 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&FontSettingsHandler::HandleFetchFontsData, 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::HandleFetchFontsData(const ListValue* args) { 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::GetFontListAsync( 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&FontSettingsHandler::FontsListHasLoaded, 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::FontsListHasLoaded( 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<base::ListValue> list) { 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Selects the directionality for the fonts in the given list. 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < list->GetSize(); i++) { 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ListValue* font; 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool has_font = list->GetList(i, &font); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(has_font); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 value; 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool has_value = font->GetString(1, &value); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(has_value); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool has_rtl_chars = base::i18n::StringContainsStrongRTLChars(value); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) font->Append(Value::CreateStringValue(has_rtl_chars ? "rtl" : "ltr")); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ListValue encoding_list; 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::vector<CharacterEncoding::EncodingInfo>* encodings; 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) encodings = CharacterEncoding::GetCurrentDisplayEncodings( 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) g_browser_process->GetApplicationLocale(), 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref_service->GetString(prefs::kStaticEncodings), 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref_service->GetString(prefs::kRecentlySelectedEncoding)); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(encodings); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(!encodings->empty()); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<CharacterEncoding::EncodingInfo>::const_iterator it; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (it = encodings->begin(); it != encodings->end(); ++it) { 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ListValue* option = new ListValue(); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (it->encoding_id) { 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int cmd_id = it->encoding_id; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string encoding = 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CharacterEncoding::GetCanonicalEncodingNameByCommandId(cmd_id); 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 name = it->encoding_display_name; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool has_rtl_chars = base::i18n::StringContainsStrongRTLChars(name); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) option->Append(Value::CreateStringValue(encoding)); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) option->Append(Value::CreateStringValue(name)); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) option->Append(Value::CreateStringValue(has_rtl_chars ? "rtl" : "ltr")); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add empty name/value to indicate a separator item. 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) option->Append(Value::CreateStringValue("")); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) option->Append(Value::CreateStringValue("")); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) encoding_list.Append(option); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ListValue selected_values; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selected_values.Append(Value::CreateStringValue(MaybeGetLocalizedFontName( 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) standard_font_.GetValue()))); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selected_values.Append(Value::CreateStringValue(MaybeGetLocalizedFontName( 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) serif_font_.GetValue()))); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selected_values.Append(Value::CreateStringValue(MaybeGetLocalizedFontName( 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sans_serif_font_.GetValue()))); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selected_values.Append(Value::CreateStringValue(MaybeGetLocalizedFontName( 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fixed_font_.GetValue()))); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selected_values.Append(Value::CreateStringValue(font_encoding_.GetValue())); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("FontSettings.setFontsData", 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *list.get(), encoding_list, 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selected_values); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::OnPreferenceChanged(PrefServiceBase* service, 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& pref_name) { 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (pref_name == prefs::kWebKitStandardFontFamily) { 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpStandardFontSample(); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (pref_name == prefs::kWebKitSerifFontFamily) { 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpSerifFontSample(); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (pref_name == prefs::kWebKitSansSerifFontFamily) { 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpSansSerifFontSample(); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (pref_name == prefs::kWebKitFixedFontFamily || 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref_name == prefs::kWebKitDefaultFixedFontSize) { 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpFixedFontSample(); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (pref_name == prefs::kWebKitDefaultFontSize) { 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpStandardFontSample(); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpSerifFontSample(); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpSansSerifFontSample(); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else if (pref_name == prefs::kWebKitMinimumFontSize) { 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUpMinimumFontSample(); 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::SetUpStandardFontSample() { 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringValue font_value(standard_font_.GetValue()); 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue size_value(default_font_size_.GetValue()); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FontSettings.setUpStandardFontSample", font_value, size_value); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::SetUpSerifFontSample() { 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringValue font_value(serif_font_.GetValue()); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue size_value(default_font_size_.GetValue()); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FontSettings.setUpSerifFontSample", font_value, size_value); 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::SetUpSansSerifFontSample() { 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringValue font_value(sans_serif_font_.GetValue()); 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue size_value(default_font_size_.GetValue()); 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FontSettings.setUpSansSerifFontSample", font_value, size_value); 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::SetUpFixedFontSample() { 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringValue font_value(fixed_font_.GetValue()); 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue size_value(default_fixed_font_size_.GetValue()); 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FontSettings.setUpFixedFontSample", font_value, size_value); 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::SetUpMinimumFontSample() { 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue size_value(minimum_font_size_.GetValue()); 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("FontSettings.setUpMinimumFontSample", 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_value); 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace options 245