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 35dc5ec81178ca42bd930191532b08c440efbb6b..ead3d56c2a70c3a7d4dfe6f896e6ce7b213a5674 100644 |
--- a/chrome/browser/permissions/permission_request_manager.cc |
+++ b/chrome/browser/permissions/permission_request_manager.cc |
@@ -229,19 +229,14 @@ void PermissionRequestManager::CancelRequest(PermissionRequest* request) { |
} |
void PermissionRequestManager::HideBubble() { |
-#if defined(ANDROID) |
- // The infobar system manages infobar lifetime and visibility so don't delete |
- // the PermissionPromptAndroid. |
- NOTREACHED(); |
-#else |
- // Disengage from the existing view if there is one. |
- if (!view_) |
+ // Disengage from the existing view if there is one and it doesn't manage |
+ // its own visibility. |
+ if (!view_ || view_->HidesAutomatically()) |
return; |
view_->SetDelegate(nullptr); |
view_->Hide(); |
view_.reset(); |
-#endif |
} |
void PermissionRequestManager::DisplayPendingRequests() { |
@@ -412,7 +407,7 @@ void PermissionRequestManager::TriggerShowBubble() { |
} |
void PermissionRequestManager::FinalizeBubble() { |
- if (view_) |
+ if (view_ && !view_->HidesAutomatically()) |
view_->Hide(); |
std::vector<PermissionRequest*>::iterator requests_iter; |