Index: chrome/browser/permissions/permission_manager.h |
diff --git a/chrome/browser/permissions/permission_manager.h b/chrome/browser/permissions/permission_manager.h |
index f4b308216bfaff4c773f2381ca4fb3b93cd48375..153ef424537becfed6a78406cfe3eec249e10756 100644 |
--- a/chrome/browser/permissions/permission_manager.h |
+++ b/chrome/browser/permissions/permission_manager.h |
@@ -6,10 +6,13 @@ |
#define CHROME_BROWSER_PERMISSIONS_PERMISSION_MANAGER_H_ |
#include "base/callback_forward.h" |
+#include "base/id_map.h" |
#include "base/macros.h" |
+#include "components/content_settings/core/browser/content_settings_observer.h" |
#include "components/keyed_service/core/keyed_service.h" |
#include "content/public/browser/permission_manager.h" |
+ |
class Profile; |
namespace content { |
@@ -17,7 +20,8 @@ enum class PermissionType; |
}; // namespace content |
class PermissionManager : public KeyedService, |
- public content::PermissionManager { |
+ public content::PermissionManager, |
+ public content_settings::Observer { |
public: |
explicit PermissionManager(Profile* profile); |
~PermissionManager() override; |
@@ -44,9 +48,25 @@ class PermissionManager : public KeyedService, |
void RegisterPermissionUsage(content::PermissionType permission, |
const GURL& requesting_origin, |
const GURL& embedding_origin) override; |
+ int SubscribePermissionStatusChange( |
+ content::PermissionType permission, |
+ const GURL& requesting_origin, |
+ const GURL& embedding_origin, |
+ const base::Callback<void(content::PermissionStatus)>& callback) override; |
+ void UnsubscribePermissionStatusChange(int subscription_id) override; |
private: |
+ struct Subscription; |
+ using SubscriptionsMap = IDMap<Subscription, IDMapOwnPointer>; |
+ |
+ // content_settings::Observer implementation. |
+ void OnContentSettingChanged(const ContentSettingsPattern& primary_pattern, |
+ const ContentSettingsPattern& secondary_pattern, |
+ ContentSettingsType content_type, |
+ std::string resource_identifier) override; |
+ |
Profile* profile_; |
+ SubscriptionsMap subscriptions_; |
DISALLOW_COPY_AND_ASSIGN(PermissionManager); |
}; |