1// Copyright 2013 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_COCOA_H_ 6#define CHROME_BROWSER_UI_COCOA_INFOBARS_INFOBAR_COCOA_H_ 7 8#include "base/mac/scoped_nsobject.h" 9#include "base/memory/weak_ptr.h" 10#include "components/infobars/core/infobar.h" 11 12@class InfoBarController; 13 14// The cocoa specific implementation of InfoBar. The real info bar logic is 15// actually in InfoBarController. 16class InfoBarCocoa : public infobars::InfoBar { 17 public: 18 explicit InfoBarCocoa(scoped_ptr<infobars::InfoBarDelegate> delegate); 19 20 virtual ~InfoBarCocoa(); 21 22 InfoBarController* controller() const { return controller_; } 23 24 void set_controller(InfoBarController* controller) { 25 controller_.reset([controller retain]); 26 } 27 28 // These functions allow access to protected InfoBar functions. 29 infobars::InfoBarManager* OwnerCocoa(); 30 31 base::WeakPtr<InfoBarCocoa> GetWeakPtr(); 32 33 private: 34 // The Objective-C class that contains most of the info bar logic. 35 base::scoped_nsobject<InfoBarController> controller_; 36 37 // Used to vend the link back to this for |controller_|. 38 base::WeakPtrFactory<InfoBarCocoa> weak_ptr_factory_; 39 40 DISALLOW_COPY_AND_ASSIGN(InfoBarCocoa); 41}; 42 43#endif // CHROME_BROWSER_UI_COCOA_INFOBARS_INFOBAR_COCOA_H_ 44