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 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_UI_GTK_INFOBARS_EXTENSION_INFOBAR_GTK_H_ 6 #define CHROME_BROWSER_UI_GTK_INFOBARS_EXTENSION_INFOBAR_GTK_H_ 7 #pragma once 8 9 #include "chrome/browser/extensions/extension_infobar_delegate.h" 10 #include "chrome/browser/extensions/image_loading_tracker.h" 11 #include "chrome/browser/ui/gtk/extensions/extension_view_gtk.h" 12 #include "chrome/browser/ui/gtk/infobars/infobar_gtk.h" 13 #include "ui/gfx/gtk_util.h" 14 15 class ExtensionInfobarDelegate; 16 class ExtensionResource; 17 class ExtensionViewGtk; 18 19 class ExtensionInfoBarGtk : public InfoBar, 20 public ImageLoadingTracker::Observer, 21 public ExtensionViewGtk::Container { 22 public: 23 explicit ExtensionInfoBarGtk(ExtensionInfoBarDelegate* delegate); 24 virtual ~ExtensionInfoBarGtk(); 25 26 // Overridden from ImageLoadingTracker::Observer: 27 virtual void OnImageLoaded( 28 SkBitmap* image, const ExtensionResource& resource, int index); 29 30 // ExtensionViewGtk::Container implementation 31 virtual void OnExtensionPreferredSizeChanged(ExtensionViewGtk* view, 32 const gfx::Size& new_size); 33 34 private: 35 // Build the widgets of the Infobar. 36 void BuildWidgets(); 37 38 CHROMEGTK_CALLBACK_1(ExtensionInfoBarGtk, void, OnSizeAllocate, 39 GtkAllocation*); 40 41 ImageLoadingTracker tracker_; 42 43 ExtensionInfoBarDelegate* delegate_; 44 45 ExtensionViewGtk* view_; 46 47 DISALLOW_COPY_AND_ASSIGN(ExtensionInfoBarGtk); 48 }; 49 50 #endif // CHROME_BROWSER_UI_GTK_INFOBARS_EXTENSION_INFOBAR_GTK_H_ 51