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

Unified Diff: content/browser/permissions/permission_service_impl.cc

Issue 819463002: Implement RevokePermission() method in PermissionService. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase, fix todo comments Created 5 years, 11 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
« no previous file with comments | « content/browser/permissions/permission_service_impl.h ('k') | content/common/permission_service.mojom » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « content/browser/permissions/permission_service_impl.h ('k') | content/common/permission_service.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698