Index: content/renderer/geolocation_dispatcher.cc |
diff --git a/content/renderer/geolocation_dispatcher.cc b/content/renderer/geolocation_dispatcher.cc |
index 083927fce88076ec67d93fd29af75dfc7f10a4e1..727e79797df203ddb3ecb5df6359d0e587abf974 100644 |
--- a/content/renderer/geolocation_dispatcher.cc |
+++ b/content/renderer/geolocation_dispatcher.cc |
@@ -72,6 +72,7 @@ bool GeolocationDispatcher::lastPosition(WebGeolocationPosition&) { |
// conversion is necessary. |
void GeolocationDispatcher::requestPermission( |
const WebGeolocationPermissionRequest& permissionRequest) { |
+ num_pending_permission_requests_++; |
if (!permission_service_.get()) { |
render_frame()->GetServiceRegistry()->ConnectToRemoteService( |
mojo::GetProxy(&permission_service_)); |
@@ -90,6 +91,8 @@ void GeolocationDispatcher::cancelPermissionRequest( |
const blink::WebGeolocationPermissionRequest& permissionRequest) { |
int permission_request_id; |
pending_permissions_->remove(permissionRequest, permission_request_id); |
+ if (--num_pending_permission_requests_ == 0) |
+ permission_service_.reset(); |
} |
// Permission for using geolocation has been set. |
@@ -100,6 +103,9 @@ void GeolocationDispatcher::OnPermissionSet( |
if (!pending_permissions_->remove(permission_request_id, permissionRequest)) |
return; |
+ if (--num_pending_permission_requests_ == 0) |
+ permission_service_.reset(); |
+ |
permissionRequest.setIsAllowed(status == |
blink::mojom::PermissionStatus::GRANTED); |
} |