| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Font Settings Extension API implementation. | 5 // Font Settings Extension API implementation. |
| 6 | 6 |
| 7 #include "chrome/browser/extensions/api/font_settings/font_settings_api.h" | 7 #include "chrome/browser/extensions/api/font_settings/font_settings_api.h" |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 const char kOnFontChanged[] = "fontSettings.onFontChanged"; | 52 const char kOnFontChanged[] = "fontSettings.onFontChanged"; |
| 53 const char kOnMinimumFontSizeChanged[] = | 53 const char kOnMinimumFontSizeChanged[] = |
| 54 "fontSettings.onMinimumFontSizeChanged"; | 54 "fontSettings.onMinimumFontSizeChanged"; |
| 55 | 55 |
| 56 // Format for font name preference paths. | 56 // Format for font name preference paths. |
| 57 const char kWebKitFontPrefFormat[] = "webkit.webprefs.fonts.%s.%s"; | 57 const char kWebKitFontPrefFormat[] = "webkit.webprefs.fonts.%s.%s"; |
| 58 const char kWebKitFontPrefPrefix[] = "webkit.webprefs.fonts."; | 58 const char kWebKitFontPrefPrefix[] = "webkit.webprefs.fonts."; |
| 59 | 59 |
| 60 // Gets the font name preference path for |generic_family| and |script|. If | 60 // Gets the font name preference path for |generic_family| and |script|. If |
| 61 // |script| is NULL, uses prefs::kWebKitCommonScript. | 61 // |script| is NULL, uses prefs::kWebKitCommonScript. |
| 62 std::string GetFontNamePrefPath(const std::string& generic_family, | 62 std::string GetFontNamePrefPath(fonts::GenericFamily generic_family_enum, |
| 63 const std::string* script) { | 63 fonts::ScriptCode script_enum) { |
| 64 std::string script = fonts::ToString(script_enum); |
| 65 if (script.empty()) |
| 66 script = prefs::kWebKitCommonScript; |
| 67 std::string generic_family = fonts::ToString(generic_family_enum); |
| 64 return StringPrintf(kWebKitFontPrefFormat, | 68 return StringPrintf(kWebKitFontPrefFormat, |
| 65 generic_family.c_str(), | 69 generic_family.c_str(), |
| 66 script ? script->c_str() : prefs::kWebKitCommonScript); | 70 script.c_str()); |
| 67 } | 71 } |
| 68 | 72 |
| 69 // Extracts the generic family and script from font name pref path |pref_path|. | 73 // Extracts the generic family and script from font name pref path |pref_path|. |
| 70 bool ParseFontNamePrefPath(std::string pref_path, | 74 bool ParseFontNamePrefPath(std::string pref_path, |
| 71 std::string* generic_family, | 75 std::string* generic_family, |
| 72 std::string* script) { | 76 std::string* script) { |
| 73 if (!StartsWithASCII(pref_path, kWebKitFontPrefPrefix, true)) | 77 if (!StartsWithASCII(pref_path, kWebKitFontPrefPrefix, true)) |
| 74 return false; | 78 return false; |
| 75 | 79 |
| 76 size_t start = strlen(kWebKitFontPrefPrefix); | 80 size_t start = strlen(kWebKitFontPrefPrefix); |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 if (profile_->IsOffTheRecord()) { | 248 if (profile_->IsOffTheRecord()) { |
| 245 error_ = kSetFromIncognitoError; | 249 error_ = kSetFromIncognitoError; |
| 246 return false; | 250 return false; |
| 247 } | 251 } |
| 248 | 252 |
| 249 scoped_ptr<fonts::ClearFont::Params> params( | 253 scoped_ptr<fonts::ClearFont::Params> params( |
| 250 fonts::ClearFont::Params::Create(*args_)); | 254 fonts::ClearFont::Params::Create(*args_)); |
| 251 EXTENSION_FUNCTION_VALIDATE(params.get()); | 255 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 252 | 256 |
| 253 std::string pref_path = GetFontNamePrefPath(params->details.generic_family, | 257 std::string pref_path = GetFontNamePrefPath(params->details.generic_family, |
| 254 params->details.script.get()); | 258 params->details.script); |
| 255 | 259 |
| 256 // Ensure |pref_path| really is for a registered per-script font pref. | 260 // Ensure |pref_path| really is for a registered per-script font pref. |
| 257 EXTENSION_FUNCTION_VALIDATE( | 261 EXTENSION_FUNCTION_VALIDATE( |
| 258 profile_->GetPrefs()->FindPreference(pref_path.c_str())); | 262 profile_->GetPrefs()->FindPreference(pref_path.c_str())); |
| 259 | 263 |
| 260 ExtensionPrefs* prefs = profile_->GetExtensionService()->extension_prefs(); | 264 ExtensionPrefs* prefs = profile_->GetExtensionService()->extension_prefs(); |
| 261 prefs->RemoveExtensionControlledPref(extension_id(), | 265 prefs->RemoveExtensionControlledPref(extension_id(), |
| 262 pref_path.c_str(), | 266 pref_path.c_str(), |
| 263 kExtensionPrefsScopeRegular); | 267 kExtensionPrefsScopeRegular); |
| 264 return true; | 268 return true; |
| 265 } | 269 } |
| 266 | 270 |
| 267 bool GetFontFunction::RunImpl() { | 271 bool GetFontFunction::RunImpl() { |
| 268 scoped_ptr<fonts::GetFont::Params> params( | 272 scoped_ptr<fonts::GetFont::Params> params( |
| 269 fonts::GetFont::Params::Create(*args_)); | 273 fonts::GetFont::Params::Create(*args_)); |
| 270 EXTENSION_FUNCTION_VALIDATE(params.get()); | 274 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 271 | 275 |
| 272 std::string pref_path = GetFontNamePrefPath(params->details.generic_family, | 276 std::string pref_path = GetFontNamePrefPath(params->details.generic_family, |
| 273 params->details.script.get()); | 277 params->details.script); |
| 278 |
| 274 PrefService* prefs = profile_->GetPrefs(); | 279 PrefService* prefs = profile_->GetPrefs(); |
| 275 const PrefService::Preference* pref = | 280 const PrefService::Preference* pref = |
| 276 prefs->FindPreference(pref_path.c_str()); | 281 prefs->FindPreference(pref_path.c_str()); |
| 277 | 282 |
| 278 std::string font_name; | 283 std::string font_name; |
| 279 EXTENSION_FUNCTION_VALIDATE( | 284 EXTENSION_FUNCTION_VALIDATE( |
| 280 pref && pref->GetValue()->GetAsString(&font_name)); | 285 pref && pref->GetValue()->GetAsString(&font_name)); |
| 281 font_name = MaybeGetLocalizedFontName(font_name); | 286 font_name = MaybeGetLocalizedFontName(font_name); |
| 282 | 287 |
| 283 // We don't support incognito-specific font prefs, so don't consider them when | 288 // We don't support incognito-specific font prefs, so don't consider them when |
| (...skipping 16 matching lines...) Expand all Loading... |
| 300 if (profile_->IsOffTheRecord()) { | 305 if (profile_->IsOffTheRecord()) { |
| 301 error_ = kSetFromIncognitoError; | 306 error_ = kSetFromIncognitoError; |
| 302 return false; | 307 return false; |
| 303 } | 308 } |
| 304 | 309 |
| 305 scoped_ptr<fonts::SetFont::Params> params( | 310 scoped_ptr<fonts::SetFont::Params> params( |
| 306 fonts::SetFont::Params::Create(*args_)); | 311 fonts::SetFont::Params::Create(*args_)); |
| 307 EXTENSION_FUNCTION_VALIDATE(params.get()); | 312 EXTENSION_FUNCTION_VALIDATE(params.get()); |
| 308 | 313 |
| 309 std::string pref_path = GetFontNamePrefPath(params->details.generic_family, | 314 std::string pref_path = GetFontNamePrefPath(params->details.generic_family, |
| 310 params->details.script.get()); | 315 params->details.script); |
| 316 |
| 311 // Ensure |pref_path| really is for a registered font pref. | 317 // Ensure |pref_path| really is for a registered font pref. |
| 312 EXTENSION_FUNCTION_VALIDATE( | 318 EXTENSION_FUNCTION_VALIDATE( |
| 313 profile_->GetPrefs()->FindPreference(pref_path.c_str())); | 319 profile_->GetPrefs()->FindPreference(pref_path.c_str())); |
| 314 | 320 |
| 315 ExtensionPrefs* prefs = profile_->GetExtensionService()->extension_prefs(); | 321 ExtensionPrefs* prefs = profile_->GetExtensionService()->extension_prefs(); |
| 316 prefs->SetExtensionControlledPref( | 322 prefs->SetExtensionControlledPref( |
| 317 extension_id(), | 323 extension_id(), |
| 318 pref_path.c_str(), | 324 pref_path.c_str(), |
| 319 kExtensionPrefsScopeRegular, | 325 kExtensionPrefsScopeRegular, |
| 320 Value::CreateStringValue(params->details.font_id)); | 326 Value::CreateStringValue(params->details.font_id)); |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 | 478 |
| 473 const char* SetMinimumFontSizeFunction::GetPrefName() { | 479 const char* SetMinimumFontSizeFunction::GetPrefName() { |
| 474 return prefs::kWebKitMinimumFontSize; | 480 return prefs::kWebKitMinimumFontSize; |
| 475 } | 481 } |
| 476 | 482 |
| 477 const char* SetMinimumFontSizeFunction::GetKey() { | 483 const char* SetMinimumFontSizeFunction::GetKey() { |
| 478 return kPixelSizeKey; | 484 return kPixelSizeKey; |
| 479 } | 485 } |
| 480 | 486 |
| 481 } // namespace extensions | 487 } // namespace extensions |
| OLD | NEW |