Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: chrome/browser/extensions/api/preference/preference_api.cc

Issue 220353002: Remove //chrome dependency from ExtensionPrefs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: don't ref ContentSettingsStore if !ENABLE_EXTENSIONS Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 #include "chrome/browser/extensions/api/preference/preference_api.h" 5 #include "chrome/browser/extensions/api/preference/preference_api.h"
6 6
7 #include <map> 7 #include <map>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
11 #include "base/memory/singleton.h" 11 #include "base/memory/singleton.h"
12 #include "base/prefs/pref_service.h" 12 #include "base/prefs/pref_service.h"
13 #include "base/stl_util.h" 13 #include "base/stl_util.h"
14 #include "base/strings/stringprintf.h" 14 #include "base/strings/stringprintf.h"
15 #include "base/values.h" 15 #include "base/values.h"
16 #include "chrome/browser/chrome_notification_types.h" 16 #include "chrome/browser/chrome_notification_types.h"
17 #include "chrome/browser/extensions/api/content_settings/content_settings_servic e.h"
17 #include "chrome/browser/extensions/api/preference/preference_api_constants.h" 18 #include "chrome/browser/extensions/api/preference/preference_api_constants.h"
18 #include "chrome/browser/extensions/api/preference/preference_helpers.h" 19 #include "chrome/browser/extensions/api/preference/preference_helpers.h"
19 #include "chrome/browser/extensions/api/proxy/proxy_api.h" 20 #include "chrome/browser/extensions/api/proxy/proxy_api.h"
20 #include "chrome/browser/extensions/extension_service.h" 21 #include "chrome/browser/extensions/extension_service.h"
21 #include "chrome/browser/profiles/profile.h" 22 #include "chrome/browser/profiles/profile.h"
22 #include "chrome/common/pref_names.h" 23 #include "chrome/common/pref_names.h"
23 #include "components/translate/core/common/translate_pref_names.h" 24 #include "components/translate/core/common/translate_pref_names.h"
24 #include "content/public/browser/notification_details.h" 25 #include "content/public/browser/notification_details.h"
25 #include "content/public/browser/notification_source.h" 26 #include "content/public/browser/notification_source.h"
26 #include "extensions/browser/extension_pref_value_map.h" 27 #include "extensions/browser/extension_pref_value_map.h"
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 : profile_(Profile::FromBrowserContext(context)) { 409 : profile_(Profile::FromBrowserContext(context)) {
409 for (size_t i = 0; i < arraysize(kPrefMapping); ++i) { 410 for (size_t i = 0; i < arraysize(kPrefMapping); ++i) {
410 std::string event_name; 411 std::string event_name;
411 APIPermission::ID permission = APIPermission::kInvalid; 412 APIPermission::ID permission = APIPermission::kInvalid;
412 bool rv = PrefMapping::GetInstance()->FindEventForBrowserPref( 413 bool rv = PrefMapping::GetInstance()->FindEventForBrowserPref(
413 kPrefMapping[i].browser_pref, &event_name, &permission); 414 kPrefMapping[i].browser_pref, &event_name, &permission);
414 DCHECK(rv); 415 DCHECK(rv);
415 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver( 416 ExtensionSystem::Get(profile_)->event_router()->RegisterObserver(
416 this, event_name); 417 this, event_name);
417 } 418 }
418 extension_prefs()->content_settings_store()->AddObserver(this); 419 content_settings_store()->AddObserver(this);
419 } 420 }
420 421
421 PreferenceAPI::~PreferenceAPI() { 422 PreferenceAPI::~PreferenceAPI() {
422 } 423 }
423 424
424 void PreferenceAPI::Shutdown() { 425 void PreferenceAPI::Shutdown() {
425 ExtensionSystem::Get(profile_)->event_router()->UnregisterObserver(this); 426 ExtensionSystem::Get(profile_)->event_router()->UnregisterObserver(this);
426 if (!extension_prefs()->extensions_disabled()) 427 if (!extension_prefs()->extensions_disabled())
427 ClearIncognitoSessionOnlyContentSettings(); 428 ClearIncognitoSessionOnlyContentSettings();
428 extension_prefs()->content_settings_store()->RemoveObserver(this); 429 content_settings_store()->RemoveObserver(this);
429 } 430 }
430 431
431 static base::LazyInstance<BrowserContextKeyedAPIFactory<PreferenceAPI> > 432 static base::LazyInstance<BrowserContextKeyedAPIFactory<PreferenceAPI> >
432 g_factory = LAZY_INSTANCE_INITIALIZER; 433 g_factory = LAZY_INSTANCE_INITIALIZER;
433 434
434 // static 435 // static
435 BrowserContextKeyedAPIFactory<PreferenceAPI>* 436 BrowserContextKeyedAPIFactory<PreferenceAPI>*
436 PreferenceAPI::GetFactoryInstance() { 437 PreferenceAPI::GetFactoryInstance() {
437 return g_factory.Pointer(); 438 return g_factory.Pointer();
438 } 439 }
439 440
440 // static 441 // static
441 PreferenceAPI* PreferenceAPI::Get(content::BrowserContext* context) { 442 PreferenceAPI* PreferenceAPI::Get(content::BrowserContext* context) {
442 return BrowserContextKeyedAPIFactory<PreferenceAPI>::Get(context); 443 return BrowserContextKeyedAPIFactory<PreferenceAPI>::Get(context);
443 } 444 }
444 445
445 void PreferenceAPI::OnListenerAdded(const EventListenerInfo& details) { 446 void PreferenceAPI::OnListenerAdded(const EventListenerInfo& details) {
446 preference_event_router_.reset(new PreferenceEventRouter(profile_)); 447 preference_event_router_.reset(new PreferenceEventRouter(profile_));
447 ExtensionSystem::Get(profile_)->event_router()->UnregisterObserver(this); 448 ExtensionSystem::Get(profile_)->event_router()->UnregisterObserver(this);
448 } 449 }
449 450
450 void PreferenceAPI::OnContentSettingChanged(const std::string& extension_id, 451 void PreferenceAPI::OnContentSettingChanged(const std::string& extension_id,
451 bool incognito) { 452 bool incognito) {
452 if (incognito) { 453 if (incognito) {
453 extension_prefs()->UpdateExtensionPref( 454 extension_prefs()->UpdateExtensionPref(
454 extension_id, 455 extension_id,
455 pref_names::kPrefIncognitoContentSettings, 456 pref_names::kPrefIncognitoContentSettings,
456 extension_prefs()->content_settings_store()->GetSettingsForExtension( 457 content_settings_store()->GetSettingsForExtension(
457 extension_id, kExtensionPrefsScopeIncognitoPersistent)); 458 extension_id, kExtensionPrefsScopeIncognitoPersistent));
458 } else { 459 } else {
459 extension_prefs()->UpdateExtensionPref( 460 extension_prefs()->UpdateExtensionPref(
460 extension_id, 461 extension_id,
461 pref_names::kPrefContentSettings, 462 pref_names::kPrefContentSettings,
462 extension_prefs()->content_settings_store()->GetSettingsForExtension( 463 content_settings_store()->GetSettingsForExtension(
463 extension_id, kExtensionPrefsScopeRegular)); 464 extension_id, kExtensionPrefsScopeRegular));
464 } 465 }
465 } 466 }
466 467
467 void PreferenceAPI::ClearIncognitoSessionOnlyContentSettings() { 468 void PreferenceAPI::ClearIncognitoSessionOnlyContentSettings() {
468 ExtensionIdList extension_ids; 469 ExtensionIdList extension_ids;
469 extension_prefs()->GetExtensions(&extension_ids); 470 extension_prefs()->GetExtensions(&extension_ids);
470 for (ExtensionIdList::iterator extension_id = extension_ids.begin(); 471 for (ExtensionIdList::iterator extension_id = extension_ids.begin();
471 extension_id != extension_ids.end(); ++extension_id) { 472 extension_id != extension_ids.end(); ++extension_id) {
472 extension_prefs()->content_settings_store()-> 473 content_settings_store()->ClearContentSettingsForExtension(
473 ClearContentSettingsForExtension( 474 *extension_id, kExtensionPrefsScopeIncognitoSessionOnly);
474 *extension_id,
475 kExtensionPrefsScopeIncognitoSessionOnly);
476 } 475 }
477 } 476 }
478 477
479 ExtensionPrefs* PreferenceAPI::extension_prefs() { 478 ExtensionPrefs* PreferenceAPI::extension_prefs() {
480 return ExtensionPrefs::Get(profile_); 479 return ExtensionPrefs::Get(profile_);
481 } 480 }
482 481
483 ExtensionPrefValueMap* PreferenceAPI::extension_pref_value_map() { 482 ExtensionPrefValueMap* PreferenceAPI::extension_pref_value_map() {
484 return ExtensionPrefValueMapFactory::GetForBrowserContext(profile_); 483 return ExtensionPrefValueMapFactory::GetForBrowserContext(profile_);
485 } 484 }
486 485
486 scoped_refptr<ContentSettingsStore> PreferenceAPI::content_settings_store() {
487 return ContentSettingsService::Get(profile_)->content_settings_store();
488 }
489
487 template <> 490 template <>
488 void 491 void
489 BrowserContextKeyedAPIFactory<PreferenceAPI>::DeclareFactoryDependencies() { 492 BrowserContextKeyedAPIFactory<PreferenceAPI>::DeclareFactoryDependencies() {
493 DependsOn(ContentSettingsService::GetFactoryInstance());
490 DependsOn(ExtensionPrefsFactory::GetInstance()); 494 DependsOn(ExtensionPrefsFactory::GetInstance());
491 DependsOn(ExtensionPrefValueMapFactory::GetInstance()); 495 DependsOn(ExtensionPrefValueMapFactory::GetInstance());
492 DependsOn(ExtensionsBrowserClient::Get()->GetExtensionSystemFactory()); 496 DependsOn(ExtensionsBrowserClient::Get()->GetExtensionSystemFactory());
493 } 497 }
494 498
495 PreferenceFunction::~PreferenceFunction() { } 499 PreferenceFunction::~PreferenceFunction() { }
496 500
497 bool PreferenceFunction::ValidateBrowserPref( 501 bool PreferenceFunction::ValidateBrowserPref(
498 const std::string& extension_pref_key, 502 const std::string& extension_pref_key,
499 PreferenceFunction::PermissionType permission_type, 503 PreferenceFunction::PermissionType permission_type,
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 pref_key, PreferenceFunction::PERMISSION_TYPE_WRITE, &browser_pref)) { 707 pref_key, PreferenceFunction::PERMISSION_TYPE_WRITE, &browser_pref)) {
704 return false; 708 return false;
705 } 709 }
706 710
707 PreferenceAPI::Get(GetProfile()) 711 PreferenceAPI::Get(GetProfile())
708 ->RemoveExtensionControlledPref(extension_id(), browser_pref, scope); 712 ->RemoveExtensionControlledPref(extension_id(), browser_pref, scope);
709 return true; 713 return true;
710 } 714 }
711 715
712 } // namespace extensions 716 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698