| Index: chrome/browser/cocoa/infobar_container_controller.h
|
| ===================================================================
|
| --- chrome/browser/cocoa/infobar_container_controller.h (revision 0)
|
| +++ chrome/browser/cocoa/infobar_container_controller.h (revision 0)
|
| @@ -0,0 +1,80 @@
|
| +// Copyright (c) 2009 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.
|
| +
|
| +#import <Cocoa/Cocoa.h>
|
| +
|
| +#include "base/scoped_nsobject.h"
|
| +#include "base/scoped_ptr.h"
|
| +#include "chrome/common/notification_registrar.h"
|
| +
|
| +@class BrowserWindowController;
|
| +class InfoBarDelegate;
|
| +class InfoBarNotificationObserver;
|
| +class TabContents;
|
| +class TabStripModel;
|
| +class TabStripModelObserverBridge;
|
| +
|
| +// Controller for the infobar container view, which is the superview
|
| +// of all the infobar views. This class owns zero or more
|
| +// InfoBarControllers, which manage the infobar views. This class
|
| +// also receives tab strip model notifications and handles
|
| +// adding/removing infobars when needed.
|
| +@interface InfoBarContainerController : NSViewController {
|
| + @private
|
| + // Needed to send resizeInfoBar: messages when infobars are added or removed.
|
| + BrowserWindowController* browserController_; // weak, owns us.
|
| +
|
| + // The TabContents we are currently showing infobars for.
|
| + TabContents* currentTabContents_; // weak
|
| +
|
| + // Holds the InfoBarControllers currently owned by this container.
|
| + scoped_nsobject<NSMutableArray> infobarControllers_;
|
| +
|
| + // Lets us get TabChanged/TabDetachedAt notifications.
|
| + scoped_ptr<TabStripModelObserverBridge> tabObserver_;
|
| +
|
| + // Lets us registers for INFOBAR_ADDED/INFOBAR_REMOVED
|
| + // notifications. The actual notifications are sent to the
|
| + // InfoBarNotificationObserver object, which proxies them back to us.
|
| + NotificationRegistrar registrar_;
|
| + scoped_ptr<InfoBarNotificationObserver> infoBarObserver_;
|
| +}
|
| +
|
| +- (id)initWithTabStripModel:(TabStripModel*)model
|
| + browserWindowController:(BrowserWindowController*)controller;
|
| +
|
| +// Informs the selected TabContents that the infobars for the given
|
| +// |delegate| need to be removed. Does not remove any infobar views
|
| +// directly, as they will be removed when handling the subsequent
|
| +// INFOBAR_REMOVED notification. Does not notify |delegate| that the
|
| +// infobar was closed.
|
| +- (void)removeDelegate:(InfoBarDelegate*)delegate;
|
| +
|
| +@end
|
| +
|
| +
|
| +@interface InfoBarContainerController (ForTheObserverAndTesting)
|
| +
|
| +// Adds an infobar view for the given delegate. Callers must call
|
| +// positionInfoBarsAndRedraw after calling this method.
|
| +- (void)addInfoBar:(InfoBarDelegate*)delegate;
|
| +
|
| +// Removes all the infobar views for a given delegate. Callers must
|
| +// call positionInfoBarsAndRedraw after calling this method.
|
| +- (void)removeInfoBarsForDelegate:(InfoBarDelegate*)delegate;
|
| +
|
| +// Positions the infobar views in the container view and notifies
|
| +// |browser_controller_| that it needs to resize the container view.
|
| +- (void)positionInfoBarsAndRedraw;
|
| +
|
| +@end
|
| +
|
| +
|
| +@interface InfoBarContainerController (JustForTesting)
|
| +
|
| +// Removes all infobar views. Callers must call
|
| +// positionInfoBarsAndRedraw() after calling this method.
|
| +- (void)removeAllInfoBars;
|
| +
|
| +@end
|
|
|
| Property changes on: chrome/browser/cocoa/infobar_container_controller.h
|
| ___________________________________________________________________
|
| Name: svn:eol-style
|
| + LF
|
|
|
|
|