summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-04 23:24:01 +0000
committerphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-08-04 23:24:01 +0000
commitd5fe92d7cd93f80591ddfe7bb27ca43e6cea2be6 (patch)
treedf7d58f94d563b41b97313081ebeca7fa5f16585
parent584adc21c36bac619406fa156afe9f9a2fc9b2c7 (diff)
downloadchromium_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.cc11
-rw-r--r--chrome/browser/gtk/extension_shelf_gtk.cc20
-rw-r--r--chrome/browser/gtk/extension_view_gtk.cc3
-rw-r--r--chrome/browser/gtk/extension_view_gtk.h6
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_;