Index: chrome/browser/permissions/permission_request_manager.cc |
diff --git a/chrome/browser/permissions/permission_request_manager.cc b/chrome/browser/permissions/permission_request_manager.cc |
index 51fe1baeb4634a09154be5a89f38abc737956e32..8b6d9760e1d839fd0060f2c5bb561fef02081b4c 100644 |
--- a/chrome/browser/permissions/permission_request_manager.cc |
+++ b/chrome/browser/permissions/permission_request_manager.cc |
@@ -179,26 +179,17 @@ void PermissionRequestManager::CancelRequest(PermissionRequest* request) { |
continue; |
// We can simply erase the current entry in the request table if we aren't |
- // showing the dialog, or if we are showing it and it can accept the update. |
- bool can_erase = !view_ || view_->CanAcceptRequestUpdate(); |
- if (can_erase) { |
- RequestFinishedIncludingDuplicates(*requests_iter); |
+ // showing the dialog, or if we are showing it and it can be cancelled. |
+ if (!view_ || view_->MaybeCancelRequest()) { |
requests_.erase(requests_iter); |
accept_states_.erase(accepts_iter); |
- |
- if (view_) { |
- view_->Hide(); |
- // Will redraw the bubble if it is being shown. |
+ if (view_) |
DequeueRequestsAndShowBubble(); |
- } |
- return; |
+ } else { |
+ // The prompt is still being shown so replace the request with a dummy. |
+ *requests_iter = new CancelledRequest(*requests_iter); |
} |
- |
- // Cancel the existing request and replace it with a dummy. |
- PermissionRequest* cancelled_request = |
- new CancelledRequest(*requests_iter); |
- RequestFinishedIncludingDuplicates(*requests_iter); |
- *requests_iter = cancelled_request; |
+ RequestFinishedIncludingDuplicates(request); |
return; |
} |