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

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

Issue 2627853002: Show the search geolocation disclosure from geolocation API use. (Closed)
Patch Set: Fix ChromeOS Created 3 years, 11 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 #include <utility> 8 #include <utility>
9 9
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 if (!requesting_origin.is_valid() || !embedding_origin.is_valid()) { 89 if (!requesting_origin.is_valid() || !embedding_origin.is_valid()) {
90 std::string type_name = 90 std::string type_name =
91 content_settings::WebsiteSettingsRegistry::GetInstance() 91 content_settings::WebsiteSettingsRegistry::GetInstance()
92 ->Get(content_settings_type_) 92 ->Get(content_settings_type_)
93 ->name(); 93 ->name();
94 94
95 DVLOG(1) << "Attempt to use " << type_name 95 DVLOG(1) << "Attempt to use " << type_name
96 << " from an invalid URL: " << requesting_origin << "," 96 << " from an invalid URL: " << requesting_origin << ","
97 << embedding_origin << " (" << type_name 97 << embedding_origin << " (" << type_name
98 << " is not supported in popups)"; 98 << " is not supported in popups)";
99 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, 99 NotifyPermissionSet(web_contents, id, requesting_origin, embedding_origin,
100 false /* persist */, CONTENT_SETTING_BLOCK); 100 callback, false /* persist */, CONTENT_SETTING_BLOCK);
101 return; 101 return;
102 } 102 }
103 103
104 ContentSetting content_setting = 104 ContentSetting content_setting =
105 GetPermissionStatus(requesting_origin, embedding_origin); 105 GetPermissionStatus(requesting_origin, embedding_origin);
106 if (content_setting == CONTENT_SETTING_ALLOW) { 106 if (content_setting == CONTENT_SETTING_ALLOW) {
107 HostContentSettingsMapFactory::GetForProfile(profile_)->UpdateLastUsage( 107 HostContentSettingsMapFactory::GetForProfile(profile_)->UpdateLastUsage(
108 requesting_origin, embedding_origin, content_settings_type_); 108 requesting_origin, embedding_origin, content_settings_type_);
109 } 109 }
110 if (content_setting == CONTENT_SETTING_ALLOW || 110 if (content_setting == CONTENT_SETTING_ALLOW ||
111 content_setting == CONTENT_SETTING_BLOCK) { 111 content_setting == CONTENT_SETTING_BLOCK) {
112 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, 112 NotifyPermissionSet(web_contents, id, requesting_origin, embedding_origin,
113 false /* persist */, content_setting); 113 callback, false /* persist */, content_setting);
114 return; 114 return;
115 } 115 }
116 116
117 PermissionUmaUtil::PermissionRequested(permission_type_, requesting_origin, 117 PermissionUmaUtil::PermissionRequested(permission_type_, requesting_origin,
118 embedding_origin, profile_); 118 embedding_origin, profile_);
119 119
120 DecidePermission(web_contents, id, requesting_origin, embedding_origin, 120 DecidePermission(web_contents, id, requesting_origin, embedding_origin,
121 user_gesture, callback); 121 user_gesture, callback);
122 } 122 }
123 123
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 PermissionRequestManager::FromWebContents(web_contents); 196 PermissionRequestManager::FromWebContents(web_contents);
197 // TODO(felt): sometimes |permission_request_manager| is null. This check is 197 // TODO(felt): sometimes |permission_request_manager| is null. This check is
198 // meant to prevent crashes. See crbug.com/457091. 198 // meant to prevent crashes. See crbug.com/457091.
199 if (!permission_request_manager) 199 if (!permission_request_manager)
200 return; 200 return;
201 201
202 std::unique_ptr<PermissionRequest> request_ptr = 202 std::unique_ptr<PermissionRequest> request_ptr =
203 base::MakeUnique<PermissionRequestImpl>( 203 base::MakeUnique<PermissionRequestImpl>(
204 requesting_origin, permission_type_, profile_, user_gesture, 204 requesting_origin, permission_type_, profile_, user_gesture,
205 base::Bind(&PermissionContextBase::PermissionDecided, 205 base::Bind(&PermissionContextBase::PermissionDecided,
206 weak_factory_.GetWeakPtr(), id, requesting_origin, 206 weak_factory_.GetWeakPtr(), web_contents, id,
207 embedding_origin, user_gesture, callback), 207 requesting_origin, embedding_origin, user_gesture,
208 callback),
208 base::Bind(&PermissionContextBase::CleanUpRequest, 209 base::Bind(&PermissionContextBase::CleanUpRequest,
209 weak_factory_.GetWeakPtr(), id)); 210 weak_factory_.GetWeakPtr(), id));
210 PermissionRequest* request = request_ptr.get(); 211 PermissionRequest* request = request_ptr.get();
211 212
212 bool inserted = 213 bool inserted =
213 pending_requests_ 214 pending_requests_
214 .insert(std::make_pair(id.ToString(), std::move(request_ptr))) 215 .insert(std::make_pair(id.ToString(), std::move(request_ptr)))
215 .second; 216 .second;
216 DCHECK(inserted) << "Duplicate id " << id.ToString(); 217 DCHECK(inserted) << "Duplicate id " << id.ToString();
217 permission_request_manager->AddRequest(request); 218 permission_request_manager->AddRequest(request);
218 } else { 219 } else {
219 #if defined(OS_ANDROID) 220 #if defined(OS_ANDROID)
220 GetQueueController()->CreateInfoBarRequest( 221 GetQueueController()->CreateInfoBarRequest(
221 id, requesting_origin, embedding_origin, user_gesture, 222 id, requesting_origin, embedding_origin, user_gesture,
222 base::Bind(&PermissionContextBase::PermissionDecided, 223 base::Bind(&PermissionContextBase::PermissionDecided,
223 weak_factory_.GetWeakPtr(), id, requesting_origin, 224 weak_factory_.GetWeakPtr(), web_contents, id,
224 embedding_origin, user_gesture, callback, 225 requesting_origin, embedding_origin, user_gesture, callback,
225 // the queue controller takes care of persisting the 226 // the queue controller takes care of persisting the
226 // permission 227 // permission
227 false)); 228 false));
228 #else 229 #else
229 NOTREACHED(); 230 NOTREACHED();
230 #endif 231 #endif
231 } 232 }
232 } 233 }
233 234
234 void PermissionContextBase::PermissionDecided( 235 void PermissionContextBase::PermissionDecided(
236 content::WebContents* web_contents,
235 const PermissionRequestID& id, 237 const PermissionRequestID& id,
236 const GURL& requesting_origin, 238 const GURL& requesting_origin,
237 const GURL& embedding_origin, 239 const GURL& embedding_origin,
238 bool user_gesture, 240 bool user_gesture,
239 const BrowserPermissionCallback& callback, 241 const BrowserPermissionCallback& callback,
240 bool persist, 242 bool persist,
241 ContentSetting content_setting) { 243 ContentSetting content_setting) {
242 if (PermissionRequestManager::IsEnabled()) { 244 if (PermissionRequestManager::IsEnabled()) {
243 // Infobar persistence and its related UMA is tracked on the infobar 245 // Infobar persistence and its related UMA is tracked on the infobar
244 // controller directly. 246 // controller directly.
(...skipping 17 matching lines...) Expand all
262 264
263 // Check if we should convert a dismiss decision into a block decision. This 265 // Check if we should convert a dismiss decision into a block decision. This
264 // is gated on enabling the kBlockPromptsIfDismissedOften feature. 266 // is gated on enabling the kBlockPromptsIfDismissedOften feature.
265 if (content_setting == CONTENT_SETTING_DEFAULT && 267 if (content_setting == CONTENT_SETTING_DEFAULT &&
266 PermissionDecisionAutoBlocker::ShouldChangeDismissalToBlock( 268 PermissionDecisionAutoBlocker::ShouldChangeDismissalToBlock(
267 requesting_origin, permission_type_, profile_)) { 269 requesting_origin, permission_type_, profile_)) {
268 persist = true; 270 persist = true;
269 content_setting = CONTENT_SETTING_BLOCK; 271 content_setting = CONTENT_SETTING_BLOCK;
270 } 272 }
271 273
272 NotifyPermissionSet(id, requesting_origin, embedding_origin, callback, 274 NotifyPermissionSet(web_contents, id, requesting_origin, embedding_origin,
273 persist, content_setting); 275 callback, persist, content_setting);
274 } 276 }
275 277
276 #if defined(OS_ANDROID) 278 #if defined(OS_ANDROID)
277 PermissionQueueController* PermissionContextBase::GetQueueController() { 279 PermissionQueueController* PermissionContextBase::GetQueueController() {
278 return permission_queue_controller_.get(); 280 return permission_queue_controller_.get();
279 } 281 }
280 #endif 282 #endif
281 283
282 Profile* PermissionContextBase::profile() const { 284 Profile* PermissionContextBase::profile() const {
283 return profile_; 285 return profile_;
284 } 286 }
285 287
286 void PermissionContextBase::NotifyPermissionSet( 288 void PermissionContextBase::NotifyPermissionSet(
289 content::WebContents* web_contents,
287 const PermissionRequestID& id, 290 const PermissionRequestID& id,
288 const GURL& requesting_origin, 291 const GURL& requesting_origin,
289 const GURL& embedding_origin, 292 const GURL& embedding_origin,
290 const BrowserPermissionCallback& callback, 293 const BrowserPermissionCallback& callback,
291 bool persist, 294 bool persist,
292 ContentSetting content_setting) { 295 ContentSetting content_setting) {
293 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 296 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
294 297
295 if (persist) 298 if (persist)
296 UpdateContentSetting(requesting_origin, embedding_origin, content_setting); 299 UpdateContentSetting(requesting_origin, embedding_origin, content_setting);
(...skipping 21 matching lines...) Expand all
318 DCHECK(content_setting == CONTENT_SETTING_ALLOW || 321 DCHECK(content_setting == CONTENT_SETTING_ALLOW ||
319 content_setting == CONTENT_SETTING_BLOCK); 322 content_setting == CONTENT_SETTING_BLOCK);
320 DCHECK(!requesting_origin.SchemeIsFile()); 323 DCHECK(!requesting_origin.SchemeIsFile());
321 DCHECK(!embedding_origin.SchemeIsFile()); 324 DCHECK(!embedding_origin.SchemeIsFile());
322 325
323 HostContentSettingsMapFactory::GetForProfile(profile_) 326 HostContentSettingsMapFactory::GetForProfile(profile_)
324 ->SetContentSettingDefaultScope(requesting_origin, embedding_origin, 327 ->SetContentSettingDefaultScope(requesting_origin, embedding_origin,
325 content_settings_type_, std::string(), 328 content_settings_type_, std::string(),
326 content_setting); 329 content_setting);
327 } 330 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698