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 <stddef.h> | 9 #include <stddef.h> |
10 | 10 |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 | 220 |
221 static base::LazyInstance<BrowserContextKeyedAPIFactory<FontSettingsAPI> > | 221 static base::LazyInstance<BrowserContextKeyedAPIFactory<FontSettingsAPI> > |
222 g_factory = LAZY_INSTANCE_INITIALIZER; | 222 g_factory = LAZY_INSTANCE_INITIALIZER; |
223 | 223 |
224 // static | 224 // static |
225 BrowserContextKeyedAPIFactory<FontSettingsAPI>* | 225 BrowserContextKeyedAPIFactory<FontSettingsAPI>* |
226 FontSettingsAPI::GetFactoryInstance() { | 226 FontSettingsAPI::GetFactoryInstance() { |
227 return g_factory.Pointer(); | 227 return g_factory.Pointer(); |
228 } | 228 } |
229 | 229 |
230 bool FontSettingsClearFontFunction::RunSync() { | 230 ExtensionFunction::ResponseAction FontSettingsClearFontFunction::Run() { |
231 if (GetProfile()->IsOffTheRecord()) { | 231 Profile* profile = Profile::FromBrowserContext(browser_context()); |
232 error_ = kSetFromIncognitoError; | 232 if (profile->IsOffTheRecord()) |
233 return false; | 233 return RespondNow(Error(kSetFromIncognitoError)); |
234 } | |
235 | 234 |
236 std::unique_ptr<fonts::ClearFont::Params> params( | 235 std::unique_ptr<fonts::ClearFont::Params> params( |
237 fonts::ClearFont::Params::Create(*args_)); | 236 fonts::ClearFont::Params::Create(*args_)); |
238 EXTENSION_FUNCTION_VALIDATE(params.get()); | 237 EXTENSION_FUNCTION_VALIDATE(params.get()); |
239 | 238 |
240 std::string pref_path = GetFontNamePrefPath(params->details.generic_family, | 239 std::string pref_path = GetFontNamePrefPath(params->details.generic_family, |
241 params->details.script); | 240 params->details.script); |
242 | 241 |
243 // Ensure |pref_path| really is for a registered per-script font pref. | 242 // Ensure |pref_path| really is for a registered per-script font pref. |
244 EXTENSION_FUNCTION_VALIDATE( | 243 EXTENSION_FUNCTION_VALIDATE(profile->GetPrefs()->FindPreference(pref_path)); |
245 GetProfile()->GetPrefs()->FindPreference(pref_path)); | |
246 | 244 |
247 PreferenceAPI::Get(GetProfile())->RemoveExtensionControlledPref( | 245 PreferenceAPI::Get(profile)->RemoveExtensionControlledPref( |
248 extension_id(), pref_path, kExtensionPrefsScopeRegular); | 246 extension_id(), pref_path, kExtensionPrefsScopeRegular); |
249 return true; | 247 return RespondNow(NoArguments()); |
250 } | 248 } |
251 | 249 |
252 bool FontSettingsGetFontFunction::RunSync() { | 250 ExtensionFunction::ResponseAction FontSettingsGetFontFunction::Run() { |
253 std::unique_ptr<fonts::GetFont::Params> params( | 251 std::unique_ptr<fonts::GetFont::Params> params( |
254 fonts::GetFont::Params::Create(*args_)); | 252 fonts::GetFont::Params::Create(*args_)); |
255 EXTENSION_FUNCTION_VALIDATE(params.get()); | 253 EXTENSION_FUNCTION_VALIDATE(params.get()); |
256 | 254 |
257 std::string pref_path = GetFontNamePrefPath(params->details.generic_family, | 255 std::string pref_path = GetFontNamePrefPath(params->details.generic_family, |
258 params->details.script); | 256 params->details.script); |
259 | 257 |
260 PrefService* prefs = GetProfile()->GetPrefs(); | 258 Profile* profile = Profile::FromBrowserContext(browser_context()); |
| 259 PrefService* prefs = profile->GetPrefs(); |
261 const PrefService::Preference* pref = | 260 const PrefService::Preference* pref = |
262 prefs->FindPreference(pref_path); | 261 prefs->FindPreference(pref_path); |
263 | 262 |
264 std::string font_name; | 263 std::string font_name; |
265 EXTENSION_FUNCTION_VALIDATE( | 264 EXTENSION_FUNCTION_VALIDATE( |
266 pref && pref->GetValue()->GetAsString(&font_name)); | 265 pref && pref->GetValue()->GetAsString(&font_name)); |
267 font_name = MaybeGetLocalizedFontName(font_name); | 266 font_name = MaybeGetLocalizedFontName(font_name); |
268 | 267 |
269 // We don't support incognito-specific font prefs, so don't consider them when | 268 // We don't support incognito-specific font prefs, so don't consider them when |
270 // getting level of control. | 269 // getting level of control. |
271 const bool kIncognito = false; | 270 const bool kIncognito = false; |
272 std::string level_of_control = | 271 std::string level_of_control = |
273 extensions::preference_helpers::GetLevelOfControl( | 272 extensions::preference_helpers::GetLevelOfControl(profile, extension_id(), |
274 GetProfile(), extension_id(), pref_path, kIncognito); | 273 pref_path, kIncognito); |
275 | 274 |
276 std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue()); | 275 std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue()); |
277 result->SetString(kFontIdKey, font_name); | 276 result->SetString(kFontIdKey, font_name); |
278 result->SetString(kLevelOfControlKey, level_of_control); | 277 result->SetString(kLevelOfControlKey, level_of_control); |
279 SetResult(std::move(result)); | 278 return RespondNow(OneArgument(std::move(result))); |
280 return true; | |
281 } | 279 } |
282 | 280 |
283 bool FontSettingsSetFontFunction::RunSync() { | 281 ExtensionFunction::ResponseAction FontSettingsSetFontFunction::Run() { |
284 if (GetProfile()->IsOffTheRecord()) { | 282 Profile* profile = Profile::FromBrowserContext(browser_context()); |
285 error_ = kSetFromIncognitoError; | 283 if (profile->IsOffTheRecord()) |
286 return false; | 284 return RespondNow(Error(kSetFromIncognitoError)); |
287 } | |
288 | 285 |
289 std::unique_ptr<fonts::SetFont::Params> params( | 286 std::unique_ptr<fonts::SetFont::Params> params( |
290 fonts::SetFont::Params::Create(*args_)); | 287 fonts::SetFont::Params::Create(*args_)); |
291 EXTENSION_FUNCTION_VALIDATE(params.get()); | 288 EXTENSION_FUNCTION_VALIDATE(params.get()); |
292 | 289 |
293 std::string pref_path = GetFontNamePrefPath(params->details.generic_family, | 290 std::string pref_path = GetFontNamePrefPath(params->details.generic_family, |
294 params->details.script); | 291 params->details.script); |
295 | 292 |
296 // Ensure |pref_path| really is for a registered font pref. | 293 // Ensure |pref_path| really is for a registered font pref. |
297 EXTENSION_FUNCTION_VALIDATE( | 294 EXTENSION_FUNCTION_VALIDATE(profile->GetPrefs()->FindPreference(pref_path)); |
298 GetProfile()->GetPrefs()->FindPreference(pref_path)); | |
299 | 295 |
300 PreferenceAPI::Get(GetProfile())->SetExtensionControlledPref( | 296 PreferenceAPI::Get(profile)->SetExtensionControlledPref( |
301 extension_id(), | 297 extension_id(), pref_path, kExtensionPrefsScopeRegular, |
302 pref_path, | |
303 kExtensionPrefsScopeRegular, | |
304 new base::StringValue(params->details.font_id)); | 298 new base::StringValue(params->details.font_id)); |
305 return true; | 299 return RespondNow(NoArguments()); |
306 } | 300 } |
307 | 301 |
308 bool FontSettingsGetFontListFunction::RunAsync() { | 302 bool FontSettingsGetFontListFunction::RunAsync() { |
309 content::GetFontListAsync( | 303 content::GetFontListAsync( |
310 Bind(&FontSettingsGetFontListFunction::FontListHasLoaded, this)); | 304 Bind(&FontSettingsGetFontListFunction::FontListHasLoaded, this)); |
311 return true; | 305 return true; |
312 } | 306 } |
313 | 307 |
314 void FontSettingsGetFontListFunction::FontListHasLoaded( | 308 void FontSettingsGetFontListFunction::FontListHasLoaded( |
315 std::unique_ptr<base::ListValue> list) { | 309 std::unique_ptr<base::ListValue> list) { |
(...skipping 28 matching lines...) Expand all Loading... |
344 new base::DictionaryValue()); | 338 new base::DictionaryValue()); |
345 font_name->Set(kFontIdKey, new base::StringValue(name)); | 339 font_name->Set(kFontIdKey, new base::StringValue(name)); |
346 font_name->Set(kDisplayNameKey, new base::StringValue(localized_name)); | 340 font_name->Set(kDisplayNameKey, new base::StringValue(localized_name)); |
347 result->Append(std::move(font_name)); | 341 result->Append(std::move(font_name)); |
348 } | 342 } |
349 | 343 |
350 SetResult(std::move(result)); | 344 SetResult(std::move(result)); |
351 return true; | 345 return true; |
352 } | 346 } |
353 | 347 |
354 bool ClearFontPrefExtensionFunction::RunSync() { | 348 ExtensionFunction::ResponseAction ClearFontPrefExtensionFunction::Run() { |
355 if (GetProfile()->IsOffTheRecord()) { | 349 Profile* profile = Profile::FromBrowserContext(browser_context()); |
356 error_ = kSetFromIncognitoError; | 350 if (profile->IsOffTheRecord()) |
357 return false; | 351 return RespondNow(Error(kSetFromIncognitoError)); |
358 } | |
359 | 352 |
360 PreferenceAPI::Get(GetProfile())->RemoveExtensionControlledPref( | 353 PreferenceAPI::Get(profile)->RemoveExtensionControlledPref( |
361 extension_id(), GetPrefName(), kExtensionPrefsScopeRegular); | 354 extension_id(), GetPrefName(), kExtensionPrefsScopeRegular); |
362 return true; | 355 return RespondNow(NoArguments()); |
363 } | 356 } |
364 | 357 |
365 bool GetFontPrefExtensionFunction::RunSync() { | 358 ExtensionFunction::ResponseAction GetFontPrefExtensionFunction::Run() { |
366 PrefService* prefs = GetProfile()->GetPrefs(); | 359 Profile* profile = Profile::FromBrowserContext(browser_context()); |
| 360 PrefService* prefs = profile->GetPrefs(); |
367 const PrefService::Preference* pref = prefs->FindPreference(GetPrefName()); | 361 const PrefService::Preference* pref = prefs->FindPreference(GetPrefName()); |
368 EXTENSION_FUNCTION_VALIDATE(pref); | 362 EXTENSION_FUNCTION_VALIDATE(pref); |
369 | 363 |
370 // We don't support incognito-specific font prefs, so don't consider them when | 364 // We don't support incognito-specific font prefs, so don't consider them when |
371 // getting level of control. | 365 // getting level of control. |
372 const bool kIncognito = false; | 366 const bool kIncognito = false; |
373 | 367 |
374 std::string level_of_control = | 368 std::string level_of_control = |
375 extensions::preference_helpers::GetLevelOfControl( | 369 extensions::preference_helpers::GetLevelOfControl( |
376 GetProfile(), extension_id(), GetPrefName(), kIncognito); | 370 profile, extension_id(), GetPrefName(), kIncognito); |
377 | 371 |
378 std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue()); | 372 std::unique_ptr<base::DictionaryValue> result(new base::DictionaryValue()); |
379 result->Set(GetKey(), pref->GetValue()->DeepCopy()); | 373 result->Set(GetKey(), pref->GetValue()->DeepCopy()); |
380 result->SetString(kLevelOfControlKey, level_of_control); | 374 result->SetString(kLevelOfControlKey, level_of_control); |
381 SetResult(std::move(result)); | 375 return RespondNow(OneArgument(std::move(result))); |
382 return true; | |
383 } | 376 } |
384 | 377 |
385 bool SetFontPrefExtensionFunction::RunSync() { | 378 ExtensionFunction::ResponseAction SetFontPrefExtensionFunction::Run() { |
386 if (GetProfile()->IsOffTheRecord()) { | 379 Profile* profile = Profile::FromBrowserContext(browser_context()); |
387 error_ = kSetFromIncognitoError; | 380 if (profile->IsOffTheRecord()) |
388 return false; | 381 return RespondNow(Error(kSetFromIncognitoError)); |
389 } | |
390 | 382 |
391 base::DictionaryValue* details = NULL; | 383 base::DictionaryValue* details = NULL; |
392 EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(0, &details)); | 384 EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(0, &details)); |
393 | 385 |
394 base::Value* value; | 386 base::Value* value; |
395 EXTENSION_FUNCTION_VALIDATE(details->Get(GetKey(), &value)); | 387 EXTENSION_FUNCTION_VALIDATE(details->Get(GetKey(), &value)); |
396 | 388 |
397 PreferenceAPI::Get(GetProfile()) | 389 PreferenceAPI::Get(profile)->SetExtensionControlledPref( |
398 ->SetExtensionControlledPref(extension_id(), | 390 extension_id(), GetPrefName(), kExtensionPrefsScopeRegular, |
399 GetPrefName(), | 391 value->DeepCopy()); |
400 kExtensionPrefsScopeRegular, | 392 return RespondNow(NoArguments()); |
401 value->DeepCopy()); | |
402 return true; | |
403 } | 393 } |
404 | 394 |
405 const char* FontSettingsClearDefaultFontSizeFunction::GetPrefName() { | 395 const char* FontSettingsClearDefaultFontSizeFunction::GetPrefName() { |
406 return prefs::kWebKitDefaultFontSize; | 396 return prefs::kWebKitDefaultFontSize; |
407 } | 397 } |
408 | 398 |
409 const char* FontSettingsGetDefaultFontSizeFunction::GetPrefName() { | 399 const char* FontSettingsGetDefaultFontSizeFunction::GetPrefName() { |
410 return prefs::kWebKitDefaultFontSize; | 400 return prefs::kWebKitDefaultFontSize; |
411 } | 401 } |
412 | 402 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
456 | 446 |
457 const char* FontSettingsSetMinimumFontSizeFunction::GetPrefName() { | 447 const char* FontSettingsSetMinimumFontSizeFunction::GetPrefName() { |
458 return prefs::kWebKitMinimumFontSize; | 448 return prefs::kWebKitMinimumFontSize; |
459 } | 449 } |
460 | 450 |
461 const char* FontSettingsSetMinimumFontSizeFunction::GetKey() { | 451 const char* FontSettingsSetMinimumFontSizeFunction::GetKey() { |
462 return kPixelSizeKey; | 452 return kPixelSizeKey; |
463 } | 453 } |
464 | 454 |
465 } // namespace extensions | 455 } // namespace extensions |
OLD | NEW |