Chromium Code Reviews| 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 23bf0981c4b12940354476927567553a8690b584..46b2481a92a78c2f0a3b8eb8f279d7bbf82ac0a7 100644 |
| --- a/content/browser/permissions/permission_service_impl.cc |
| +++ b/content/browser/permissions/permission_service_impl.cc |
| @@ -119,16 +119,21 @@ void PermissionServiceImpl::RequestPermission( |
| PermissionType permission_type = PermissionNameToPermissionType(permission); |
| int request_id = pending_requests_.Add( |
|
mlamouri (slow - plz ping)
2015/09/16 14:42:56
nit: rename to pending_request_id
Lalit Maganti
2015/09/16 16:41:10
Done.
|
| new PendingRequest(permission_type, GURL(origin), callback)); |
| - |
|
mlamouri (slow - plz ping)
2015/09/16 14:42:57
nit: keep that line
Lalit Maganti
2015/09/16 16:41:10
Done.
|
| - browser_context->GetPermissionManager()->RequestPermission( |
| + int manager_id = browser_context->GetPermissionManager()->RequestPermission( |
|
mlamouri (slow - plz ping)
2015/09/16 14:42:56
s/manager_id/id/
Lalit Maganti
2015/09/16 16:41:10
Done.
|
| permission_type, |
| context_->render_frame_host(), |
| - request_id, |
| GURL(origin), |
| user_gesture, // TODO(mlamouri): should be removed (crbug.com/423770) |
| base::Bind(&PermissionServiceImpl::OnRequestPermissionResponse, |
| weak_factory_.GetWeakPtr(), |
| request_id)); |
| + |
| + // Check if the request still exists. It may have been removed by the |
| + // the response callback. |
| + PendingRequest* pending_request = pending_requests_.Lookup(request_id); |
|
mlamouri (slow - plz ping)
2015/09/16 14:42:57
This is a bit unfortunate. Though, unless we call
Lalit Maganti
2015/09/16 16:41:10
Agreed.
|
| + if (!pending_request) |
| + return; |
| + pending_request->manager_id = manager_id; |
|
mlamouri (slow - plz ping)
2015/09/16 14:42:56
pending_request->id = id;
Lalit Maganti
2015/09/16 16:41:10
Done.
|
| } |
| void PermissionServiceImpl::RequestPermissions( |
| @@ -158,7 +163,6 @@ void PermissionServiceImpl::OnRequestPermissionResponse( |
| } |
| void PermissionServiceImpl::CancelPendingOperations() { |
| - DCHECK(context_->render_frame_host()); |
| DCHECK(context_->GetBrowserContext()); |
| PermissionManager* permission_manager = |
| @@ -170,10 +174,7 @@ void PermissionServiceImpl::CancelPendingOperations() { |
| for (RequestsMap::Iterator<PendingRequest> it(&pending_requests_); |
| !it.IsAtEnd(); it.Advance()) { |
| permission_manager->CancelPermissionRequest( |
| - it.GetCurrentValue()->permission, |
| - context_->render_frame_host(), |
| - it.GetCurrentKey(), |
| - it.GetCurrentValue()->origin); |
| + it.GetCurrentValue()->manager_id); |
| } |
| pending_requests_.Clear(); |