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

Side by Side Diff: chrome/browser/content_settings/host_content_settings_map.cc

Issue 545413002: Detach the dependency from host_content_settings_map to extension. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 6 years, 3 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
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/content_settings/host_content_settings_map.h" 5 #include "chrome/browser/content_settings/host_content_settings_map.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/prefs/pref_service.h" 11 #include "base/prefs/pref_service.h"
12 #include "base/stl_util.h" 12 #include "base/stl_util.h"
13 #include "base/strings/string_util.h" 13 #include "base/strings/string_util.h"
14 #include "base/strings/utf_string_conversions.h" 14 #include "base/strings/utf_string_conversions.h"
15 #include "base/time/clock.h" 15 #include "base/time/clock.h"
16 #include "chrome/browser/chrome_notification_types.h"
17 #include "chrome/browser/content_settings/content_settings_custom_extension_prov ider.h" 16 #include "chrome/browser/content_settings/content_settings_custom_extension_prov ider.h"
18 #include "chrome/browser/content_settings/content_settings_default_provider.h" 17 #include "chrome/browser/content_settings/content_settings_default_provider.h"
19 #include "chrome/browser/content_settings/content_settings_details.h" 18 #include "chrome/browser/content_settings/content_settings_details.h"
20 #include "chrome/browser/content_settings/content_settings_internal_extension_pr ovider.h" 19 #include "chrome/browser/content_settings/content_settings_internal_extension_pr ovider.h"
21 #include "chrome/browser/content_settings/content_settings_observable_provider.h " 20 #include "chrome/browser/content_settings/content_settings_observable_provider.h "
22 #include "chrome/browser/content_settings/content_settings_policy_provider.h" 21 #include "chrome/browser/content_settings/content_settings_policy_provider.h"
23 #include "chrome/browser/content_settings/content_settings_pref_provider.h" 22 #include "chrome/browser/content_settings/content_settings_pref_provider.h"
24 #include "chrome/browser/content_settings/content_settings_provider.h" 23 #include "chrome/browser/content_settings/content_settings_provider.h"
25 #include "chrome/browser/content_settings/content_settings_rule.h" 24 #include "chrome/browser/content_settings/content_settings_rule.h"
26 #include "chrome/browser/content_settings/content_settings_utils.h" 25 #include "chrome/browser/content_settings/content_settings_utils.h"
27 #include "chrome/browser/extensions/api/content_settings/content_settings_servic e.h"
28 #include "chrome/browser/extensions/extension_service.h"
29 #include "chrome/common/chrome_switches.h" 26 #include "chrome/common/chrome_switches.h"
30 #include "chrome/common/pref_names.h" 27 #include "chrome/common/pref_names.h"
31 #include "chrome/common/url_constants.h" 28 #include "chrome/common/url_constants.h"
32 #include "components/content_settings/core/common/content_settings_pattern.h" 29 #include "components/content_settings/core/common/content_settings_pattern.h"
33 #include "components/pref_registry/pref_registry_syncable.h" 30 #include "components/pref_registry/pref_registry_syncable.h"
34 #include "content/public/browser/browser_thread.h" 31 #include "content/public/browser/browser_thread.h"
35 #include "content/public/browser/notification_service.h"
36 #include "content/public/browser/notification_source.h"
37 #include "content/public/browser/user_metrics.h"
38 #include "content/public/common/content_switches.h" 32 #include "content/public/common/content_switches.h"
39 #include "extensions/browser/extension_prefs.h"
40 #include "extensions/common/constants.h" 33 #include "extensions/common/constants.h"
41 #include "net/base/net_errors.h" 34 #include "net/base/net_errors.h"
42 #include "net/base/static_cookie_policy.h" 35 #include "net/base/static_cookie_policy.h"
43 #include "url/gurl.h" 36 #include "url/gurl.h"
44 37
45 using base::UserMetricsAction;
46 using content::BrowserThread; 38 using content::BrowserThread;
47 39
48 namespace { 40 namespace {
49 41
50 typedef std::vector<content_settings::Rule> Rules; 42 typedef std::vector<content_settings::Rule> Rules;
51 43
52 typedef std::pair<std::string, std::string> StringPair; 44 typedef std::pair<std::string, std::string> StringPair;
53 45
54 // TODO(bauerb): Expose constants. 46 // TODO(bauerb): Expose constants.
55 const char* kProviderNames[] = { 47 const char* kProviderNames[] = {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 new content_settings::DefaultProvider(prefs_, is_off_the_record_); 93 new content_settings::DefaultProvider(prefs_, is_off_the_record_);
102 default_provider->AddObserver(this); 94 default_provider->AddObserver(this);
103 content_settings_providers_[DEFAULT_PROVIDER] = default_provider; 95 content_settings_providers_[DEFAULT_PROVIDER] = default_provider;
104 96
105 if (!is_off_the_record_) { 97 if (!is_off_the_record_) {
106 // Migrate obsolete preferences. 98 // Migrate obsolete preferences.
107 MigrateObsoleteClearOnExitPref(); 99 MigrateObsoleteClearOnExitPref();
108 } 100 }
109 } 101 }
110 102
111 #if defined(ENABLE_EXTENSIONS)
112 void HostContentSettingsMap::RegisterExtensionService(
113 ExtensionService* extension_service) {
114 DCHECK(extension_service);
115 DCHECK(!content_settings_providers_[INTERNAL_EXTENSION_PROVIDER]);
116 DCHECK(!content_settings_providers_[CUSTOM_EXTENSION_PROVIDER]);
117
118 content_settings::InternalExtensionProvider* internal_extension_provider =
119 new content_settings::InternalExtensionProvider(extension_service);
120 internal_extension_provider->AddObserver(this);
121 content_settings_providers_[INTERNAL_EXTENSION_PROVIDER] =
122 internal_extension_provider;
123
124 content_settings::ObservableProvider* custom_extension_provider =
125 new content_settings::CustomExtensionProvider(
126 extensions::ContentSettingsService::Get(
127 extension_service->GetBrowserContext())->content_settings_store(),
128 is_off_the_record_);
129 custom_extension_provider->AddObserver(this);
130 content_settings_providers_[CUSTOM_EXTENSION_PROVIDER] =
131 custom_extension_provider;
132
133 #ifndef NDEBUG
134 DCHECK(used_from_thread_id_ != base::kInvalidThreadId)
135 << "Used from multiple threads before initialization complete.";
136 #endif
137
138 OnContentSettingChanged(ContentSettingsPattern(),
139 ContentSettingsPattern(),
140 CONTENT_SETTINGS_TYPE_DEFAULT,
141 std::string());
142 }
143 #endif
144
145 // static 103 // static
146 void HostContentSettingsMap::RegisterProfilePrefs( 104 void HostContentSettingsMap::RegisterProfilePrefs(
147 user_prefs::PrefRegistrySyncable* registry) { 105 user_prefs::PrefRegistrySyncable* registry) {
148 registry->RegisterIntegerPref( 106 registry->RegisterIntegerPref(
149 prefs::kContentSettingsWindowLastTabIndex, 107 prefs::kContentSettingsWindowLastTabIndex,
150 0, 108 0,
151 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); 109 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
152 registry->RegisterIntegerPref( 110 registry->RegisterIntegerPref(
153 prefs::kContentSettingsDefaultWhitelistVersion, 111 prefs::kContentSettingsDefaultWhitelistVersion,
154 0, 112 0,
155 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 113 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
156 registry->RegisterBooleanPref( 114 registry->RegisterBooleanPref(
157 prefs::kContentSettingsClearOnExitMigrated, 115 prefs::kContentSettingsClearOnExitMigrated,
158 false, 116 false,
159 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); 117 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
160 118
161 // Register the prefs for the content settings providers. 119 // Register the prefs for the content settings providers.
162 content_settings::DefaultProvider::RegisterProfilePrefs(registry); 120 content_settings::DefaultProvider::RegisterProfilePrefs(registry);
163 content_settings::PrefProvider::RegisterProfilePrefs(registry); 121 content_settings::PrefProvider::RegisterProfilePrefs(registry);
164 content_settings::PolicyProvider::RegisterProfilePrefs(registry); 122 content_settings::PolicyProvider::RegisterProfilePrefs(registry);
165 } 123 }
166 124
125 void HostContentSettingsMap::RegisterProvider(
126 ProviderType type,
127 scoped_ptr<content_settings::ObservableProvider> provider) {
128 DCHECK(!content_settings_providers_[type]);
129 provider->AddObserver(this);
130 content_settings_providers_[type] = provider.release();
131
132 #ifndef NDEBUG
133 DCHECK(used_from_thread_id_ != base::kInvalidThreadId)
Yoyo Zhou 2014/09/08 19:51:26 DCHECK_NE
Jun Mukai 2014/09/08 20:01:39 Done.
134 << "Used from multiple threads before initialization complete.";
135 #endif
136
137 OnContentSettingChanged(ContentSettingsPattern(),
138 ContentSettingsPattern(),
139 CONTENT_SETTINGS_TYPE_DEFAULT,
140 std::string());
141 }
142
167 ContentSetting HostContentSettingsMap::GetDefaultContentSettingFromProvider( 143 ContentSetting HostContentSettingsMap::GetDefaultContentSettingFromProvider(
168 ContentSettingsType content_type, 144 ContentSettingsType content_type,
169 content_settings::ProviderInterface* provider) const { 145 content_settings::ProviderInterface* provider) const {
170 scoped_ptr<content_settings::RuleIterator> rule_iterator( 146 scoped_ptr<content_settings::RuleIterator> rule_iterator(
171 provider->GetRuleIterator(content_type, std::string(), false)); 147 provider->GetRuleIterator(content_type, std::string(), false));
172 148
173 ContentSettingsPattern wildcard = ContentSettingsPattern::Wildcard(); 149 ContentSettingsPattern wildcard = ContentSettingsPattern::Wildcard();
174 while (rule_iterator->HasNext()) { 150 while (rule_iterator->HasNext()) {
175 content_settings::Rule rule = rule_iterator->Next(); 151 content_settings::Rule rule = rule_iterator->Next();
176 if (rule.primary_pattern == wildcard && 152 if (rule.primary_pattern == wildcard &&
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after
751 } 727 }
752 728
753 NOTREACHED(); 729 NOTREACHED();
754 return DEFAULT_PROVIDER; 730 return DEFAULT_PROVIDER;
755 } 731 }
756 732
757 content_settings::PrefProvider* HostContentSettingsMap::GetPrefProvider() { 733 content_settings::PrefProvider* HostContentSettingsMap::GetPrefProvider() {
758 return static_cast<content_settings::PrefProvider*>( 734 return static_cast<content_settings::PrefProvider*>(
759 content_settings_providers_[PREF_PROVIDER]); 735 content_settings_providers_[PREF_PROVIDER]);
760 } 736 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698