Index: chrome/browser/infobars/infobar_responder.cc |
diff --git a/chrome/browser/infobars/infobar_responder.cc b/chrome/browser/infobars/infobar_responder.cc |
index cddc89b343e129ef8852920dcc70474218748d98..4fc225ec2713a4d3aa8a91b32cc8dc62290fbdf4 100644 |
--- a/chrome/browser/infobars/infobar_responder.cc |
+++ b/chrome/browser/infobars/infobar_responder.cc |
@@ -11,8 +11,8 @@ |
#include "components/infobars/core/infobar.h" |
InfoBarResponder::InfoBarResponder(InfoBarService* infobar_service, |
- bool should_accept) |
- : infobar_service_(infobar_service), should_accept_(should_accept) { |
+ AutoResponseType response) |
+ : infobar_service_(infobar_service), response_(response) { |
infobar_service_->AddObserver(this); |
} |
@@ -33,9 +33,21 @@ void InfoBarResponder::OnInfoBarAdded(infobars::InfoBar* infobar) { |
base::Bind(&InfoBarResponder::Respond, base::Unretained(this), delegate)); |
} |
+void InfoBarResponder::OnInfoBarReplaced(infobars::InfoBar* old_infobar, |
+ infobars::InfoBar* new_infobar) { |
+ OnInfoBarAdded(new_infobar); |
+} |
+ |
void InfoBarResponder::Respond(ConfirmInfoBarDelegate* delegate) { |
- if (should_accept_) |
- delegate->Accept(); |
- else |
- delegate->Cancel(); |
+ switch (response_) { |
+ case ACCEPT: |
+ delegate->Accept(); |
+ break; |
+ case DENY: |
+ delegate->Cancel(); |
+ break; |
+ case DISMISS: |
+ delegate->InfoBarDismissed(); |
+ break; |
+ } |
} |