| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_INFOBARS_INFOBAR_RESPONDER_H_ |
| #define CHROME_BROWSER_INFOBARS_INFOBAR_RESPONDER_H_ |
| |
| #include "base/macros.h" |
| #include "components/infobars/core/infobar_manager.h" |
| |
| namespace infobars { |
| class InfoBar; |
| } |
| |
| class ConfirmInfoBarDelegate; |
| class InfoBarService; |
| |
| // Used by test code to asynchronously respond to the first infobar shown, which |
| // must have a ConfirmInfoBarDelegate. This can be used to ensure various |
| // interaction flows work correctly. |
| // |
| // The asynchronous response matches how real users will use the infobar. |
| class InfoBarResponder : public infobars::InfoBarManager::Observer { |
| public: |
| enum AutoResponseType { |
| ACCEPT, |
| DENY, |
| DISMISS |
| }; |
| |
| // The responder will asynchronously perform the requested |response|. |
| InfoBarResponder(InfoBarService* infobar_service, AutoResponseType response); |
| ~InfoBarResponder() override; |
| |
| // infobars::InfoBarManager::Observer: |
| void OnInfoBarAdded(infobars::InfoBar* infobar) override; |
| void OnInfoBarReplaced(infobars::InfoBar* old_infobar, |
| infobars::InfoBar* new_infobar) override; |
| |
| private: |
| void Respond(ConfirmInfoBarDelegate* delegate); |
| |
| InfoBarService* infobar_service_; |
| AutoResponseType response_; |
| |
| DISALLOW_COPY_AND_ASSIGN(InfoBarResponder); |
| }; |
| |
| #endif // CHROME_BROWSER_INFOBARS_INFOBAR_RESPONDER_H_ |