// Copyright (c) 2011 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. #ifndef CHROME_BROWSER_UI_COCOA_INFOBARS_INFOBAR_H_ #define CHROME_BROWSER_UI_COCOA_INFOBARS_INFOBAR_H_ #pragma once #include "base/logging.h" // for DCHECK @class InfoBarController; // A C++ wrapper around an Objective-C InfoBarController. This class // exists solely to be the return value for InfoBarDelegate::CreateInfoBar(), // as defined in chrome/browser/tab_contents/confirm_infobar_delegate.h. This // class would be analogous to the various bridge classes we already // have, but since there is no pre-defined InfoBar interface, it is // easier to simply throw away this object and deal with the // controller directly rather than pass messages through a bridge. // // Callers should delete the returned InfoBar immediately after // calling CreateInfoBar(), as the returned InfoBar* object is not // pointed to by anyone. Expected usage: // // scoped_ptr<InfoBar> infobar(delegate->CreateInfoBar()); // InfoBarController* controller = infobar->controller(); // // Do something with the controller, and save a pointer so it can be // // deleted later. |infobar| will be deleted automatically. class InfoBar { public: InfoBar(InfoBarController* controller) { DCHECK(controller); controller_ = controller; } InfoBarController* controller() { return controller_; } private: // Pointer to the infobar controller. Is never null. InfoBarController* controller_; // weak DISALLOW_COPY_AND_ASSIGN(InfoBar); }; #endif // CHROME_BROWSER_UI_COCOA_INFOBARS_INFOBAR_H_