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

Unified Diff: chrome/browser/permissions/permission_manager.cc

Issue 1803973002: Content Settings: Add RevocationObserver to measure when permissions are revoked (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review comments Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/permissions/permission_manager.cc
diff --git a/chrome/browser/permissions/permission_manager.cc b/chrome/browser/permissions/permission_manager.cc
index c1a719a45241bd34562014df15d8fad512357426..440f18d175a372a03676ecef8fca2a18819120c5 100644
--- a/chrome/browser/permissions/permission_manager.cc
+++ b/chrome/browser/permissions/permission_manager.cc
@@ -12,6 +12,8 @@
#include "chrome/browser/permissions/permission_context.h"
#include "chrome/browser/permissions/permission_context_base.h"
#include "chrome/browser/permissions/permission_request_id.h"
+#include "chrome/browser/permissions/permission_uma_util.h"
+#include "chrome/browser/permissions/permission_util.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/tab_contents/tab_util.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
@@ -198,12 +200,11 @@ struct PermissionManager::Subscription {
PermissionManager::PermissionManager(Profile* profile)
: profile_(profile),
weak_ptr_factory_(this) {
+ HostContentSettingsMapFactory::GetForProfile(profile_)->AddObserver(this);
}
PermissionManager::~PermissionManager() {
- if (!subscriptions_.IsEmpty())
- HostContentSettingsMapFactory::GetForProfile(profile_)
- ->RemoveObserver(this);
+ HostContentSettingsMapFactory::GetForProfile(profile_)->RemoveObserver(this);
}
int PermissionManager::RequestPermission(
@@ -351,8 +352,6 @@ int PermissionManager::SubscribePermissionStatusChange(
const GURL& requesting_origin,
const GURL& embedding_origin,
const base::Callback<void(PermissionStatus)>& callback) {
- if (subscriptions_.IsEmpty())
- HostContentSettingsMapFactory::GetForProfile(profile_)->AddObserver(this);
Subscription* subscription = new Subscription();
subscription->permission = permission;
@@ -375,10 +374,6 @@ int PermissionManager::SubscribePermissionStatusChange(
void PermissionManager::UnsubscribePermissionStatusChange(int subscription_id) {
// Whether |subscription_id| is known will be checked by the Remove() call.
subscriptions_.Remove(subscription_id);
-
- if (subscriptions_.IsEmpty())
- HostContentSettingsMapFactory::GetForProfile(profile_)
- ->RemoveObserver(this);
}
bool PermissionManager::IsPermissionBubbleManagerMissing(
@@ -429,3 +424,13 @@ void PermissionManager::OnContentSettingChanged(
for (const auto& callback : callbacks)
callback.Run();
}
+
+void PermissionManager::OnContentSettingRevoked(
+ const GURL& primary_url,
+ const GURL& secondary_url,
+ ContentSettingsType content_type,
+ std::string resource_identifier) {
+ PermissionType permission_type;
+ if (PermissionUtil::GetPermissionType(content_type, &permission_type))
+ PermissionUmaUtil::PermissionRevoked(permission_type, primary_url);
+}

Powered by Google App Engine
This is Rietveld 408576698