1 // Copyright (c) 2012 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_EXTENSIONS_EXTENSION_VIEW_GTK_H_ 6 #define CHROME_BROWSER_UI_GTK_EXTENSIONS_EXTENSION_VIEW_GTK_H_ 7 8 #include "base/basictypes.h" 9 #include "third_party/skia/include/core/SkBitmap.h" 10 #include "ui/gfx/native_widget_types.h" 11 #include "ui/gfx/size.h" 12 13 class Browser; 14 class SkBitmap; 15 16 namespace content { 17 class RenderViewHost; 18 } 19 20 namespace extensions { 21 class ExtensionHost; 22 } 23 24 class ExtensionViewGtk { 25 public: 26 ExtensionViewGtk(extensions::ExtensionHost* extension_host, Browser* browser); 27 28 class Container { 29 public: 30 virtual ~Container() {} 31 virtual void OnExtensionSizeChanged(ExtensionViewGtk* view, 32 const gfx::Size& new_size) {} 33 }; 34 35 void Init(); 36 37 gfx::NativeView native_view(); 38 Browser* browser() const { return browser_; } 39 40 void SetBackground(const SkBitmap& background); 41 42 // Sets the container for this view. 43 void SetContainer(Container* container) { container_ = container; } 44 45 // Method for the ExtensionHost to notify us about the correct size for 46 // extension contents. 47 void ResizeDueToAutoResize(const gfx::Size& new_size); 48 49 // Method for the ExtensionHost to notify us when the RenderViewHost has a 50 // connection. 51 void RenderViewCreated(); 52 53 content::RenderViewHost* render_view_host() const; 54 55 private: 56 void CreateWidgetHostView(); 57 58 Browser* browser_; 59 60 extensions::ExtensionHost* extension_host_; 61 62 // The background the view should have once it is initialized. This is set 63 // when the view has a custom background, but hasn't been initialized yet. 64 SkBitmap pending_background_; 65 66 // This view's container. 67 Container* container_; 68 69 DISALLOW_COPY_AND_ASSIGN(ExtensionViewGtk); 70 }; 71 72 #endif // CHROME_BROWSER_UI_GTK_EXTENSIONS_EXTENSION_VIEW_GTK_H_ 73