Index: content/browser/permissions/permission_service_impl.cc |
diff --git a/content/browser/permissions/permission_service_impl.cc b/content/browser/permissions/permission_service_impl.cc |
index 5665d2dd9d59658282ea61fc7464d43ade75ba38..462093cd4f58ced3c4e292a7e9f08834b3b864ce 100644 |
--- a/content/browser/permissions/permission_service_impl.cc |
+++ b/content/browser/permissions/permission_service_impl.cc |
@@ -114,14 +114,42 @@ void PermissionServiceImpl::HasPermission( |
const mojo::Callback<void(PermissionStatus)>& callback) { |
DCHECK(context_->GetBrowserContext()); |
+ callback.Run(GetPermissionStatus(PermissionNameToPermissionType(permission), |
+ GURL(origin))); |
+} |
+ |
+void PermissionServiceImpl::RevokePermission( |
+ PermissionName permission, |
+ const mojo::String& origin, |
+ const mojo::Callback<void(PermissionStatus)>& callback) { |
+ GURL origin_url(origin); |
+ PermissionType permission_type = PermissionNameToPermissionType(permission); |
+ PermissionStatus status = GetPermissionStatus(permission_type, origin_url); |
+ |
+ if (status != PERMISSION_STATUS_GRANTED) |
+ callback.Run(status); |
+ |
+ ResetPermissionStatus(permission_type, origin_url); |
+ |
+ callback.Run(GetPermissionStatus(permission_type, origin_url)); |
+} |
+ |
+PermissionStatus PermissionServiceImpl::GetPermissionStatus(PermissionType type, |
+ GURL origin) { |
// If the embedding_origin is empty we'll use |origin| instead. |
GURL embedding_origin = context_->GetEmbeddingOrigin(); |
+ return GetContentClient()->browser()->GetPermissionStatus( |
+ type, context_->GetBrowserContext(), origin, |
+ embedding_origin.is_empty() ? origin : embedding_origin); |
+} |
- callback.Run(GetContentClient()->browser()->GetPermissionStatus( |
- PermissionNameToPermissionType(permission), |
- context_->GetBrowserContext(), |
- GURL(origin), |
- embedding_origin.is_empty() ? GURL(origin) : embedding_origin)); |
+void PermissionServiceImpl::ResetPermissionStatus(PermissionType type, |
+ GURL origin) { |
+ // If the embedding_origin is empty we'll use |origin| instead. |
+ GURL embedding_origin = context_->GetEmbeddingOrigin(); |
+ GetContentClient()->browser()->ResetPermission( |
+ type, context_->GetBrowserContext(), origin, |
+ embedding_origin.is_empty() ? origin : embedding_origin); |
} |
} // namespace content |