Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Side by Side Diff: chrome/browser/ui/gtk/infobars/extension_infobar_gtk.h

Issue 22694006: Infobar system refactor. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_UI_GTK_INFOBARS_EXTENSION_INFOBAR_GTK_H_ 5 #ifndef CHROME_BROWSER_UI_GTK_INFOBARS_EXTENSION_INFOBAR_GTK_H_
6 #define CHROME_BROWSER_UI_GTK_INFOBARS_EXTENSION_INFOBAR_GTK_H_ 6 #define CHROME_BROWSER_UI_GTK_INFOBARS_EXTENSION_INFOBAR_GTK_H_
7 7
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "chrome/browser/extensions/extension_infobar_delegate.h" 9 #include "chrome/browser/extensions/extension_infobar_delegate.h"
10 #include "chrome/browser/ui/gtk/extensions/extension_view_gtk.h" 10 #include "chrome/browser/ui/gtk/extensions/extension_view_gtk.h"
11 #include "chrome/browser/ui/gtk/infobars/infobar_gtk.h" 11 #include "chrome/browser/ui/gtk/infobars/infobar_gtk.h"
12 #include "chrome/browser/ui/gtk/menu_gtk.h" 12 #include "chrome/browser/ui/gtk/menu_gtk.h"
13 #include "ui/gfx/gtk_util.h" 13 #include "ui/gfx/gtk_util.h"
14 14
15 class ExtensionContextMenuModel; 15 class ExtensionContextMenuModel;
16 class ExtensionViewGtk; 16 class ExtensionViewGtk;
17 class MenuGtk; 17 class MenuGtk;
18 18
19 class ExtensionInfoBarGtk : public InfoBarGtk, 19 class ExtensionInfoBarGtk : public InfoBarGtk, public MenuGtk::Delegate {
20 public MenuGtk::Delegate,
21 public ExtensionInfoBarDelegate::DelegateObserver {
22 public: 20 public:
23 ExtensionInfoBarGtk(InfoBarService* owner, 21 explicit ExtensionInfoBarGtk(scoped_ptr<ExtensionInfoBarDelegate> delegate);
24 ExtensionInfoBarDelegate* delegate);
25 22
26 private: 23 private:
27 virtual ~ExtensionInfoBarGtk(); 24 virtual ~ExtensionInfoBarGtk();
28 25
29 // InfoBarGtk: 26 // InfoBarGtk:
27 virtual void PlatformSpecificSetOwner() OVERRIDE;
30 virtual void PlatformSpecificHide(bool animate) OVERRIDE; 28 virtual void PlatformSpecificHide(bool animate) OVERRIDE;
31 virtual void GetTopColor(InfoBarDelegate::Type type, 29 virtual void GetTopColor(InfoBarDelegate::Type type,
32 double* r, double* g, double* b) OVERRIDE; 30 double* r, double* g, double* b) OVERRIDE;
33 virtual void GetBottomColor(InfoBarDelegate::Type type, 31 virtual void GetBottomColor(InfoBarDelegate::Type type,
34 double* r, double* g, double* b) OVERRIDE; 32 double* r, double* g, double* b) OVERRIDE;
35 virtual void InitWidgets() OVERRIDE;
36 33
37 // MenuGtk::Delegate: 34 // MenuGtk::Delegate:
38 virtual void StoppedShowing() OVERRIDE; 35 virtual void StoppedShowing() OVERRIDE;
39 36
40 // ExtensionInfoBarDelegate::DelegateObserver:
41 virtual void OnDelegateDeleted() OVERRIDE;
42
43 void OnImageLoaded(const gfx::Image& image); 37 void OnImageLoaded(const gfx::Image& image);
44 38
45 ExtensionInfoBarDelegate* GetDelegate(); 39 ExtensionInfoBarDelegate* GetDelegate();
46 40
47 // Looks at the window the infobar is in and gets the browser. Can return 41 // Looks at the window the infobar is in and gets the browser. Can return
48 // NULL if we aren't attached. 42 // NULL if we aren't attached.
49 Browser* GetBrowser(); 43 Browser* GetBrowser();
50 44
51 // Returns the context menu model for this extension. Can be NULL if 45 // Returns the context menu model for this extension. Can be NULL if
52 // extension context menus are disabled. 46 // extension context menus are disabled.
53 ExtensionContextMenuModel* BuildMenuModel(); 47 ExtensionContextMenuModel* BuildMenuModel();
54 48
55 CHROMEGTK_CALLBACK_1(ExtensionInfoBarGtk, void, OnSizeAllocate, 49 CHROMEGTK_CALLBACK_1(ExtensionInfoBarGtk, void, OnSizeAllocate,
56 GtkAllocation*); 50 GtkAllocation*);
57 51
58 CHROMEGTK_CALLBACK_1(ExtensionInfoBarGtk, gboolean, OnButtonPress, 52 CHROMEGTK_CALLBACK_1(ExtensionInfoBarGtk, gboolean, OnButtonPress,
59 GdkEventButton*); 53 GdkEventButton*);
60 54
61 CHROMEGTK_CALLBACK_1(ExtensionInfoBarGtk, gboolean, OnExpose, 55 CHROMEGTK_CALLBACK_1(ExtensionInfoBarGtk, gboolean, OnExpose,
62 GdkEventExpose*); 56 GdkEventExpose*);
63 57
64 // TODO(pkasting): This shadows InfoBarView::delegate_. Get rid of this once
65 // InfoBars own their delegates (and thus we don't need the DelegateObserver
66 // functionality). For now, almost everyone should use GetDelegate() instead.
67 InfoBarDelegate* delegate_;
68
69 ExtensionViewGtk* view_; 58 ExtensionViewGtk* view_;
70 59
71 // The button that activates the extension popup menu. Non-NULL if the 60 // The button that activates the extension popup menu. Non-NULL if the
72 // extension shows configure context menus and a dropdown menu should be used 61 // extension shows configure context menus and a dropdown menu should be used
73 // in place of the icon. If set, parents |icon_|. 62 // in place of the icon. If set, parents |icon_|.
74 GtkWidget* button_; 63 GtkWidget* button_;
75 64
76 // The GtkImage that shows the extension icon. If a dropdown menu should be 65 // The GtkImage that shows the extension icon. If a dropdown menu should be
77 // used, it's put inside |button_|, otherwise it's put directly in the hbox 66 // used, it's put inside |button_|, otherwise it's put directly in the hbox
78 // containing the infobar element. Composed in OnImageLoaded(). 67 // containing the infobar element. Composed in OnImageLoaded().
79 GtkWidget* icon_; 68 GtkWidget* icon_;
80 69
81 // An alignment with one pixel of bottom padding. This is set so the |view_| 70 // An alignment with one pixel of bottom padding. This is set so the |view_|
82 // doesn't overlap the bottom separator. This also makes it more convenient 71 // doesn't overlap the bottom separator. This also makes it more convenient
83 // to reattach the view since the alignment_ will have the |hbox_| packing 72 // to reattach the view since the alignment_ will have the |hbox_| packing
84 // child properties. Reparenting becomes easier too. 73 // child properties. Reparenting becomes easier too.
85 GtkWidget* alignment_; 74 GtkWidget* alignment_;
86 75
87 // The model for the current menu displayed. 76 // The model for the current menu displayed.
88 scoped_refptr<ExtensionContextMenuModel> context_menu_model_; 77 scoped_refptr<ExtensionContextMenuModel> context_menu_model_;
89 78
90 base::WeakPtrFactory<ExtensionInfoBarGtk> weak_ptr_factory_; 79 base::WeakPtrFactory<ExtensionInfoBarGtk> weak_ptr_factory_;
91 80
92 DISALLOW_COPY_AND_ASSIGN(ExtensionInfoBarGtk); 81 DISALLOW_COPY_AND_ASSIGN(ExtensionInfoBarGtk);
93 }; 82 };
94 83
95 #endif // CHROME_BROWSER_UI_GTK_INFOBARS_EXTENSION_INFOBAR_GTK_H_ 84 #endif // CHROME_BROWSER_UI_GTK_INFOBARS_EXTENSION_INFOBAR_GTK_H_
OLDNEW
« no previous file with comments | « chrome/browser/ui/gtk/infobars/confirm_infobar_gtk.cc ('k') | chrome/browser/ui/gtk/infobars/extension_infobar_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698