Chromium Code Reviews| Index: chrome/browser/ui/gtk/infobars/extension_infobar_gtk.h |
| diff --git a/chrome/browser/ui/gtk/infobars/extension_infobar_gtk.h b/chrome/browser/ui/gtk/infobars/extension_infobar_gtk.h |
| index 311f4caf9d7e183b7815d50664166619bfcb9493..3e088871374a57b339e14ce68676648b4ee63e4b 100644 |
| --- a/chrome/browser/ui/gtk/infobars/extension_infobar_gtk.h |
| +++ b/chrome/browser/ui/gtk/infobars/extension_infobar_gtk.h |
| @@ -10,36 +10,84 @@ |
| #include "chrome/browser/extensions/image_loading_tracker.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/base/gtk/gtk_signal_registrar.h" |
| #include "ui/gfx/gtk_util.h" |
| +class ExtensionContextMenuModel; |
| class ExtensionInfobarDelegate; |
| class ExtensionResource; |
| class ExtensionViewGtk; |
| +class MenuGtk; |
| class ExtensionInfoBarGtk : public InfoBarGtk, |
| - public ImageLoadingTracker::Observer { |
| + public ImageLoadingTracker::Observer, |
| + public MenuGtk::Delegate { |
| public: |
| ExtensionInfoBarGtk(TabContentsWrapper* owner, |
| ExtensionInfoBarDelegate* delegate); |
| virtual ~ExtensionInfoBarGtk(); |
| + // Overridden from InfoBar (through InfoBarGtk): |
| + virtual void PlatformSpecificHide(bool animate); |
| + |
| + // Overridden from InfoBarGtk: |
| + virtual void GetTopColor(InfoBarDelegate::Type type, |
| + double* r, double* g, double *b); |
| + virtual void GetBottomColor(InfoBarDelegate::Type type, |
| + double* r, double* g, double *b); |
| + |
| // Overridden from ImageLoadingTracker::Observer: |
| virtual void OnImageLoaded( |
| SkBitmap* image, const ExtensionResource& resource, int index); |
| + // Overridden from MenuGtk::Delegate: |
| + virtual void StoppedShowing(); |
| + |
| private: |
| // Build the widgets of the Infobar. |
| void BuildWidgets(); |
| + // Looks at the window the infobar is in and gets the browser. Can return |
| + // NULL if we aren't attached. |
| + Browser* GetBrowser(); |
| + |
| + // Returns the context menu for this extension. Can be NULL if extension |
| + // context menus are disabled. |
| + MenuGtk* BuildContextMenu(); |
| + |
| CHROMEGTK_CALLBACK_1(ExtensionInfoBarGtk, void, OnSizeAllocate, |
| GtkAllocation*); |
| + CHROMEGTK_CALLBACK_1(ExtensionInfoBarGtk, gboolean, OnButtonPress, |
| + GdkEventButton*); |
| + |
| ImageLoadingTracker tracker_; |
| ExtensionInfoBarDelegate* delegate_; |
| ExtensionViewGtk* view_; |
| + // The button that activates the extension popup menu. Parent of |icon_|. |
| + GtkWidget* button_; |
| + |
| + // The GtkImage that is inside of |button_|, composed in OnImageLoaded(). |
| + GtkWidget* icon_; |
| + |
| + // An alignment with one pixel of bottom padding. This is set so the |view_| |
| + // doesn't overlap the bottom separator. This also makes it more convenient |
| + // to reattach the view since the alignment_ will have the |hbox_| packing |
| + // child properties. Reparenting becomes easier too. |
| + GtkWidget* alignment_; |
| + |
| + // We connect to signals on a gtk object that we only hold a weak reference |
| + // to which outlives us. |
| + ui::GtkSignalRegistrar signals_; |
| + |
| + // The context menu view and model for this extension action. |
|
Evan Stade
2011/08/31 20:00:12
I don't think it's technically a context menu unle
|
| + scoped_ptr<MenuGtk> context_menu_; |
| + scoped_refptr<ExtensionContextMenuModel> context_menu_model_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(ExtensionInfoBarGtk); |
| }; |