diff options
Diffstat (limited to 'chromium/components/permissions/permission_manager.cc')
-rw-r--r-- | chromium/components/permissions/permission_manager.cc | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/chromium/components/permissions/permission_manager.cc b/chromium/components/permissions/permission_manager.cc index 40a9b5551fe..180b8012ed9 100644 --- a/chromium/components/permissions/permission_manager.cc +++ b/chromium/components/permissions/permission_manager.cc @@ -536,14 +536,14 @@ bool PermissionManager::IsPermissionOverridableByDevTools( origin->GetURL()); } -int PermissionManager::SubscribePermissionStatusChange( +PermissionManager::SubscriptionId PermissionManager::SubscribePermissionStatusChange( PermissionType permission, content::RenderFrameHost* render_frame_host, const GURL& requesting_origin, base::RepeatingCallback<void(PermissionStatus)> callback) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); if (is_shutting_down_) - return 0; + return SubscriptionId(); if (subscriptions_.IsEmpty()) PermissionsClient::Get() @@ -580,16 +580,20 @@ int PermissionManager::SubscribePermissionStatusChange( subscription->callback = base::BindRepeating(&SubscriptionCallbackWrapper, std::move(callback)); - return subscriptions_.Add(std::move(subscription)); + auto id = subscription_id_generator_.GenerateNextId(); + subscriptions_.AddWithID(std::move(subscription), id); + return id; } -void PermissionManager::UnsubscribePermissionStatusChange(int subscription_id) { +void PermissionManager::UnsubscribePermissionStatusChange( + SubscriptionId subscription_id) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); if (is_shutting_down_) return; - // Whether |subscription_id| is known will be checked by the Remove() call. - subscriptions_.Remove(subscription_id); + if (subscriptions_.Lookup(subscription_id)) { + subscriptions_.Remove(subscription_id); + } if (subscriptions_.IsEmpty()) { PermissionsClient::Get() |