summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-10 23:01:13 +0000
committerevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-10 23:01:13 +0000
commitfba84a1a4265113096ce904040ce053a794b99c5 (patch)
treed51655af3ea8565b023b998486ff78d39c44e290
parentb1f04cca79abf21ec97b227caf95eff9871a044a (diff)
downloadchromium_src-fba84a1a4265113096ce904040ce053a794b99c5.zip
chromium_src-fba84a1a4265113096ce904040ce053a794b99c5.tar.gz
chromium_src-fba84a1a4265113096ce904040ce053a794b99c5.tar.bz2
extensions/gtk: null-check icon before using it
If we install an extension without an icon, then we shouldn't attempt to create an icon for it in the installed extension popup. BUG=62607 TEST=ExtensionGalleryInstallApiTest.InstallAndUninstall Review URL: http://codereview.chromium.org/4785001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@65723 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/gtk/extension_installed_bubble_gtk.cc50
1 files changed, 26 insertions, 24 deletions
diff --git a/chrome/browser/gtk/extension_installed_bubble_gtk.cc b/chrome/browser/gtk/extension_installed_bubble_gtk.cc
index af9c915..1e3d395 100644
--- a/chrome/browser/gtk/extension_installed_bubble_gtk.cc
+++ b/chrome/browser/gtk/extension_installed_bubble_gtk.cc
@@ -153,34 +153,36 @@ void ExtensionInstalledBubbleGtk::ShowInternal() {
GtkWidget* bubble_content = gtk_hbox_new(FALSE, kHorizontalColumnSpacing);
gtk_container_set_border_width(GTK_CONTAINER(bubble_content), kContentBorder);
- // Scale icon down to 43x43, but allow smaller icons (don't scale up).
- GdkPixbuf* pixbuf = gfx::GdkPixbufFromSkBitmap(&icon_);
- gfx::Size size(icon_.width(), icon_.height());
- if (size.width() > kIconSize || size.height() > kIconSize) {
- if (size.width() > size.height()) {
- size.set_height(size.height() * kIconSize / size.width());
- size.set_width(kIconSize);
- } else {
- size.set_width(size.width() * kIconSize / size.height());
- size.set_height(kIconSize);
+ if (!icon_.isNull()) {
+ // Scale icon down to 43x43, but allow smaller icons (don't scale up).
+ GdkPixbuf* pixbuf = gfx::GdkPixbufFromSkBitmap(&icon_);
+ gfx::Size size(icon_.width(), icon_.height());
+ if (size.width() > kIconSize || size.height() > kIconSize) {
+ if (size.width() > size.height()) {
+ size.set_height(size.height() * kIconSize / size.width());
+ size.set_width(kIconSize);
+ } else {
+ size.set_width(size.width() * kIconSize / size.height());
+ size.set_height(kIconSize);
+ }
+
+ GdkPixbuf* old = pixbuf;
+ pixbuf = gdk_pixbuf_scale_simple(pixbuf, size.width(), size.height(),
+ GDK_INTERP_BILINEAR);
+ g_object_unref(old);
}
- GdkPixbuf* old = pixbuf;
- pixbuf = gdk_pixbuf_scale_simple(pixbuf, size.width(), size.height(),
- GDK_INTERP_BILINEAR);
- g_object_unref(old);
+ // Put Icon in top of the left column.
+ GtkWidget* icon_column = gtk_vbox_new(FALSE, 0);
+ // Use 3 pixel padding to get visual balance with InfoBubble border on the
+ // left.
+ gtk_box_pack_start(GTK_BOX(bubble_content), icon_column, FALSE, FALSE,
+ kIconPadding);
+ GtkWidget* image = gtk_image_new_from_pixbuf(pixbuf);
+ g_object_unref(pixbuf);
+ gtk_box_pack_start(GTK_BOX(icon_column), image, FALSE, FALSE, 0);
}
- // Put Icon in top of the left column.
- GtkWidget* icon_column = gtk_vbox_new(FALSE, 0);
- // Use 3 pixel padding to get visual balance with InfoBubble border on the
- // left.
- gtk_box_pack_start(GTK_BOX(bubble_content), icon_column, FALSE, FALSE,
- kIconPadding);
- GtkWidget* image = gtk_image_new_from_pixbuf(pixbuf);
- g_object_unref(pixbuf);
- gtk_box_pack_start(GTK_BOX(icon_column), image, FALSE, FALSE, 0);
-
// Center text column.
GtkWidget* text_column = gtk_vbox_new(FALSE, kTextColumnVerticalSpacing);
gtk_box_pack_start(GTK_BOX(bubble_content), text_column, FALSE, FALSE, 0);