diff options
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/extensions/extension_host.cc | 2 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_host.h | 8 | ||||
-rw-r--r-- | chrome/browser/gtk/extension_shelf_gtk.cc | 1 | ||||
-rw-r--r-- | chrome/browser/gtk/extension_view_gtk.cc | 31 | ||||
-rw-r--r-- | chrome/browser/gtk/extension_view_gtk.h | 33 |
5 files changed, 73 insertions, 2 deletions
diff --git a/chrome/browser/extensions/extension_host.cc b/chrome/browser/extensions/extension_host.cc index 276a432..78ec493 100644 --- a/chrome/browser/extensions/extension_host.cc +++ b/chrome/browser/extensions/extension_host.cc @@ -110,7 +110,7 @@ void ExtensionHost::CreateView(Browser* browser) { // hierarchy. view_->SetParentOwned(false); #elif defined(OS_LINUX) - // FIXME(phajdan.jr): Add extension view for GTK. + view_.reset(new ExtensionViewGtk(this)); #else // TODO(port) NOTREACHED(); diff --git a/chrome/browser/extensions/extension_host.h b/chrome/browser/extensions/extension_host.h index 66290e3..8961dfe 100644 --- a/chrome/browser/extensions/extension_host.h +++ b/chrome/browser/extensions/extension_host.h @@ -13,6 +13,8 @@ #include "chrome/browser/tab_contents/render_view_host_delegate_helper.h" #if defined(TOOLKIT_VIEWS) #include "chrome/browser/views/extensions/extension_view.h" +#elif defined(OS_LINUX) +#include "chrome/browser/gtk/extension_view_gtk.h" #endif class Browser; @@ -42,6 +44,8 @@ class ExtensionHost : public RenderViewHostDelegate, #if defined(TOOLKIT_VIEWS) void set_view(ExtensionView* view) { view_.reset(view); } ExtensionView* view() const { return view_.get(); } +#elif defined(OS_LINUX) + ExtensionViewGtk* view() const { return view_.get(); } #endif // Create an ExtensionView and tie it to this host and |browser|. @@ -127,9 +131,11 @@ class ExtensionHost : public RenderViewHostDelegate, // The profile that this host is tied to. Profile* profile_; -#if defined(TOOLKIT_VIEWS) // Optional view that shows the rendered content in the UI. +#if defined(TOOLKIT_VIEWS) scoped_ptr<ExtensionView> view_; +#elif defined(OS_LINUX) + scoped_ptr<ExtensionViewGtk> view_; #endif // The host for our HTML content. diff --git a/chrome/browser/gtk/extension_shelf_gtk.cc b/chrome/browser/gtk/extension_shelf_gtk.cc index 9befd7d..5f3a4b9 100644 --- a/chrome/browser/gtk/extension_shelf_gtk.cc +++ b/chrome/browser/gtk/extension_shelf_gtk.cc @@ -24,6 +24,7 @@ class ExtensionShelfGtk::Toolstrip { explicit Toolstrip(ExtensionHost* host) : host_(host), extension_name_(host_->extension()->name()) { + DCHECK(host_->view()); Init(); } diff --git a/chrome/browser/gtk/extension_view_gtk.cc b/chrome/browser/gtk/extension_view_gtk.cc new file mode 100644 index 0000000..fc358cd --- /dev/null +++ b/chrome/browser/gtk/extension_view_gtk.cc @@ -0,0 +1,31 @@ +// Copyright (c) 2009 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/renderer_host/render_view_host.h" +#include "chrome/browser/renderer_host/render_widget_host_view_gtk.h" + +ExtensionViewGtk::ExtensionViewGtk(ExtensionHost* extension_host) + : extension_host_(extension_host), + render_widget_host_view_(NULL) { + 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::CreateWidgetHostView() { + DCHECK(!render_widget_host_view_); + render_widget_host_view_ = new RenderWidgetHostViewGtk(render_view_host()); + render_widget_host_view_->InitAsChild(); + + extension_host_->CreateRenderView(render_widget_host_view_); +} diff --git a/chrome/browser/gtk/extension_view_gtk.h b/chrome/browser/gtk/extension_view_gtk.h new file mode 100644 index 0000000..61e58fd4f --- /dev/null +++ b/chrome/browser/gtk/extension_view_gtk.h @@ -0,0 +1,33 @@ +// Copyright (c) 2009 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. + +#ifndef CHROME_BROWSER_GTK_EXTENSION_VIEW_GTK_H_ +#define CHROME_BROWSER_GTK_EXTENSION_VIEW_GTK_H_ + +#include "base/basictypes.h" +#include "base/gfx/native_widget_types.h" + +class ExtensionHost; +class RenderViewHost; +class RenderWidgetHostViewGtk; + +class ExtensionViewGtk { + public: + explicit ExtensionViewGtk(ExtensionHost* extension_host); + + gfx::NativeView native_view(); + + private: + RenderViewHost* render_view_host() const; + + void CreateWidgetHostView(); + + ExtensionHost* extension_host_; + + RenderWidgetHostViewGtk* render_widget_host_view_; + + DISALLOW_COPY_AND_ASSIGN(ExtensionViewGtk); +}; + +#endif // CHROME_BROWSER_GTK_EXTENSION_VIEW_GTK_H_ |