diff options
author | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-10 23:01:13 +0000 |
---|---|---|
committer | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-10 23:01:13 +0000 |
commit | fba84a1a4265113096ce904040ce053a794b99c5 (patch) | |
tree | d51655af3ea8565b023b998486ff78d39c44e290 | |
parent | b1f04cca79abf21ec97b227caf95eff9871a044a (diff) | |
download | chromium_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.cc | 50 |
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); |