diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-04 23:24:01 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-04 23:24:01 +0000 |
commit | d5fe92d7cd93f80591ddfe7bb27ca43e6cea2be6 (patch) | |
tree | df7d58f94d563b41b97313081ebeca7fa5f16585 | |
parent | 584adc21c36bac619406fa156afe9f9a2fc9b2c7 (diff) | |
download | chromium_src-d5fe92d7cd93f80591ddfe7bb27ca43e6cea2be6.zip chromium_src-d5fe92d7cd93f80591ddfe7bb27ca43e6cea2be6.tar.gz chromium_src-d5fe92d7cd93f80591ddfe7bb27ca43e6cea2be6.tar.bz2 |
Make extensions in the extension shelf render their content to a visible GTK
widget.
TEST=none
http://crbug.com/16759
Review URL: http://codereview.chromium.org/160610
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@22439 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/extensions/extension_host.cc | 11 | ||||
-rw-r--r-- | chrome/browser/gtk/extension_shelf_gtk.cc | 20 | ||||
-rw-r--r-- | chrome/browser/gtk/extension_view_gtk.cc | 3 | ||||
-rw-r--r-- | chrome/browser/gtk/extension_view_gtk.h | 6 |
4 files changed, 24 insertions, 16 deletions
diff --git a/chrome/browser/extensions/extension_host.cc b/chrome/browser/extensions/extension_host.cc index f393517..17062ce 100644 --- a/chrome/browser/extensions/extension_host.cc +++ b/chrome/browser/extensions/extension_host.cc @@ -219,6 +219,9 @@ void ExtensionHost::DidNavigate(RenderViewHost* render_view_host, } void ExtensionHost::DidStopLoading(RenderViewHost* render_view_host) { + static const StringPiece toolstrip_css( + ResourceBundle::GetSharedInstance().GetRawDataResource( + IDR_EXTENSIONS_TOOLSTRIP_CSS)); #if defined(TOOLKIT_VIEWS) ExtensionView* view = view_.get(); if (view) { @@ -228,9 +231,6 @@ void ExtensionHost::DidStopLoading(RenderViewHost* render_view_host) { // As a toolstrip, inject our toolstrip CSS to make it easier for toolstrips // to blend in with the chrome UI. if (view->is_toolstrip()) { - static const StringPiece toolstrip_css( - ResourceBundle::GetSharedInstance().GetRawDataResource( - IDR_EXTENSIONS_TOOLSTRIP_CSS)); render_view_host->InsertCSSInWebFrame(L"", toolstrip_css.as_string()); } else { // No CSS injecting currently, but call SetDidInsertCSS to tell the view @@ -238,6 +238,11 @@ void ExtensionHost::DidStopLoading(RenderViewHost* render_view_host) { view->SetDidInsertCSS(true); } } +#elif defined(OS_LINUX) + ExtensionViewGtk* view = view_.get(); + if (view && view->is_toolstrip()) { + render_view_host->InsertCSSInWebFrame(L"", toolstrip_css.as_string()); + } #endif did_stop_loading_ = true; diff --git a/chrome/browser/gtk/extension_shelf_gtk.cc b/chrome/browser/gtk/extension_shelf_gtk.cc index c83d182..1262c16 100644 --- a/chrome/browser/gtk/extension_shelf_gtk.cc +++ b/chrome/browser/gtk/extension_shelf_gtk.cc @@ -28,40 +28,36 @@ class ExtensionShelfGtk::Toolstrip { Init(); } - ~Toolstrip() { - label_.Destroy(); - } - void AddToolstripToBox(GtkWidget* box); void RemoveToolstripFromBox(GtkWidget* box); private: void Init(); + gfx::NativeView native_view() { + return host_->view()->native_view(); + } + ExtensionHost* host_; const std::string extension_name_; - // Placeholder label with extension's name. - // TODO(phajdan.jr): replace the label with rendered extension contents. - OwnedWidgetGtk label_; - private: DISALLOW_COPY_AND_ASSIGN(Toolstrip); }; void ExtensionShelfGtk::Toolstrip::AddToolstripToBox(GtkWidget* box) { - gtk_box_pack_start(GTK_BOX(box), label_.get(), FALSE, FALSE, + gtk_box_pack_start(GTK_BOX(box), native_view(), TRUE, TRUE, kToolstripPadding); } void ExtensionShelfGtk::Toolstrip::RemoveToolstripFromBox(GtkWidget* box) { - gtk_container_remove(GTK_CONTAINER(box), label_.get()); + gtk_container_remove(GTK_CONTAINER(box), native_view()); } void ExtensionShelfGtk::Toolstrip::Init() { - label_.Own(gtk_label_new(extension_name_.c_str())); - gtk_widget_show_all(label_.get()); + host_->view()->set_is_toolstrip(true); + gtk_widget_show_all(native_view()); } ExtensionShelfGtk::ExtensionShelfGtk(Profile* profile, Browser* browser) diff --git a/chrome/browser/gtk/extension_view_gtk.cc b/chrome/browser/gtk/extension_view_gtk.cc index fc358cd..5940d0f 100644 --- a/chrome/browser/gtk/extension_view_gtk.cc +++ b/chrome/browser/gtk/extension_view_gtk.cc @@ -9,7 +9,8 @@ #include "chrome/browser/renderer_host/render_widget_host_view_gtk.h" ExtensionViewGtk::ExtensionViewGtk(ExtensionHost* extension_host) - : extension_host_(extension_host), + : is_toolstrip_(true), + extension_host_(extension_host), render_widget_host_view_(NULL) { CreateWidgetHostView(); } diff --git a/chrome/browser/gtk/extension_view_gtk.h b/chrome/browser/gtk/extension_view_gtk.h index 61e58fd4f..b569c03 100644 --- a/chrome/browser/gtk/extension_view_gtk.h +++ b/chrome/browser/gtk/extension_view_gtk.h @@ -18,11 +18,17 @@ class ExtensionViewGtk { gfx::NativeView native_view(); + bool is_toolstrip() const { return is_toolstrip_; } + void set_is_toolstrip(bool is_toolstrip) { is_toolstrip_ = is_toolstrip; } + private: RenderViewHost* render_view_host() const; void CreateWidgetHostView(); + // True if the contents are being displayed inside the extension shelf. + bool is_toolstrip_; + ExtensionHost* extension_host_; RenderWidgetHostViewGtk* render_widget_host_view_; |