Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / ios / chrome / browser / infobars / infobar_container_ios.h
blob44db6c64ecbea932ee437e96ecf72999acb001f7
1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef IOS_CHROME_BROWSER_INFOBARS_INFOBAR_CONTAINER_IOS_H_
6 #define IOS_CHROME_BROWSER_INFOBARS_INFOBAR_CONTAINER_IOS_H_
8 #include "components/infobars/core/infobar_container.h"
10 #include "base/mac/scoped_nsobject.h"
12 @class InfoBarContainerView;
13 class InfoBarIOS;
15 // IOS infobar container specialization, managing infobars visibility so
16 // that only the front most one is visible at any time.
17 class InfoBarContainerIOS : public infobars::InfoBarContainer {
18 public:
19 explicit InfoBarContainerIOS(infobars::InfoBarContainer::Delegate* delegate);
20 ~InfoBarContainerIOS() override;
22 // Returns the UIView container.
23 InfoBarContainerView* view();
25 // Hides the current infobar keeping the current state. If a new infobar is
26 // added, it will be hidden as well.
27 void SuspendInfobars();
29 // Restores the normal behavior of the infobars.
30 void RestoreInfobars();
32 protected:
33 void PlatformSpecificAddInfoBar(infobars::InfoBar* infobar,
34 size_t position) override;
35 void PlatformSpecificRemoveInfoBar(infobars::InfoBar* infobar) override;
36 void PlatformSpecificInfoBarStateChanged(bool is_animating) override;
38 private:
39 base::scoped_nsobject<InfoBarContainerView> container_view_;
40 InfoBarContainer::Delegate* delegate_;
42 DISALLOW_COPY_AND_ASSIGN(InfoBarContainerIOS);
45 #endif // IOS_CHROME_BROWSER_INFOBARS_INFOBAR_CONTAINER_IOS_H_