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 30class 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