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 "chrome/browser/infobars/infobar.h" 11 12 @class InfoBarController; 13 14 // The cocoa specific implementation of InfoBar. The real info bar logic is 15 // actually in InfoBarController. 16 class InfoBarCocoa : public InfoBar { 17 public: 18 explicit InfoBarCocoa(scoped_ptr<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 InfoBarService* 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