summaryrefslogtreecommitdiff
path: root/chromium/components/permissions/permission_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/permissions/permission_manager.cc')
-rw-r--r--chromium/components/permissions/permission_manager.cc16
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()