font_settings_handler.cc revision 868fa2fe829687343ffae624259930155e16dbd8
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" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/strings/string_number_conversions.h" 15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string_util.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browser_process.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/character_encoding.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. 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) font_encoding_.Init(prefs::kDefaultCharset, pref_service); 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) standard_font_.Init(prefs::kWebKitStandardFontFamily, 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_service, 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&FontSettingsHandler::SetUpStandardFontSample, 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) serif_font_.Init(prefs::kWebKitSerifFontFamily, 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_service, 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&FontSettingsHandler::SetUpSerifFontSample, 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) sans_serif_font_.Init( 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kWebKitSansSerifFontFamily, 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_service, 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&FontSettingsHandler::SetUpSansSerifFontSample, 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Closure callback = base::Bind( 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) &FontSettingsHandler::SetUpFixedFontSample, base::Unretained(this)); 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) fixed_font_.Init(prefs::kWebKitFixedFontFamily, pref_service, callback); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default_fixed_font_size_.Init(prefs::kWebKitDefaultFixedFontSize, 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_service, callback); 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) default_font_size_.Init( 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kWebKitDefaultFontSize, 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_service, 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&FontSettingsHandler::OnWebKitDefaultFontSizeChanged, 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) minimum_font_size_.Init( 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) prefs::kWebKitMinimumFontSize, 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) pref_service, 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Bind(&FontSettingsHandler::SetUpMinimumFontSample, 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::Unretained(this))); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->RegisterMessageCallback("fetchFontsData", 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&FontSettingsHandler::HandleFetchFontsData, 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::HandleFetchFontsData(const ListValue* args) { 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::GetFontListAsync( 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&FontSettingsHandler::FontsListHasLoaded, 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this))); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::FontsListHasLoaded( 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<base::ListValue> list) { 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Selects the directionality for the fonts in the given list. 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < list->GetSize(); i++) { 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ListValue* font; 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool has_font = list->GetList(i, &font); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(has_font); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 value; 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool has_value = font->GetString(1, &value); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(has_value); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool has_rtl_chars = base::i18n::StringContainsStrongRTLChars(value); 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) font->Append(new base::StringValue(has_rtl_chars ? "rtl" : "ltr")); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ListValue encoding_list; 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::vector<CharacterEncoding::EncodingInfo>* encodings; 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) encodings = CharacterEncoding::GetCurrentDisplayEncodings( 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) g_browser_process->GetApplicationLocale(), 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref_service->GetString(prefs::kStaticEncodings), 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pref_service->GetString(prefs::kRecentlySelectedEncoding)); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(encodings); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(!encodings->empty()); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<CharacterEncoding::EncodingInfo>::const_iterator it; 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (it = encodings->begin(); it != encodings->end(); ++it) { 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ListValue* option = new ListValue(); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (it->encoding_id) { 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int cmd_id = it->encoding_id; 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string encoding = 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CharacterEncoding::GetCanonicalEncodingNameByCommandId(cmd_id); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 name = it->encoding_display_name; 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool has_rtl_chars = base::i18n::StringContainsStrongRTLChars(name); 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option->Append(new base::StringValue(encoding)); 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option->Append(new base::StringValue(name)); 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) option->Append(new base::StringValue(has_rtl_chars ? "rtl" : "ltr")); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add empty name/value to indicate a separator item. 191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) option->Append(new base::StringValue(std::string())); 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) option->Append(new base::StringValue(std::string())); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) encoding_list.Append(option); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ListValue selected_values; 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) selected_values.Append(new base::StringValue(MaybeGetLocalizedFontName( 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) standard_font_.GetValue()))); 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) selected_values.Append(new base::StringValue(MaybeGetLocalizedFontName( 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) serif_font_.GetValue()))); 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) selected_values.Append(new base::StringValue(MaybeGetLocalizedFontName( 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sans_serif_font_.GetValue()))); 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) selected_values.Append(new base::StringValue(MaybeGetLocalizedFontName( 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fixed_font_.GetValue()))); 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) selected_values.Append(new base::StringValue(font_encoding_.GetValue())); 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("FontSettings.setFontsData", 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *list.get(), encoding_list, 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) selected_values); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::SetUpStandardFontSample() { 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringValue font_value(standard_font_.GetValue()); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue size_value(default_font_size_.GetValue()); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FontSettings.setUpStandardFontSample", font_value, size_value); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::SetUpSerifFontSample() { 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringValue font_value(serif_font_.GetValue()); 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue size_value(default_font_size_.GetValue()); 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FontSettings.setUpSerifFontSample", font_value, size_value); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::SetUpSansSerifFontSample() { 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringValue font_value(sans_serif_font_.GetValue()); 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue size_value(default_font_size_.GetValue()); 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FontSettings.setUpSansSerifFontSample", font_value, size_value); 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::SetUpFixedFontSample() { 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringValue font_value(fixed_font_.GetValue()); 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue size_value(default_fixed_font_size_.GetValue()); 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction( 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "FontSettings.setUpFixedFontSample", font_value, size_value); 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void FontSettingsHandler::SetUpMinimumFontSample() { 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue size_value(minimum_font_size_.GetValue()); 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) web_ui()->CallJavascriptFunction("FontSettings.setUpMinimumFontSample", 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_value); 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void FontSettingsHandler::OnWebKitDefaultFontSizeChanged() { 2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUpStandardFontSample(); 2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUpSerifFontSample(); 2502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) SetUpSansSerifFontSample(); 2512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace options 254