Index: content/browser/permissions/permission_service_impl.h |
diff --git a/content/browser/permissions/permission_service_impl.h b/content/browser/permissions/permission_service_impl.h |
index e3c3fb4f750055b4649d67968ed1a2922a1631a0..0d8197664912ec95d72399e686c8d2f4a0e8e5f1 100644 |
--- a/content/browser/permissions/permission_service_impl.h |
+++ b/content/browser/permissions/permission_service_impl.h |
@@ -26,9 +26,10 @@ class PermissionServiceImpl : public mojo::InterfaceImpl<PermissionService> { |
public: |
~PermissionServiceImpl() override; |
- // Clear pending permissions associated with a given frame and request the |
- // browser to cancel the permission requests. |
- void CancelPendingRequests(); |
+ // Clear pending operations currently run by the service. This will be called |
+ // by PermissionServiceContext when it will need the service to clear its |
+ // state for example, if the frame changes. |
+ void CancelPendingOperations(); |
protected: |
friend PermissionServiceContext; |
@@ -36,43 +37,51 @@ class PermissionServiceImpl : public mojo::InterfaceImpl<PermissionService> { |
PermissionServiceImpl(PermissionServiceContext* context); |
private: |
+ using PermissionStatusCallback = mojo::Callback<void(PermissionStatus)>; |
+ |
struct PendingRequest { |
PendingRequest(PermissionType permission, const GURL& origin, |
- const mojo::Callback<void(PermissionStatus)>& callback); |
+ const PermissionStatusCallback& callback); |
~PendingRequest(); |
PermissionType permission; |
GURL origin; |
- mojo::Callback<void(PermissionStatus)> callback; |
+ PermissionStatusCallback callback; |
+ }; |
+ using RequestsMap = IDMap<PendingRequest, IDMapOwnPointer>; |
+ |
+ struct PendingSubscription { |
+ PendingSubscription(PermissionType permission, const GURL& origin, |
+ const PermissionStatusCallback& callback); |
+ ~PendingSubscription(); |
+ |
+ PermissionType permission; |
+ GURL origin; |
+ PermissionStatusCallback callback; |
}; |
- typedef IDMap<PendingRequest, IDMapOwnPointer> RequestsMap; |
+ using SubscriptionsMap = IDMap<PendingSubscription, IDMapOwnPointer>; |
// PermissionService. |
- void HasPermission( |
- PermissionName permission, |
- const mojo::String& origin, |
- const mojo::Callback<void(PermissionStatus)>& callback) override; |
- void RequestPermission( |
- PermissionName permission, |
- const mojo::String& origin, |
- bool user_gesture, |
- const mojo::Callback<void(PermissionStatus)>& callback) override; |
- void RevokePermission( |
- PermissionName permission, |
- const mojo::String& origin, |
- const mojo::Callback<void(PermissionStatus)>& callback) override; |
+ void HasPermission(PermissionName permission, |
+ const mojo::String& origin, |
+ const PermissionStatusCallback& callback) override; |
+ void RequestPermission(PermissionName permission, |
+ const mojo::String& origin, |
+ bool user_gesture, |
+ const PermissionStatusCallback& callback) override; |
+ void RevokePermission(PermissionName permission, |
+ const mojo::String& origin, |
+ const PermissionStatusCallback& callback) override; |
void GetNextPermissionChange( |
PermissionName permission, |
const mojo::String& origin, |
PermissionStatus last_known_status, |
- const mojo::Callback<void(PermissionStatus)>& callback) override; |
+ const PermissionStatusCallback& callback) override; |
// mojo::InterfaceImpl. |
void OnConnectionError() override; |
- void OnRequestPermissionResponse( |
- int request_id, |
- PermissionStatus status); |
+ void OnRequestPermissionResponse(int request_id, PermissionStatus status); |
PermissionStatus GetPermissionStatusFromName(PermissionName permission, |
const GURL& origin); |
@@ -80,12 +89,11 @@ class PermissionServiceImpl : public mojo::InterfaceImpl<PermissionService> { |
const GURL& origin); |
void ResetPermissionStatus(PermissionType type, const GURL& origin); |
- void OnPermissionStatusChanged( |
- const mojo::Callback<void(PermissionStatus)>& callback, |
- const int* subscription_id, |
- PermissionStatus status); |
+ void OnPermissionStatusChanged(const int* subscription_id, |
+ PermissionStatus status); |
RequestsMap pending_requests_; |
+ SubscriptionsMap pending_subscriptions_; |
// context_ owns |this|. |
PermissionServiceContext* context_; |
base::WeakPtrFactory<PermissionServiceImpl> weak_factory_; |