Index: chrome/browser/infobars/infobar_manager.h |
diff --git a/chrome/browser/infobars/infobar_manager.h b/chrome/browser/infobars/infobar_manager.h |
index 756601080db3c71e34c7f16a61a8cdfaa3dea8c2..14bb33eb13e6f7463ab78935e85d9875399c3a04 100644 |
--- a/chrome/browser/infobars/infobar_manager.h |
+++ b/chrome/browser/infobars/infobar_manager.h |
@@ -31,8 +31,13 @@ class InfoBarManager { |
virtual void OnManagerShuttingDown(InfoBarManager* manager) = 0; |
}; |
- explicit InfoBarManager(content::WebContents* web_contents); |
- ~InfoBarManager(); |
+ InfoBarManager(); |
+ virtual ~InfoBarManager(); |
+ |
+ // Must be called before destruction. |
+ // TODO(droger): Merge this method with the destructor once the virtual calls |
+ // for notifications are removed (see http://crbug.com/354380). |
+ void ShutDown(); |
// Adds the specified |infobar|, which already owns a delegate. |
// |
@@ -42,7 +47,7 @@ class InfoBarManager { |
// immediately without being added. |
// |
// Returns the infobar if it was successfully added. |
- virtual InfoBar* AddInfoBar(scoped_ptr<InfoBar> infobar); |
+ InfoBar* AddInfoBar(scoped_ptr<InfoBar> infobar); |
// Removes the specified |infobar|. This in turn may close immediately or |
// animate closed; at the end the infobar will delete itself. |
@@ -76,20 +81,21 @@ class InfoBarManager { |
// Warning: Does not sanity check |index|. |
InfoBar* infobar_at(size_t index) { return infobars_[index]; } |
- // Retrieve the WebContents for the tab this service is associated with. |
- // Do not add new call sites for this. |
- // TODO(droger): remove this method. See http://crbug.com/354379. |
- content::WebContents* web_contents() { return web_contents_; } |
- |
// Must be called when a navigation happens. |
void OnNavigation(const InfoBarDelegate::NavigationDetails& details); |
- // Called when the associated WebContents is being destroyed. |
- void OnWebContentsDestroyed(); |
- |
void AddObserver(Observer* obs); |
void RemoveObserver(Observer* obs); |
+ protected: |
+ // Notifies the observer in |observer_list_|. |
+ // TODO(droger): Absorb these methods back into their callers once virtual |
+ // overrides are removed (see http://crbug.com/354380). |
+ virtual void NotifyInfoBarAdded(InfoBar* infobar); |
+ virtual void NotifyInfoBarRemoved(InfoBar* infobar, bool animate); |
+ virtual void NotifyInfoBarReplaced(InfoBar* old_infobar, |
+ InfoBar* new_infobar); |
+ |
private: |
// InfoBars associated with this InfoBarManager. We own these pointers. |
// However, this is not a ScopedVector, because we don't delete the infobars |
@@ -103,9 +109,6 @@ class InfoBarManager { |
InfoBars infobars_; |
bool infobars_enabled_; |
- // TODO(droger): remove this field. See http://crbug.com/354379. |
- content::WebContents* web_contents_; |
- |
ObserverList<Observer, true> observer_list_; |
DISALLOW_COPY_AND_ASSIGN(InfoBarManager); |