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

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

Issue 2480293004: Mandate unique_ptr for base::IDMap in IDMapOwnPointer mode. (Closed)
Patch Set: Make changes requested by danakj, fix a few more headers Created 4 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 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 <memory> 9 #include <memory>
10 #include <utility>
10 11
11 #include "base/callback.h" 12 #include "base/callback.h"
12 #include "base/memory/ptr_util.h" 13 #include "base/memory/ptr_util.h"
13 #include "build/build_config.h" 14 #include "build/build_config.h"
14 #include "chrome/browser/background_sync/background_sync_permission_context.h" 15 #include "chrome/browser/background_sync/background_sync_permission_context.h"
15 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" 16 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
16 #include "chrome/browser/media/midi_permission_context.h" 17 #include "chrome/browser/media/midi_permission_context.h"
17 #include "chrome/browser/media/webrtc/media_stream_device_permission_context.h" 18 #include "chrome/browser/media/webrtc/media_stream_device_permission_context.h"
18 #include "chrome/browser/notifications/notification_permission_context.h" 19 #include "chrome/browser/notifications/notification_permission_context.h"
19 #include "chrome/browser/permissions/permission_context_base.h" 20 #include "chrome/browser/permissions/permission_context_base.h"
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 295 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
295 if (permissions.empty()) { 296 if (permissions.empty()) {
296 callback.Run(std::vector<PermissionStatus>()); 297 callback.Run(std::vector<PermissionStatus>());
297 return kNoPendingOperation; 298 return kNoPendingOperation;
298 } 299 }
299 300
300 content::WebContents* web_contents = 301 content::WebContents* web_contents =
301 content::WebContents::FromRenderFrameHost(render_frame_host); 302 content::WebContents::FromRenderFrameHost(render_frame_host);
302 GURL embedding_origin = web_contents->GetLastCommittedURL().GetOrigin(); 303 GURL embedding_origin = web_contents->GetLastCommittedURL().GetOrigin();
303 304
304 PendingRequest* pending_request = new PendingRequest( 305 int request_id = pending_requests_.Add(base::MakeUnique<PendingRequest>(
305 render_frame_host, permissions, callback); 306 render_frame_host, permissions, callback));
306 int request_id = pending_requests_.Add(pending_request);
307 307
308 const PermissionRequestID request(render_frame_host, request_id); 308 const PermissionRequestID request(render_frame_host, request_id);
309 309
310 for (size_t i = 0; i < permissions.size(); ++i) { 310 for (size_t i = 0; i < permissions.size(); ++i) {
311 const PermissionType permission = permissions[i]; 311 const PermissionType permission = permissions[i];
312 312
313 if (IsConstantPermission(permission) || 313 if (IsConstantPermission(permission) ||
314 !GetPermissionContext(permission)) { 314 !GetPermissionContext(permission)) {
315 // Track permission request usages even for constant permissions. 315 // Track permission request usages even for constant permissions.
316 PermissionUmaUtil::PermissionRequested(permission, requesting_origin, 316 PermissionUmaUtil::PermissionRequested(permission, requesting_origin,
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 422
423 int PermissionManager::SubscribePermissionStatusChange( 423 int PermissionManager::SubscribePermissionStatusChange(
424 PermissionType permission, 424 PermissionType permission,
425 const GURL& requesting_origin, 425 const GURL& requesting_origin,
426 const GURL& embedding_origin, 426 const GURL& embedding_origin,
427 const base::Callback<void(PermissionStatus)>& callback) { 427 const base::Callback<void(PermissionStatus)>& callback) {
428 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 428 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
429 if (subscriptions_.IsEmpty()) 429 if (subscriptions_.IsEmpty())
430 HostContentSettingsMapFactory::GetForProfile(profile_)->AddObserver(this); 430 HostContentSettingsMapFactory::GetForProfile(profile_)->AddObserver(this);
431 431
432 Subscription* subscription = new Subscription(); 432 auto subscription = base::MakeUnique<Subscription>();
433 subscription->permission = permission; 433 subscription->permission = permission;
434 subscription->requesting_origin = requesting_origin; 434 subscription->requesting_origin = requesting_origin;
435 subscription->embedding_origin = embedding_origin; 435 subscription->embedding_origin = embedding_origin;
436 subscription->callback = callback; 436 subscription->callback = callback;
437 437
438 if (IsConstantPermission(permission)) { 438 if (IsConstantPermission(permission)) {
439 subscription->current_value = GetContentSettingForConstantPermission( 439 subscription->current_value = GetContentSettingForConstantPermission(
440 permission); 440 permission);
441 } else { 441 } else {
442 subscription->current_value = 442 subscription->current_value =
443 GetPermissionContext(permission) 443 GetPermissionContext(permission)
444 ->GetPermissionStatus(subscription->requesting_origin, 444 ->GetPermissionStatus(subscription->requesting_origin,
445 subscription->embedding_origin); 445 subscription->embedding_origin);
446 } 446 }
447 447
448 return subscriptions_.Add(subscription); 448 return subscriptions_.Add(std::move(subscription));
449 } 449 }
450 450
451 void PermissionManager::UnsubscribePermissionStatusChange(int subscription_id) { 451 void PermissionManager::UnsubscribePermissionStatusChange(int subscription_id) {
452 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 452 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
453 // Whether |subscription_id| is known will be checked by the Remove() call. 453 // Whether |subscription_id| is known will be checked by the Remove() call.
454 subscriptions_.Remove(subscription_id); 454 subscriptions_.Remove(subscription_id);
455 455
456 if (subscriptions_.IsEmpty()) 456 if (subscriptions_.IsEmpty())
457 HostContentSettingsMapFactory::GetForProfile(profile_) 457 HostContentSettingsMapFactory::GetForProfile(profile_)
458 ->RemoveObserver(this); 458 ->RemoveObserver(this);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 // Add the callback to |callbacks| which will be run after the loop to 495 // Add the callback to |callbacks| which will be run after the loop to
496 // prevent re-entrance issues. 496 // prevent re-entrance issues.
497 callbacks.push_back( 497 callbacks.push_back(
498 base::Bind(subscription->callback, 498 base::Bind(subscription->callback,
499 ContentSettingToPermissionStatus(new_value))); 499 ContentSettingToPermissionStatus(new_value)));
500 } 500 }
501 501
502 for (const auto& callback : callbacks) 502 for (const auto& callback : callbacks)
503 callback.Run(); 503 callback.Run();
504 } 504 }
OLDNEW
« no previous file with comments | « chrome/browser/metrics/subprocess_metrics_provider.cc ('k') | chrome/browser/ui/blocked_content/popup_blocker_tab_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698