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