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

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

Issue 2110343002: Reintroduce plumbing for user gesture into permission system. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nits Created 4 years, 5 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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_manager.h" 5 #include "chrome/browser/permissions/permission_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 PermissionManager::~PermissionManager() { 253 PermissionManager::~PermissionManager() {
254 if (!subscriptions_.IsEmpty()) 254 if (!subscriptions_.IsEmpty())
255 HostContentSettingsMapFactory::GetForProfile(profile_) 255 HostContentSettingsMapFactory::GetForProfile(profile_)
256 ->RemoveObserver(this); 256 ->RemoveObserver(this);
257 } 257 }
258 258
259 int PermissionManager::RequestPermission( 259 int PermissionManager::RequestPermission(
260 PermissionType permission, 260 PermissionType permission,
261 content::RenderFrameHost* render_frame_host, 261 content::RenderFrameHost* render_frame_host,
262 const GURL& requesting_origin, 262 const GURL& requesting_origin,
263 bool user_gesture,
263 const base::Callback<void(PermissionStatus)>& callback) { 264 const base::Callback<void(PermissionStatus)>& callback) {
264 return RequestPermissions( 265 return RequestPermissions(
265 std::vector<PermissionType>(1, permission), 266 std::vector<PermissionType>(1, permission),
266 render_frame_host, 267 render_frame_host,
267 requesting_origin, 268 requesting_origin,
269 user_gesture,
268 base::Bind(&PermissionRequestResponseCallbackWrapper, callback)); 270 base::Bind(&PermissionRequestResponseCallbackWrapper, callback));
269 } 271 }
270 272
271 int PermissionManager::RequestPermissions( 273 int PermissionManager::RequestPermissions(
272 const std::vector<PermissionType>& permissions, 274 const std::vector<PermissionType>& permissions,
273 content::RenderFrameHost* render_frame_host, 275 content::RenderFrameHost* render_frame_host,
274 const GURL& requesting_origin, 276 const GURL& requesting_origin,
277 bool user_gesture,
275 const base::Callback<void( 278 const base::Callback<void(
276 const std::vector<PermissionStatus>&)>& callback) { 279 const std::vector<PermissionStatus>&)>& callback) {
277 if (permissions.empty()) { 280 if (permissions.empty()) {
278 callback.Run(std::vector<PermissionStatus>()); 281 callback.Run(std::vector<PermissionStatus>());
279 return kNoPendingOperation; 282 return kNoPendingOperation;
280 } 283 }
281 284
282 content::WebContents* web_contents = 285 content::WebContents* web_contents =
283 content::WebContents::FromRenderFrameHost(render_frame_host); 286 content::WebContents::FromRenderFrameHost(render_frame_host);
284 GURL embedding_origin = web_contents->GetLastCommittedURL().GetOrigin(); 287 GURL embedding_origin = web_contents->GetLastCommittedURL().GetOrigin();
(...skipping 12 matching lines...) Expand all
297 // Track permission request usages even for constant permissions. 300 // Track permission request usages even for constant permissions.
298 PermissionUmaUtil::PermissionRequested(permission, requesting_origin, 301 PermissionUmaUtil::PermissionRequested(permission, requesting_origin,
299 embedding_origin, profile_); 302 embedding_origin, profile_);
300 OnPermissionsRequestResponseStatus(request_id, i, 303 OnPermissionsRequestResponseStatus(request_id, i,
301 GetPermissionStatus(permission, requesting_origin, embedding_origin)); 304 GetPermissionStatus(permission, requesting_origin, embedding_origin));
302 continue; 305 continue;
303 } 306 }
304 307
305 PermissionContextBase* context = GetPermissionContext(permission); 308 PermissionContextBase* context = GetPermissionContext(permission);
306 context->RequestPermission( 309 context->RequestPermission(
307 web_contents, request, requesting_origin, 310 web_contents, request, requesting_origin, user_gesture,
308 base::Bind(&ContentSettingToPermissionStatusCallbackWrapper, 311 base::Bind(&ContentSettingToPermissionStatusCallbackWrapper,
309 base::Bind(&PermissionManager::OnPermissionsRequestResponseStatus, 312 base::Bind(&PermissionManager::OnPermissionsRequestResponseStatus,
310 weak_ptr_factory_.GetWeakPtr(), request_id, i))); 313 weak_ptr_factory_.GetWeakPtr(), request_id, i)));
311 } 314 }
312 315
313 // The request might have been resolved already. 316 // The request might have been resolved already.
314 if (!pending_requests_.Lookup(request_id)) 317 if (!pending_requests_.Lookup(request_id))
315 return kNoPendingOperation; 318 return kNoPendingOperation;
316 319
317 return request_id; 320 return request_id;
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 // Add the callback to |callbacks| which will be run after the loop to 473 // Add the callback to |callbacks| which will be run after the loop to
471 // prevent re-entrance issues. 474 // prevent re-entrance issues.
472 callbacks.push_back( 475 callbacks.push_back(
473 base::Bind(subscription->callback, 476 base::Bind(subscription->callback,
474 ContentSettingToPermissionStatus(new_value))); 477 ContentSettingToPermissionStatus(new_value)));
475 } 478 }
476 479
477 for (const auto& callback : callbacks) 480 for (const auto& callback : callbacks)
478 callback.Run(); 481 callback.Run();
479 } 482 }
OLDNEW
« no previous file with comments | « chrome/browser/permissions/permission_manager.h ('k') | chrome/browser/push_messaging/push_messaging_permission_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698