summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/gtk/extension_view_gtk.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/gtk/extension_view_gtk.cc')
-rw-r--r--chrome/browser/ui/gtk/extension_view_gtk.cc64
1 files changed, 64 insertions, 0 deletions
diff --git a/chrome/browser/ui/gtk/extension_view_gtk.cc b/chrome/browser/ui/gtk/extension_view_gtk.cc
new file mode 100644
index 0000000..b39b6c6
--- /dev/null
+++ b/chrome/browser/ui/gtk/extension_view_gtk.cc
@@ -0,0 +1,64 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/gtk/extension_view_gtk.h"
+
+#include "chrome/browser/extensions/extension_host.h"
+#include "chrome/browser/gtk/extension_popup_gtk.h"
+#include "chrome/browser/renderer_host/render_view_host.h"
+#include "chrome/browser/renderer_host/render_widget_host_view_gtk.h"
+
+ExtensionViewGtk::ExtensionViewGtk(ExtensionHost* extension_host,
+ Browser* browser)
+ : browser_(browser),
+ extension_host_(extension_host),
+ render_widget_host_view_(NULL),
+ container_(NULL) {
+}
+
+void ExtensionViewGtk::Init() {
+ CreateWidgetHostView();
+}
+
+gfx::NativeView ExtensionViewGtk::native_view() {
+ return render_widget_host_view_->native_view();
+}
+
+RenderViewHost* ExtensionViewGtk::render_view_host() const {
+ return extension_host_->render_view_host();
+}
+
+void ExtensionViewGtk::SetBackground(const SkBitmap& background) {
+ if (render_view_host()->IsRenderViewLive()) {
+ render_widget_host_view_->SetBackground(background);
+ } else {
+ pending_background_ = background;
+ }
+}
+
+void ExtensionViewGtk::UpdatePreferredSize(const gfx::Size& new_size) {
+ if (container_)
+ container_->OnExtensionPreferredSizeChanged(this, new_size);
+}
+
+void ExtensionViewGtk::CreateWidgetHostView() {
+ DCHECK(!render_widget_host_view_);
+ render_widget_host_view_ = new RenderWidgetHostViewGtk(render_view_host());
+ render_widget_host_view_->InitAsChild();
+
+ extension_host_->CreateRenderViewSoon(render_widget_host_view_);
+}
+
+void ExtensionViewGtk::RenderViewCreated() {
+ if (!pending_background_.empty() && render_view_host()->view()) {
+ render_widget_host_view_->SetBackground(pending_background_);
+ pending_background_.reset();
+ }
+
+ // Tell the renderer not to draw scrollbars in popups unless the
+ // popups are at the maximum allowed size.
+ gfx::Size largest_popup_size(ExtensionPopupGtk::kMaxWidth,
+ ExtensionPopupGtk::kMaxHeight);
+ extension_host_->DisableScrollbarsForSmallWindows(largest_popup_size);
+}