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 3// found in the LICENSE file. 4 5#include "chrome/browser/ui/webui/options/font_settings_utils.h" 6 7#import <Cocoa/Cocoa.h> 8 9#include "base/mac/scoped_nsautorelease_pool.h" 10#include "base/prefs/pref_service.h" 11#include "base/strings/sys_string_conversions.h" 12#include "base/values.h" 13#include "chrome/common/pref_names.h" 14 15namespace options { 16 17static void ValidateFontFamily(PrefService* prefs, 18 const char* family_pref_name) { 19 // The native font settings dialog saved fonts by the font name, rather 20 // than the family name. This worked for the old dialog since 21 // -[NSFont fontWithName:size] accepted a font or family name, but the 22 // behavior was technically wrong. Since we really need the family name for 23 // the dom-ui options window, we will fix the saved preference if necessary. 24 NSString *family_name = 25 base::SysUTF8ToNSString(prefs->GetString(family_pref_name)); 26 NSFont *font = [NSFont fontWithName:family_name 27 size:[NSFont systemFontSize]]; 28 if (font && 29 [[font familyName] caseInsensitiveCompare:family_name] != NSOrderedSame) { 30 std::string new_family_name = base::SysNSStringToUTF8([font familyName]); 31 prefs->SetString(family_pref_name, new_family_name); 32 } 33} 34 35// static 36void FontSettingsUtilities::ValidateSavedFonts(PrefService* prefs) { 37 ValidateFontFamily(prefs, prefs::kWebKitSerifFontFamily); 38 ValidateFontFamily(prefs, prefs::kWebKitSansSerifFontFamily); 39 ValidateFontFamily(prefs, prefs::kWebKitFixedFontFamily); 40} 41 42} // namespace options 43