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

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

Issue 2617863003: Restore logic to unsubscribe from permission changes on frame change. (Closed)
Patch Set: Created 3 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
Index: content/browser/permissions/permission_service_context.cc
diff --git a/content/browser/permissions/permission_service_context.cc b/content/browser/permissions/permission_service_context.cc
index cffb065032c65a1d42da59c383a88c087523c929..9292a310d0481b1e9e0566a940306e10bf6ed55a 100644
--- a/content/browser/permissions/permission_service_context.cc
+++ b/content/browser/permissions/permission_service_context.cc
@@ -27,7 +27,15 @@ class PermissionServiceContext::PermissionSubscription {
&PermissionSubscription::OnConnectionError, base::Unretained(this)));
}
- ~PermissionSubscription() = default;
+ ~PermissionSubscription() {
+ DCHECK_NE(id_, 0);
+ BrowserContext* browser_context = context_->GetBrowserContext();
+ DCHECK(browser_context);
+ if (browser_context->GetPermissionManager()) {
+ browser_context->GetPermissionManager()
+ ->UnsubscribePermissionStatusChange(id_);
+ }
+ }
void OnConnectionError() {
DCHECK_NE(id_, 0);
@@ -105,13 +113,6 @@ void PermissionServiceContext::ServiceHadConnectionError(
}
void PermissionServiceContext::ObserverHadConnectionError(int subscription_id) {
- BrowserContext* browser_context = GetBrowserContext();
- DCHECK(browser_context);
- if (browser_context->GetPermissionManager()) {
- browser_context->GetPermissionManager()->UnsubscribePermissionStatusChange(
- subscription_id);
- }
-
auto it = subscriptions_.find(subscription_id);
DCHECK(it != subscriptions_.end());
subscriptions_.erase(it);
@@ -139,13 +140,15 @@ void PermissionServiceContext::DidNavigateAnyFrame(
}
void PermissionServiceContext::CancelPendingOperations(
- RenderFrameHost* render_frame_host) const {
+ RenderFrameHost* render_frame_host) {
DCHECK(render_frame_host_);
if (render_frame_host != render_frame_host_)
return;
for (const auto& service : services_)
service->CancelPendingOperations();
+
+ subscriptions_.clear();
}
BrowserContext* PermissionServiceContext::GetBrowserContext() const {
« no previous file with comments | « content/browser/permissions/permission_service_context.h ('k') | content/browser/permissions/permission_service_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698