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

Side by Side Diff: components/content_settings/core/browser/content_settings_utils.cc

Issue 1442083002: Stop inheriting push notification permissions from regular to incognito (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address review comments Created 5 years 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 "components/content_settings/core/browser/content_settings_utils.h" 5 #include "components/content_settings/core/browser/content_settings_utils.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 } 129 }
130 130
131 scoped_ptr<base::Value> ContentSettingToValue(ContentSetting setting) { 131 scoped_ptr<base::Value> ContentSettingToValue(ContentSetting setting) {
132 if (setting <= CONTENT_SETTING_DEFAULT || 132 if (setting <= CONTENT_SETTING_DEFAULT ||
133 setting >= CONTENT_SETTING_NUM_SETTINGS) { 133 setting >= CONTENT_SETTING_NUM_SETTINGS) {
134 return nullptr; 134 return nullptr;
135 } 135 }
136 return make_scoped_ptr(new base::FundamentalValue(setting)); 136 return make_scoped_ptr(new base::FundamentalValue(setting));
137 } 137 }
138 138
139 base::Value* GetContentSettingValueAndPatterns( 139 scoped_ptr<base::Value> GetContentSettingValueAndPatterns(
140 const ProviderInterface* provider, 140 const ProviderInterface* provider,
141 const GURL& primary_url, 141 const GURL& primary_url,
142 const GURL& secondary_url, 142 const GURL& secondary_url,
143 ContentSettingsType content_type, 143 ContentSettingsType content_type,
144 const std::string& resource_identifier, 144 const std::string& resource_identifier,
145 bool include_incognito, 145 bool include_incognito,
146 ContentSettingsPattern* primary_pattern, 146 ContentSettingsPattern* primary_pattern,
147 ContentSettingsPattern* secondary_pattern) { 147 ContentSettingsPattern* secondary_pattern) {
148 if (include_incognito) { 148 if (include_incognito) {
149 // Check incognito-only specific settings. It's essential that the 149 // Check incognito-only specific settings. It's essential that the
150 // |RuleIterator| gets out of scope before we get a rule iterator for the 150 // |RuleIterator| gets out of scope before we get a rule iterator for the
151 // normal mode. 151 // normal mode.
152 scoped_ptr<RuleIterator> incognito_rule_iterator( 152 scoped_ptr<RuleIterator> incognito_rule_iterator(
153 provider->GetRuleIterator(content_type, resource_identifier, true)); 153 provider->GetRuleIterator(content_type, resource_identifier,
154 base::Value* value = GetContentSettingValueAndPatterns( 154 true /* incognito */));
155 scoped_ptr<base::Value> value = GetContentSettingValueAndPatterns(
155 incognito_rule_iterator.get(), primary_url, secondary_url, 156 incognito_rule_iterator.get(), primary_url, secondary_url,
156 primary_pattern, secondary_pattern); 157 primary_pattern, secondary_pattern);
157 if (value) 158 if (value)
158 return value; 159 return value;
159 } 160 }
160 // No settings from the incognito; use the normal mode. 161 // No settings from the incognito; use the normal mode.
161 scoped_ptr<RuleIterator> rule_iterator( 162 scoped_ptr<RuleIterator> rule_iterator(
162 provider->GetRuleIterator(content_type, resource_identifier, false)); 163 provider->GetRuleIterator(content_type, resource_identifier,
163 return GetContentSettingValueAndPatterns( 164 false /* incognito */));
165 scoped_ptr<base::Value> value = GetContentSettingValueAndPatterns(
164 rule_iterator.get(), primary_url, secondary_url, 166 rule_iterator.get(), primary_url, secondary_url,
165 primary_pattern, secondary_pattern); 167 primary_pattern, secondary_pattern);
168 if (value && include_incognito) {
169 value = ContentSettingToValue(
170 HostContentSettingsMap::CoerceSettingInheritedToIncognito(
171 content_type, ValueToContentSetting(value.get())));
172 }
raymes 2015/12/01 03:19:29 What I was suggesting is to move this code into Ho
msramek 2015/12/01 13:41:43 Either that, or we can just simply wrap the callsi
johnme 2015/12/02 15:13:17 I'm not quite sure what you're asking. If you're s
johnme 2015/12/02 15:13:17 Wrapping doesn't work, as Coerce should only be ca
raymes 2015/12/03 01:56:49 I don't quite understand why wrapping doesn't work
johnme 2015/12/03 19:06:40 That doesn't work: suppose the provider has an ALL
raymes 2015/12/03 22:19:42 I'm confused though - AFAICT the code I wrote is f
johnme 2015/12/04 17:14:31 My code does (simplified): if (include_incognito
173 return value;
166 } 174 }
167 175
168 base::Value* GetContentSettingValueAndPatterns( 176 scoped_ptr<base::Value> GetContentSettingValueAndPatterns(
169 RuleIterator* rule_iterator, 177 RuleIterator* rule_iterator,
170 const GURL& primary_url, 178 const GURL& primary_url,
171 const GURL& secondary_url, 179 const GURL& secondary_url,
172 ContentSettingsPattern* primary_pattern, 180 ContentSettingsPattern* primary_pattern,
173 ContentSettingsPattern* secondary_pattern) { 181 ContentSettingsPattern* secondary_pattern) {
174 while (rule_iterator->HasNext()) { 182 while (rule_iterator->HasNext()) {
175 const Rule& rule = rule_iterator->Next(); 183 const Rule& rule = rule_iterator->Next();
176 if (rule.primary_pattern.Matches(primary_url) && 184 if (rule.primary_pattern.Matches(primary_url) &&
177 rule.secondary_pattern.Matches(secondary_url)) { 185 rule.secondary_pattern.Matches(secondary_url)) {
178 if (primary_pattern) 186 if (primary_pattern)
179 *primary_pattern = rule.primary_pattern; 187 *primary_pattern = rule.primary_pattern;
180 if (secondary_pattern) 188 if (secondary_pattern)
181 *secondary_pattern = rule.secondary_pattern; 189 *secondary_pattern = rule.secondary_pattern;
182 return rule.value.get()->DeepCopy(); 190 return make_scoped_ptr(rule.value.get()->DeepCopy());
183 } 191 }
184 } 192 }
185 return NULL; 193 return scoped_ptr<base::Value>();
186 } 194 }
187 195
188 void GetRendererContentSettingRules(const HostContentSettingsMap* map, 196 void GetRendererContentSettingRules(const HostContentSettingsMap* map,
189 RendererContentSettingRules* rules) { 197 RendererContentSettingRules* rules) {
190 map->GetSettingsForOneType( 198 map->GetSettingsForOneType(
191 CONTENT_SETTINGS_TYPE_IMAGES, 199 CONTENT_SETTINGS_TYPE_IMAGES,
192 ResourceIdentifier(), 200 ResourceIdentifier(),
193 &(rules->image_rules)); 201 &(rules->image_rules));
194 map->GetSettingsForOneType( 202 map->GetSettingsForOneType(
195 CONTENT_SETTINGS_TYPE_JAVASCRIPT, 203 CONTENT_SETTINGS_TYPE_JAVASCRIPT,
196 ResourceIdentifier(), 204 ResourceIdentifier(),
197 &(rules->script_rules)); 205 &(rules->script_rules));
198 } 206 }
199 207
200 } // namespace content_settings 208 } // namespace content_settings
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698