• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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.
4 
5 #ifndef CHROME_BROWSER_UI_COCOA_INFOBARS_INFOBAR_H_
6 #define CHROME_BROWSER_UI_COCOA_INFOBARS_INFOBAR_H_
7 #pragma once
8 
9 #include "base/logging.h"  // for DCHECK
10 
11 @class InfoBarController;
12 
13 // A C++ wrapper around an Objective-C InfoBarController.  This class
14 // exists solely to be the return value for InfoBarDelegate::CreateInfoBar(),
15 // as defined in chrome/browser/tab_contents/confirm_infobar_delegate.h.  This
16 // class would be analogous to the various bridge classes we already
17 // have, but since there is no pre-defined InfoBar interface, it is
18 // easier to simply throw away this object and deal with the
19 // controller directly rather than pass messages through a bridge.
20 //
21 // Callers should delete the returned InfoBar immediately after
22 // calling CreateInfoBar(), as the returned InfoBar* object is not
23 // pointed to by anyone.  Expected usage:
24 //
25 // scoped_ptr<InfoBar> infobar(delegate->CreateInfoBar());
26 // InfoBarController* controller = infobar->controller();
27 // // Do something with the controller, and save a pointer so it can be
28 // // deleted later.  |infobar| will be deleted automatically.
29 
30 class InfoBar {
31  public:
InfoBar(InfoBarController * controller)32   InfoBar(InfoBarController* controller) {
33     DCHECK(controller);
34     controller_ = controller;
35   }
36 
controller()37   InfoBarController* controller() {
38     return controller_;
39   }
40 
41  private:
42   // Pointer to the infobar controller.  Is never null.
43   InfoBarController* controller_;  // weak
44 
45   DISALLOW_COPY_AND_ASSIGN(InfoBar);
46 };
47 
48 #endif  // CHROME_BROWSER_UI_COCOA_INFOBARS_INFOBAR_H_
49