172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#ifndef CHROME_BROWSER_UI_GTK_EXTENSIONS_EXTENSION_VIEW_GTK_H_ 6ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#define CHROME_BROWSER_UI_GTK_EXTENSIONS_EXTENSION_VIEW_GTK_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "third_party/skia/include/core/SkBitmap.h" 1172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/gfx/native_widget_types.h" 1272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/gfx/size.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Browser; 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ExtensionHost; 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass RenderViewHost; 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass RenderWidgetHostViewGtk; 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass SkBitmap; 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ExtensionViewGtk { 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ExtensionViewGtk(ExtensionHost* extension_host, Browser* browser); 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch class Container { 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual ~Container() {} 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void OnExtensionPreferredSizeChanged(ExtensionViewGtk* view, 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const gfx::Size& new_size) {} 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch }; 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void Init(); 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch gfx::NativeView native_view(); 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Browser* browser() const { return browser_; } 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetBackground(const SkBitmap& background); 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Sets the container for this view. 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetContainer(Container* container) { container_ = container; } 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Method for the ExtensionHost to notify us about the correct size for 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // extension contents. 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void UpdatePreferredSize(const gfx::Size& new_size); 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Method for the ExtensionHost to notify us when the RenderViewHost has a 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // connection. 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void RenderViewCreated(); 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch RenderViewHost* render_view_host() const; 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateWidgetHostView(); 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Browser* browser_; 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ExtensionHost* extension_host_; 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch RenderWidgetHostViewGtk* render_widget_host_view_; 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // The background the view should have once it is initialized. This is set 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // when the view has a custom background, but hasn't been initialized yet. 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SkBitmap pending_background_; 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // This view's container. 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch Container* container_; 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(ExtensionViewGtk); 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif // CHROME_BROWSER_UI_GTK_EXTENSIONS_EXTENSION_VIEW_GTK_H_ 71