Home | History | Annotate | Download | only in infobars
      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:
     32   InfoBar(InfoBarController* controller) {
     33     DCHECK(controller);
     34     controller_ = controller;
     35   }
     36 
     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