#ifndef CHROME_BROWSER_UI_GTK_INFOBARS_EXTENSION_INFOBAR_GTK_H_
#define CHROME_BROWSER_UI_GTK_INFOBARS_EXTENSION_INFOBAR_GTK_H_
#include "base/compiler_specific.h"
#include "chrome/browser/extensions/extension_infobar_delegate.h"
#include "chrome/browser/ui/gtk/extensions/extension_view_gtk.h"
#include "chrome/browser/ui/gtk/infobars/infobar_gtk.h"
#include "chrome/browser/ui/gtk/menu_gtk.h"
#include "ui/gfx/gtk_util.h"
class ExtensionContextMenuModel;
class ExtensionViewGtk;
class MenuGtk;
class ExtensionInfoBarGtk : public InfoBarGtk, public MenuGtk::Delegate {
 public:
  explicit ExtensionInfoBarGtk(scoped_ptr<ExtensionInfoBarDelegate> delegate);
 private:
  virtual ~ExtensionInfoBarGtk();
  
  virtual void PlatformSpecificSetOwner() OVERRIDE;
  virtual void PlatformSpecificHide(bool animate) OVERRIDE;
  virtual void GetTopColor(InfoBarDelegate::Type type,
                           double* r, double* g, double* b) OVERRIDE;
  virtual void GetBottomColor(InfoBarDelegate::Type type,
                              double* r, double* g, double* b) OVERRIDE;
  
  virtual void StoppedShowing() OVERRIDE;
  void OnImageLoaded(const gfx::Image& image);
  ExtensionInfoBarDelegate* GetDelegate();
  
  
  Browser* GetBrowser();
  
  
  ExtensionContextMenuModel* BuildMenuModel();
  CHROMEGTK_CALLBACK_1(ExtensionInfoBarGtk, void, OnSizeAllocate,
                       GtkAllocation*);
  CHROMEGTK_CALLBACK_1(ExtensionInfoBarGtk, gboolean, OnButtonPress,
                       GdkEventButton*);
  CHROMEGTK_CALLBACK_1(ExtensionInfoBarGtk, gboolean, OnExpose,
                       GdkEventExpose*);
  ExtensionViewGtk* view_;
  
  
  
  GtkWidget* button_;
  
  
  
  GtkWidget* icon_;
  
  
  
  
  GtkWidget* alignment_;
  
  scoped_refptr<ExtensionContextMenuModel> context_menu_model_;
  base::WeakPtrFactory<ExtensionInfoBarGtk> weak_ptr_factory_;
  DISALLOW_COPY_AND_ASSIGN(ExtensionInfoBarGtk);
};
#endif