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

Side by Side Diff: chrome/browser/permissions/permission_context_base.cc

Issue 2675483002: Replace PermissionType in chrome/ with ContentSettingsType (Closed)
Patch Set: rebase Created 3 years, 10 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/permissions/permission_context_base.h" 5 #include "chrome/browser/permissions/permission_context_base.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 45
46 // static 46 // static
47 const char PermissionContextBase::kPermissionsKillSwitchFieldStudy[] = 47 const char PermissionContextBase::kPermissionsKillSwitchFieldStudy[] =
48 "PermissionsKillSwitch"; 48 "PermissionsKillSwitch";
49 // static 49 // static
50 const char PermissionContextBase::kPermissionsKillSwitchBlockedValue[] = 50 const char PermissionContextBase::kPermissionsKillSwitchBlockedValue[] =
51 "blocked"; 51 "blocked";
52 52
53 PermissionContextBase::PermissionContextBase( 53 PermissionContextBase::PermissionContextBase(
54 Profile* profile, 54 Profile* profile,
55 const content::PermissionType permission_type,
56 const ContentSettingsType content_settings_type) 55 const ContentSettingsType content_settings_type)
57 : profile_(profile), 56 : profile_(profile),
58 permission_type_(permission_type),
59 content_settings_type_(content_settings_type), 57 content_settings_type_(content_settings_type),
60 weak_factory_(this) { 58 weak_factory_(this) {
61 #if defined(OS_ANDROID) 59 #if defined(OS_ANDROID)
62 permission_queue_controller_.reset(new PermissionQueueController( 60 permission_queue_controller_.reset(
63 profile_, permission_type_, content_settings_type_)); 61 new PermissionQueueController(profile_, content_settings_type_));
64 #endif 62 #endif
65 PermissionDecisionAutoBlocker::UpdateFromVariations(); 63 PermissionDecisionAutoBlocker::UpdateFromVariations();
66 } 64 }
67 65
68 PermissionContextBase::~PermissionContextBase() { 66 PermissionContextBase::~PermissionContextBase() {
69 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 67 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
70 } 68 }
71 69
72 void PermissionContextBase::RequestPermission( 70 void PermissionContextBase::RequestPermission(
73 content::WebContents* web_contents, 71 content::WebContents* web_contents,
74 const PermissionRequestID& id, 72 const PermissionRequestID& id,
75 const GURL& requesting_frame, 73 const GURL& requesting_frame,
76 bool user_gesture, 74 bool user_gesture,
77 const BrowserPermissionCallback& callback) { 75 const BrowserPermissionCallback& callback) {
78 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 76 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
79 77
80 // First check if this permission has been disabled. 78 // First check if this permission has been disabled.
81 if (IsPermissionKillSwitchOn()) { 79 if (IsPermissionKillSwitchOn()) {
82 // Log to the developer console. 80 // Log to the developer console.
83 web_contents->GetMainFrame()->AddMessageToConsole( 81 web_contents->GetMainFrame()->AddMessageToConsole(
84 content::CONSOLE_MESSAGE_LEVEL_INFO, 82 content::CONSOLE_MESSAGE_LEVEL_INFO,
85 base::StringPrintf( 83 base::StringPrintf(
86 "%s permission has been blocked.", 84 "%s permission has been blocked.",
87 PermissionUtil::GetPermissionString(permission_type_).c_str())); 85 PermissionUtil::GetPermissionString(content_settings_type_)
86 .c_str()));
88 // The kill switch is enabled for this permission; Block all requests. 87 // The kill switch is enabled for this permission; Block all requests.
89 callback.Run(CONTENT_SETTING_BLOCK); 88 callback.Run(CONTENT_SETTING_BLOCK);
90 return; 89 return;
91 } 90 }
92 91
93 GURL requesting_origin = requesting_frame.GetOrigin(); 92 GURL requesting_origin = requesting_frame.GetOrigin();
94 GURL embedding_origin = web_contents->GetLastCommittedURL().GetOrigin(); 93 GURL embedding_origin = web_contents->GetLastCommittedURL().GetOrigin();
95 94
96 if (!requesting_origin.is_valid() || !embedding_origin.is_valid()) { 95 if (!requesting_origin.is_valid() || !embedding_origin.is_valid()) {
97 std::string type_name = 96 std::string type_name =
98 content_settings::WebsiteSettingsRegistry::GetInstance() 97 content_settings::WebsiteSettingsRegistry::GetInstance()
99 ->Get(content_settings_type_) 98 ->Get(content_settings_type_)
Peter Beverloo 2017/02/10 16:22:51 Since the ContentSettingsRegistry hasn't been upda
Timothy Loh 2017/02/13 04:08:36 Good catch. I changed this to use use PermissionUt
100 ->name(); 99 ->name();
101 100
102 DVLOG(1) << "Attempt to use " << type_name 101 DVLOG(1) << "Attempt to use " << type_name
103 << " from an invalid URL: " << requesting_origin << "," 102 << " from an invalid URL: " << requesting_origin << ","
104 << embedding_origin << " (" << type_name 103 << embedding_origin << " (" << type_name
105 << " is not supported in popups)"; 104 << " is not supported in popups)";
106 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, 105 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback,
107 false /* persist */, CONTENT_SETTING_BLOCK); 106 false /* persist */, CONTENT_SETTING_BLOCK);
108 return; 107 return;
109 } 108 }
110 109
111 // Synchronously check the content setting to see if the user has already made 110 // Synchronously check the content setting to see if the user has already made
112 // a decision, or if the origin is under embargo. If so, respect that 111 // a decision, or if the origin is under embargo. If so, respect that
113 // decision. 112 // decision.
114 ContentSetting content_setting = 113 ContentSetting content_setting =
115 GetPermissionStatus(requesting_origin, embedding_origin); 114 GetPermissionStatus(requesting_origin, embedding_origin);
116 if (content_setting == CONTENT_SETTING_ALLOW) { 115 if (content_setting == CONTENT_SETTING_ALLOW) {
117 HostContentSettingsMapFactory::GetForProfile(profile_)->UpdateLastUsage( 116 HostContentSettingsMapFactory::GetForProfile(profile_)->UpdateLastUsage(
118 requesting_origin, embedding_origin, content_settings_type_); 117 requesting_origin, embedding_origin, content_settings_storage_type());
119 } 118 }
120 119
121 if (content_setting == CONTENT_SETTING_ALLOW || 120 if (content_setting == CONTENT_SETTING_ALLOW ||
122 content_setting == CONTENT_SETTING_BLOCK) { 121 content_setting == CONTENT_SETTING_BLOCK) {
123 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, 122 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback,
124 false /* persist */, content_setting); 123 false /* persist */, content_setting);
125 return; 124 return;
126 } 125 }
127 126
128 // Asynchronously check whether the origin should be blocked from making this 127 // Asynchronously check whether the origin should be blocked from making this
129 // permission request. It may be on the Safe Browsing API blacklist, or it may 128 // permission request. It may be on the Safe Browsing API blacklist, or it may
130 // have been dismissed too many times in a row. If the origin is allowed to 129 // have been dismissed too many times in a row. If the origin is allowed to
131 // request, that request will be made to ContinueRequestPermission(). 130 // request, that request will be made to ContinueRequestPermission().
132 PermissionDecisionAutoBlocker::GetForProfile(profile_)->UpdateEmbargoedStatus( 131 PermissionDecisionAutoBlocker::GetForProfile(profile_)->UpdateEmbargoedStatus(
133 permission_type_, requesting_origin, web_contents, 132 content_settings_type_, requesting_origin, web_contents,
Peter Beverloo 2017/02/10 16:22:51 Should the auto blocker use the storage type too?
Timothy Loh 2017/02/13 04:08:36 I think this issue already exists, since it curren
134 base::Bind(&PermissionContextBase::ContinueRequestPermission, 133 base::Bind(&PermissionContextBase::ContinueRequestPermission,
135 weak_factory_.GetWeakPtr(), web_contents, id, 134 weak_factory_.GetWeakPtr(), web_contents, id,
136 requesting_origin, embedding_origin, user_gesture, callback)); 135 requesting_origin, embedding_origin, user_gesture, callback));
137 } 136 }
138 137
139 void PermissionContextBase::ContinueRequestPermission( 138 void PermissionContextBase::ContinueRequestPermission(
140 content::WebContents* web_contents, 139 content::WebContents* web_contents,
141 const PermissionRequestID& id, 140 const PermissionRequestID& id,
142 const GURL& requesting_origin, 141 const GURL& requesting_origin,
143 const GURL& embedding_origin, 142 const GURL& embedding_origin,
144 bool user_gesture, 143 bool user_gesture,
145 const BrowserPermissionCallback& callback, 144 const BrowserPermissionCallback& callback,
146 bool permission_blocked) { 145 bool permission_blocked) {
147 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 146 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
148 if (permission_blocked) { 147 if (permission_blocked) {
149 // TODO(meredithl): Add UMA metrics here. 148 // TODO(meredithl): Add UMA metrics here.
150 web_contents->GetMainFrame()->AddMessageToConsole( 149 web_contents->GetMainFrame()->AddMessageToConsole(
151 content::CONSOLE_MESSAGE_LEVEL_INFO, 150 content::CONSOLE_MESSAGE_LEVEL_INFO,
152 base::StringPrintf( 151 base::StringPrintf(
153 "%s permission has been auto-blocked.", 152 "%s permission has been auto-blocked.",
154 PermissionUtil::GetPermissionString(permission_type_).c_str())); 153 PermissionUtil::GetPermissionString(content_settings_type_)
154 .c_str()));
155 // Permission has been automatically blocked. 155 // Permission has been automatically blocked.
156 callback.Run(CONTENT_SETTING_BLOCK); 156 callback.Run(CONTENT_SETTING_BLOCK);
157 return; 157 return;
158 } 158 }
159 159
160 PermissionUmaUtil::PermissionRequested(permission_type_, requesting_origin, 160 PermissionUmaUtil::PermissionRequested(
161 embedding_origin, profile_); 161 content_settings_type_, requesting_origin, embedding_origin, profile_);
162 162
163 DecidePermission(web_contents, id, requesting_origin, embedding_origin, 163 DecidePermission(web_contents, id, requesting_origin, embedding_origin,
164 user_gesture, callback); 164 user_gesture, callback);
165 } 165 }
166 166
167 ContentSetting PermissionContextBase::GetPermissionStatus( 167 ContentSetting PermissionContextBase::GetPermissionStatus(
168 const GURL& requesting_origin, 168 const GURL& requesting_origin,
169 const GURL& embedding_origin) const { 169 const GURL& embedding_origin) const {
170 // If the permission has been disabled through Finch, block all requests. 170 // If the permission has been disabled through Finch, block all requests.
171 if (IsPermissionKillSwitchOn()) 171 if (IsPermissionKillSwitchOn())
172 return CONTENT_SETTING_BLOCK; 172 return CONTENT_SETTING_BLOCK;
173 173
174 if (IsRestrictedToSecureOrigins() && 174 if (IsRestrictedToSecureOrigins() &&
175 !content::IsOriginSecure(requesting_origin)) { 175 !content::IsOriginSecure(requesting_origin)) {
176 return CONTENT_SETTING_BLOCK; 176 return CONTENT_SETTING_BLOCK;
177 } 177 }
178 178
179 ContentSetting content_setting = 179 ContentSetting content_setting =
180 GetPermissionStatusInternal(requesting_origin, embedding_origin); 180 GetPermissionStatusInternal(requesting_origin, embedding_origin);
181 if (content_setting == CONTENT_SETTING_ASK && 181 if (content_setting == CONTENT_SETTING_ASK &&
182 PermissionDecisionAutoBlocker::GetForProfile(profile_)->IsUnderEmbargo( 182 PermissionDecisionAutoBlocker::GetForProfile(profile_)->IsUnderEmbargo(
183 permission_type_, requesting_origin)) { 183 content_settings_type_, requesting_origin)) {
184 return CONTENT_SETTING_BLOCK; 184 return CONTENT_SETTING_BLOCK;
185 } 185 }
186 return content_setting; 186 return content_setting;
187 } 187 }
188 188
189 void PermissionContextBase::ResetPermission( 189 void PermissionContextBase::ResetPermission(
190 const GURL& requesting_origin, 190 const GURL& requesting_origin,
191 const GURL& embedding_origin) { 191 const GURL& embedding_origin) {
192 HostContentSettingsMapFactory::GetForProfile(profile_) 192 HostContentSettingsMapFactory::GetForProfile(profile_)
193 ->SetContentSettingDefaultScope(requesting_origin, embedding_origin, 193 ->SetContentSettingDefaultScope(requesting_origin, embedding_origin,
194 content_settings_type_, std::string(), 194 content_settings_storage_type(),
195 CONTENT_SETTING_DEFAULT); 195 std::string(), CONTENT_SETTING_DEFAULT);
196 } 196 }
197 197
198 void PermissionContextBase::CancelPermissionRequest( 198 void PermissionContextBase::CancelPermissionRequest(
199 content::WebContents* web_contents, 199 content::WebContents* web_contents,
200 const PermissionRequestID& id) { 200 const PermissionRequestID& id) {
201 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 201 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
202 202
203 if (PermissionRequestManager::IsEnabled()) { 203 if (PermissionRequestManager::IsEnabled()) {
204 auto it = pending_requests_.find(id.ToString()); 204 auto it = pending_requests_.find(id.ToString());
205 if (it != pending_requests_.end() && web_contents != nullptr && 205 if (it != pending_requests_.end() && web_contents != nullptr &&
206 PermissionRequestManager::FromWebContents(web_contents) != nullptr) { 206 PermissionRequestManager::FromWebContents(web_contents) != nullptr) {
207 PermissionRequestManager::FromWebContents(web_contents) 207 PermissionRequestManager::FromWebContents(web_contents)
208 ->CancelRequest(it->second.get()); 208 ->CancelRequest(it->second.get());
209 } 209 }
210 } else { 210 } else {
211 #if defined(OS_ANDROID) 211 #if defined(OS_ANDROID)
212 GetQueueController()->CancelInfoBarRequest(id); 212 GetQueueController()->CancelInfoBarRequest(id);
213 #else 213 #else
214 NOTREACHED(); 214 NOTREACHED();
215 #endif 215 #endif
216 } 216 }
217 } 217 }
218 218
219 bool PermissionContextBase::IsPermissionKillSwitchOn() const { 219 bool PermissionContextBase::IsPermissionKillSwitchOn() const {
220 const std::string param = variations::GetVariationParamValue( 220 const std::string param = variations::GetVariationParamValue(
221 kPermissionsKillSwitchFieldStudy, 221 kPermissionsKillSwitchFieldStudy,
222 PermissionUtil::GetPermissionString(permission_type_)); 222 PermissionUtil::GetPermissionString(content_settings_type_));
223 223
224 return param == kPermissionsKillSwitchBlockedValue; 224 return param == kPermissionsKillSwitchBlockedValue;
225 } 225 }
226 226
227 ContentSetting PermissionContextBase::GetPermissionStatusInternal( 227 ContentSetting PermissionContextBase::GetPermissionStatusInternal(
228 const GURL& requesting_origin, 228 const GURL& requesting_origin,
229 const GURL& embedding_origin) const { 229 const GURL& embedding_origin) const {
230 return HostContentSettingsMapFactory::GetForProfile(profile_) 230 return HostContentSettingsMapFactory::GetForProfile(profile_)
231 ->GetContentSetting(requesting_origin, embedding_origin, 231 ->GetContentSetting(requesting_origin, embedding_origin,
232 content_settings_type_, std::string()); 232 content_settings_storage_type(), std::string());
233 } 233 }
234 234
235 void PermissionContextBase::DecidePermission( 235 void PermissionContextBase::DecidePermission(
236 content::WebContents* web_contents, 236 content::WebContents* web_contents,
237 const PermissionRequestID& id, 237 const PermissionRequestID& id,
238 const GURL& requesting_origin, 238 const GURL& requesting_origin,
239 const GURL& embedding_origin, 239 const GURL& embedding_origin,
240 bool user_gesture, 240 bool user_gesture,
241 const BrowserPermissionCallback& callback) { 241 const BrowserPermissionCallback& callback) {
242 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 242 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
243 243
244 if (PermissionRequestManager::IsEnabled()) { 244 if (PermissionRequestManager::IsEnabled()) {
245 PermissionRequestManager* permission_request_manager = 245 PermissionRequestManager* permission_request_manager =
246 PermissionRequestManager::FromWebContents(web_contents); 246 PermissionRequestManager::FromWebContents(web_contents);
247 // TODO(felt): sometimes |permission_request_manager| is null. This check is 247 // TODO(felt): sometimes |permission_request_manager| is null. This check is
248 // meant to prevent crashes. See crbug.com/457091. 248 // meant to prevent crashes. See crbug.com/457091.
249 if (!permission_request_manager) 249 if (!permission_request_manager)
250 return; 250 return;
251 251
252 std::unique_ptr<PermissionRequest> request_ptr = 252 std::unique_ptr<PermissionRequest> request_ptr =
253 base::MakeUnique<PermissionRequestImpl>( 253 base::MakeUnique<PermissionRequestImpl>(
254 requesting_origin, permission_type_, profile_, user_gesture, 254 requesting_origin, content_settings_type_, profile_, user_gesture,
255 base::Bind(&PermissionContextBase::PermissionDecided, 255 base::Bind(&PermissionContextBase::PermissionDecided,
256 weak_factory_.GetWeakPtr(), id, requesting_origin, 256 weak_factory_.GetWeakPtr(), id, requesting_origin,
257 embedding_origin, user_gesture, callback), 257 embedding_origin, user_gesture, callback),
258 base::Bind(&PermissionContextBase::CleanUpRequest, 258 base::Bind(&PermissionContextBase::CleanUpRequest,
259 weak_factory_.GetWeakPtr(), id)); 259 weak_factory_.GetWeakPtr(), id));
260 PermissionRequest* request = request_ptr.get(); 260 PermissionRequest* request = request_ptr.get();
261 261
262 bool inserted = 262 bool inserted =
263 pending_requests_ 263 pending_requests_
264 .insert(std::make_pair(id.ToString(), std::move(request_ptr))) 264 .insert(std::make_pair(id.ToString(), std::move(request_ptr)))
(...skipping 27 matching lines...) Expand all
292 if (PermissionRequestManager::IsEnabled()) { 292 if (PermissionRequestManager::IsEnabled()) {
293 // Infobar persistence and its related UMA is tracked on the infobar 293 // Infobar persistence and its related UMA is tracked on the infobar
294 // controller directly. 294 // controller directly.
295 PermissionRequestGestureType gesture_type = 295 PermissionRequestGestureType gesture_type =
296 user_gesture ? PermissionRequestGestureType::GESTURE 296 user_gesture ? PermissionRequestGestureType::GESTURE
297 : PermissionRequestGestureType::NO_GESTURE; 297 : PermissionRequestGestureType::NO_GESTURE;
298 DCHECK(content_setting == CONTENT_SETTING_ALLOW || 298 DCHECK(content_setting == CONTENT_SETTING_ALLOW ||
299 content_setting == CONTENT_SETTING_BLOCK || 299 content_setting == CONTENT_SETTING_BLOCK ||
300 content_setting == CONTENT_SETTING_DEFAULT); 300 content_setting == CONTENT_SETTING_DEFAULT);
301 if (content_setting == CONTENT_SETTING_ALLOW) { 301 if (content_setting == CONTENT_SETTING_ALLOW) {
302 PermissionUmaUtil::PermissionGranted(permission_type_, gesture_type, 302 PermissionUmaUtil::PermissionGranted(content_settings_type_, gesture_type,
303 requesting_origin, profile_); 303 requesting_origin, profile_);
304 } else if (content_setting == CONTENT_SETTING_BLOCK) { 304 } else if (content_setting == CONTENT_SETTING_BLOCK) {
305 PermissionUmaUtil::PermissionDenied(permission_type_, gesture_type, 305 PermissionUmaUtil::PermissionDenied(content_settings_type_, gesture_type,
306 requesting_origin, profile_); 306 requesting_origin, profile_);
307 } else { 307 } else {
308 PermissionUmaUtil::PermissionDismissed(permission_type_, gesture_type, 308 PermissionUmaUtil::PermissionDismissed(
309 requesting_origin, profile_); 309 content_settings_type_, gesture_type, requesting_origin, profile_);
310 } 310 }
311 } 311 }
312 312
313 if (content_setting == CONTENT_SETTING_DEFAULT && 313 if (content_setting == CONTENT_SETTING_DEFAULT &&
314 PermissionDecisionAutoBlocker::GetForProfile(profile_) 314 PermissionDecisionAutoBlocker::GetForProfile(profile_)
315 ->RecordDismissAndEmbargo(requesting_origin, permission_type_)) { 315 ->RecordDismissAndEmbargo(requesting_origin,
316 content_settings_type_)) {
316 // The permission has been embargoed, so it is blocked for this permission 317 // The permission has been embargoed, so it is blocked for this permission
317 // request, but not persisted. 318 // request, but not persisted.
318 content_setting = CONTENT_SETTING_BLOCK; 319 content_setting = CONTENT_SETTING_BLOCK;
319 } 320 }
320 321
321 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, 322 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback,
322 persist, content_setting); 323 persist, content_setting);
323 } 324 }
324 325
325 #if defined(OS_ANDROID) 326 #if defined(OS_ANDROID)
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 ContentSetting content_setting) { 365 ContentSetting content_setting) {
365 DCHECK_EQ(requesting_origin, requesting_origin.GetOrigin()); 366 DCHECK_EQ(requesting_origin, requesting_origin.GetOrigin());
366 DCHECK_EQ(embedding_origin, embedding_origin.GetOrigin()); 367 DCHECK_EQ(embedding_origin, embedding_origin.GetOrigin());
367 DCHECK(content_setting == CONTENT_SETTING_ALLOW || 368 DCHECK(content_setting == CONTENT_SETTING_ALLOW ||
368 content_setting == CONTENT_SETTING_BLOCK); 369 content_setting == CONTENT_SETTING_BLOCK);
369 DCHECK(!requesting_origin.SchemeIsFile()); 370 DCHECK(!requesting_origin.SchemeIsFile());
370 DCHECK(!embedding_origin.SchemeIsFile()); 371 DCHECK(!embedding_origin.SchemeIsFile());
371 372
372 HostContentSettingsMapFactory::GetForProfile(profile_) 373 HostContentSettingsMapFactory::GetForProfile(profile_)
373 ->SetContentSettingDefaultScope(requesting_origin, embedding_origin, 374 ->SetContentSettingDefaultScope(requesting_origin, embedding_origin,
374 content_settings_type_, std::string(), 375 content_settings_storage_type(),
375 content_setting); 376 std::string(), content_setting);
376 } 377 }
378
379 ContentSettingsType PermissionContextBase::content_settings_storage_type()
380 const {
381 if (content_settings_type_ == CONTENT_SETTINGS_TYPE_PUSH_MESSAGING)
382 return CONTENT_SETTINGS_TYPE_NOTIFICATIONS;
383 return content_settings_type_;
384 }
OLDNEW
« no previous file with comments | « chrome/browser/permissions/permission_context_base.h ('k') | chrome/browser/permissions/permission_context_base_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698