Index: chrome/browser/permissions/permission_manager.h |
diff --git a/chrome/browser/permissions/permission_manager.h b/chrome/browser/permissions/permission_manager.h |
index 4123cf721b920aca71809221dd035f5a7755826a..bae5ed1aff7c0533e5f32281e462ab6f347217aa 100644 |
--- a/chrome/browser/permissions/permission_manager.h |
+++ b/chrome/browser/permissions/permission_manager.h |
@@ -5,6 +5,8 @@ |
#ifndef CHROME_BROWSER_PERMISSIONS_PERMISSION_MANAGER_H_ |
#define CHROME_BROWSER_PERMISSIONS_PERMISSION_MANAGER_H_ |
+#include <unordered_map> |
+ |
#include "base/callback_forward.h" |
#include "base/id_map.h" |
#include "base/macros.h" |
@@ -14,6 +16,7 @@ |
#include "components/keyed_service/core/keyed_service.h" |
#include "content/public/browser/permission_manager.h" |
+class PermissionContextBase; |
class Profile; |
namespace content { |
@@ -25,6 +28,8 @@ class PermissionManager : public KeyedService, |
public content::PermissionManager, |
public content_settings::Observer { |
public: |
+ static PermissionManager* Get(Profile* profile); |
+ |
explicit PermissionManager(Profile* profile); |
~PermissionManager() override; |
@@ -62,12 +67,23 @@ class PermissionManager : public KeyedService, |
void UnsubscribePermissionStatusChange(int subscription_id) override; |
private: |
+ friend class GeolocationPermissionContextTests; |
+ // TODO(raymes): Refactor MediaPermission to not call GetPermissionContext. |
+ // See crbug.com/596786. |
+ friend class MediaPermission; |
+ |
class PendingRequest; |
using PendingRequestsMap = IDMap<PendingRequest, IDMapOwnPointer>; |
struct Subscription; |
using SubscriptionsMap = IDMap<Subscription, IDMapOwnPointer>; |
+ struct PermissionTypeHash { |
+ std::size_t operator()(const content::PermissionType& type) const; |
+ }; |
+ |
+ PermissionContextBase* GetPermissionContext(content::PermissionType type); |
+ |
// Called when a permission was decided for a given PendingRequest. The |
// PendingRequest is identified by its |request_id| and the permission is |
// identified by its |permission_id|. If the PendingRequest contains more than |
@@ -93,6 +109,11 @@ class PermissionManager : public KeyedService, |
PendingRequestsMap pending_requests_; |
SubscriptionsMap subscriptions_; |
+ std::unordered_map<content::PermissionType, |
+ scoped_ptr<PermissionContextBase>, |
+ PermissionTypeHash> |
+ permission_contexts_; |
+ |
base::WeakPtrFactory<PermissionManager> weak_ptr_factory_; |
DISALLOW_COPY_AND_ASSIGN(PermissionManager); |