| Index: chrome/browser/extensions/extension_font_settings_api.cc
|
| diff --git a/chrome/browser/extensions/extension_font_settings_api.cc b/chrome/browser/extensions/extension_font_settings_api.cc
|
| index 6102785ec2b0e834a3bcc8741892ca027ee973cc..0b250d6d74c13148ca80b970ca27bf7a187e28bb 100644
|
| --- a/chrome/browser/extensions/extension_font_settings_api.cc
|
| +++ b/chrome/browser/extensions/extension_font_settings_api.cc
|
| @@ -29,12 +29,15 @@
|
|
|
| namespace {
|
|
|
| -const char kGenericFamilyKey[] = "genericFamily";
|
| +const char kCharsetKey[] = "charset";
|
| const char kFontNameKey[] = "fontName";
|
| +const char kGenericFamilyKey[] = "genericFamily";
|
| const char kLocalizedNameKey[] = "localizedName";
|
| const char kPixelSizeKey[] = "pixelSize";
|
| const char kScriptKey[] = "script";
|
|
|
| +const char kOnDefaultCharacterSetChanged[] =
|
| + "experimental.fontSettings.onDefaultCharacterSetChanged";
|
| const char kOnDefaultFixedFontSizeChanged[] =
|
| "experimental.fontSettings.onDefaultFixedFontSizeChanged";
|
| const char kOnDefaultFontSizeChanged[] =
|
| @@ -140,17 +143,18 @@ ExtensionFontSettingsEventRouter::~ExtensionFontSettingsEventRouter() {}
|
| void ExtensionFontSettingsEventRouter::Init() {
|
| registrar_.Init(profile_->GetPrefs());
|
|
|
| - registrar_.Add(prefs::kWebKitGlobalDefaultFixedFontSize, this);
|
| - pref_event_map_[prefs::kWebKitGlobalDefaultFixedFontSize] =
|
| - kOnDefaultFixedFontSizeChanged;
|
| -
|
| - registrar_.Add(prefs::kWebKitGlobalDefaultFontSize, this);
|
| - pref_event_map_[prefs::kWebKitGlobalDefaultFontSize] =
|
| - kOnDefaultFontSizeChanged;
|
| -
|
| - registrar_.Add(prefs::kWebKitGlobalMinimumFontSize, this);
|
| - pref_event_map_[prefs::kWebKitGlobalMinimumFontSize] =
|
| - kOnMinimumFontSizeChanged;
|
| + AddPrefToObserve(prefs::kWebKitGlobalDefaultFixedFontSize,
|
| + kOnDefaultFixedFontSizeChanged,
|
| + kPixelSizeKey);
|
| + AddPrefToObserve(prefs::kWebKitGlobalDefaultFontSize,
|
| + kOnDefaultFontSizeChanged,
|
| + kPixelSizeKey);
|
| + AddPrefToObserve(prefs::kWebKitGlobalMinimumFontSize,
|
| + kOnMinimumFontSizeChanged,
|
| + kPixelSizeKey);
|
| + AddPrefToObserve(prefs::kGlobalDefaultCharset,
|
| + kOnDefaultCharacterSetChanged,
|
| + kCharsetKey);
|
|
|
| registrar_.Add(prefs::kWebKitGlobalStandardFontFamily, this);
|
| registrar_.Add(prefs::kWebKitGlobalSerifFontFamily, this);
|
| @@ -172,6 +176,13 @@ void ExtensionFontSettingsEventRouter::Init() {
|
| prefs::kWebKitFantasyFontFamilyMap, this);
|
| }
|
|
|
| +void ExtensionFontSettingsEventRouter::AddPrefToObserve(const char* pref_name,
|
| + const char* event_name,
|
| + const char* key) {
|
| + registrar_.Add(pref_name, this);
|
| + pref_event_map_[pref_name] = std::make_pair(event_name, key);
|
| +}
|
| +
|
| void ExtensionFontSettingsEventRouter::Observe(
|
| int type,
|
| const content::NotificationSource& source,
|
| @@ -185,19 +196,21 @@ void ExtensionFontSettingsEventRouter::Observe(
|
| bool incognito = (pref_service != profile_->GetPrefs());
|
| // We're only observing pref changes on the regular profile.
|
| DCHECK(!incognito);
|
| - const std::string* pref_key =
|
| + const std::string* pref_name =
|
| content::Details<const std::string>(details).ptr();
|
|
|
| - PrefEventMap::iterator iter = pref_event_map_.find(*pref_key);
|
| + PrefEventMap::iterator iter = pref_event_map_.find(*pref_name);
|
| if (iter != pref_event_map_.end()) {
|
| - OnFontSizePrefChanged(pref_service, *pref_key, iter->second, incognito);
|
| + const std::string& event_name = iter->second.first;
|
| + const std::string& key = iter->second.second;
|
| + OnFontPrefChanged(pref_service, *pref_name, event_name, key, incognito);
|
| return;
|
| }
|
|
|
| std::string generic_family;
|
| std::string script;
|
| - if (ParseFontNamePrefPath(*pref_key, &generic_family, &script)) {
|
| - OnFontNamePrefChanged(pref_service, *pref_key, generic_family, script,
|
| + if (ParseFontNamePrefPath(*pref_name, &generic_family, &script)) {
|
| + OnFontNamePrefChanged(pref_service, *pref_name, generic_family, script,
|
| incognito);
|
| return;
|
| }
|
| @@ -207,12 +220,12 @@ void ExtensionFontSettingsEventRouter::Observe(
|
|
|
| void ExtensionFontSettingsEventRouter::OnFontNamePrefChanged(
|
| PrefService* pref_service,
|
| - const std::string& pref_key,
|
| + const std::string& pref_name,
|
| const std::string& generic_family,
|
| const std::string& script,
|
| bool incognito) {
|
| const PrefService::Preference* pref = pref_service->FindPreference(
|
| - pref_key.c_str());
|
| + pref_name.c_str());
|
| CHECK(pref);
|
|
|
| std::string font_name;
|
| @@ -236,28 +249,23 @@ void ExtensionFontSettingsEventRouter::OnFontNamePrefChanged(
|
| &args,
|
| ExtensionAPIPermission::kExperimental,
|
| incognito,
|
| - pref_key);
|
| + pref_name);
|
| }
|
|
|
| -void ExtensionFontSettingsEventRouter::OnFontSizePrefChanged(
|
| +void ExtensionFontSettingsEventRouter::OnFontPrefChanged(
|
| PrefService* pref_service,
|
| - const std::string& pref_key,
|
| + const std::string& pref_name,
|
| const std::string& event_name,
|
| + const std::string& key,
|
| bool incognito) {
|
| const PrefService::Preference* pref = pref_service->FindPreference(
|
| - pref_key.c_str());
|
| + pref_name.c_str());
|
| CHECK(pref);
|
|
|
| - int size;
|
| - if (!pref->GetValue()->GetAsInteger(&size)) {
|
| - NOTREACHED();
|
| - return;
|
| - }
|
| -
|
| ListValue args;
|
| DictionaryValue* dict = new DictionaryValue();
|
| args.Append(dict);
|
| - dict->SetInteger(kPixelSizeKey, size);
|
| + dict->Set(key, pref->GetValue()->DeepCopy());
|
|
|
| extension_preference_helpers::DispatchEventToExtensions(
|
| profile_,
|
| @@ -265,7 +273,7 @@ void ExtensionFontSettingsEventRouter::OnFontSizePrefChanged(
|
| &args,
|
| ExtensionAPIPermission::kExperimental,
|
| incognito,
|
| - pref_key);
|
| + pref_name);
|
| }
|
|
|
| bool GetFontFunction::RunImpl() {
|
| @@ -353,28 +361,29 @@ bool GetFontListFunction::CopyFontsToResult(ListValue* fonts) {
|
| return true;
|
| }
|
|
|
| -bool GetFontSizeExtensionFunction::RunImpl() {
|
| +bool GetFontPrefExtensionFunction::RunImpl() {
|
| PrefService* prefs = profile_->GetPrefs();
|
| - int size = prefs->GetInteger(GetPrefName());
|
| + const PrefService::Preference* pref = prefs->FindPreference(GetPrefName());
|
| + EXTENSION_FUNCTION_VALIDATE(pref);
|
|
|
| DictionaryValue* result = new DictionaryValue();
|
| - result->SetInteger(kPixelSizeKey, size);
|
| + result->Set(GetKey(), pref->GetValue()->DeepCopy());
|
| result_.reset(result);
|
| return true;
|
| }
|
|
|
| -bool SetFontSizeExtensionFunction::RunImpl() {
|
| +bool SetFontPrefExtensionFunction::RunImpl() {
|
| DictionaryValue* details = NULL;
|
| EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(0, &details));
|
|
|
| - int size;
|
| - EXTENSION_FUNCTION_VALIDATE(details->GetInteger(kPixelSizeKey, &size));
|
| + Value* value;
|
| + EXTENSION_FUNCTION_VALIDATE(details->Get(GetKey(), &value));
|
|
|
| ExtensionPrefs* prefs = profile_->GetExtensionService()->extension_prefs();
|
| prefs->SetExtensionControlledPref(extension_id(),
|
| GetPrefName(),
|
| kExtensionPrefsScopeRegular,
|
| - Value::CreateIntegerValue(size));
|
| + value->DeepCopy());
|
| return true;
|
| }
|
|
|
| @@ -382,22 +391,62 @@ const char* GetDefaultFontSizeFunction::GetPrefName() {
|
| return prefs::kWebKitGlobalDefaultFontSize;
|
| }
|
|
|
| +const char* GetDefaultFontSizeFunction::GetKey() {
|
| + return kPixelSizeKey;
|
| +}
|
| +
|
| const char* SetDefaultFontSizeFunction::GetPrefName() {
|
| return prefs::kWebKitGlobalDefaultFontSize;
|
| }
|
|
|
| +const char* SetDefaultFontSizeFunction::GetKey() {
|
| + return kPixelSizeKey;
|
| +}
|
| +
|
| const char* GetDefaultFixedFontSizeFunction::GetPrefName() {
|
| return prefs::kWebKitGlobalDefaultFixedFontSize;
|
| }
|
|
|
| +const char* GetDefaultFixedFontSizeFunction::GetKey() {
|
| + return kPixelSizeKey;
|
| +}
|
| +
|
| const char* SetDefaultFixedFontSizeFunction::GetPrefName() {
|
| return prefs::kWebKitGlobalDefaultFixedFontSize;
|
| }
|
|
|
| +const char* SetDefaultFixedFontSizeFunction::GetKey() {
|
| + return kPixelSizeKey;
|
| +}
|
| +
|
| const char* GetMinimumFontSizeFunction::GetPrefName() {
|
| return prefs::kWebKitGlobalMinimumFontSize;
|
| }
|
|
|
| +const char* GetMinimumFontSizeFunction::GetKey() {
|
| + return kPixelSizeKey;
|
| +}
|
| +
|
| const char* SetMinimumFontSizeFunction::GetPrefName() {
|
| return prefs::kWebKitGlobalMinimumFontSize;
|
| }
|
| +
|
| +const char* SetMinimumFontSizeFunction::GetKey() {
|
| + return kPixelSizeKey;
|
| +}
|
| +
|
| +const char* GetDefaultCharacterSetFunction::GetPrefName() {
|
| + return prefs::kGlobalDefaultCharset;
|
| +}
|
| +
|
| +const char* GetDefaultCharacterSetFunction::GetKey() {
|
| + return kCharsetKey;
|
| +}
|
| +
|
| +const char* SetDefaultCharacterSetFunction::GetPrefName() {
|
| + return prefs::kGlobalDefaultCharset;
|
| +}
|
| +
|
| +const char* SetDefaultCharacterSetFunction::GetKey() {
|
| + return kCharsetKey;
|
| +}
|
|
|