Index: extensions/browser/extension_icon_image.cc |
diff --git a/extensions/browser/extension_icon_image.cc b/extensions/browser/extension_icon_image.cc |
index 5f237fff5cd9d4c8c0c929511c2472f20e786e58..5ebc40017920f6190631bb21baf4fb5030308d28 100644 |
--- a/extensions/browser/extension_icon_image.cc |
+++ b/extensions/browser/extension_icon_image.cc |
@@ -145,6 +145,7 @@ IconImage::IconImage( |
gfx::Size resource_size(resource_size_in_dip, resource_size_in_dip); |
source_ = new Source(this, resource_size); |
image_skia_ = gfx::ImageSkia(source_, resource_size); |
+ image_ = gfx::Image(image_skia_); |
registrar_.Add(this, |
extensions::NOTIFICATION_EXTENSION_REMOVED, |
@@ -226,6 +227,12 @@ void IconImage::OnImageLoaded(float scale, const gfx::Image& image_in) { |
image_skia_.RemoveRepresentation(scale); |
image_skia_.AddRepresentation(rep); |
+ // Update the image to use the updated image skia. |
+ // It's a shame we have to do this because it means that all the other |
+ // representations stored on |image_| will be deleted, but unfortunately |
+ // there's no way to combine the storage of two images. |
+ image_ = gfx::Image(image_skia_); |
+ |
FOR_EACH_OBSERVER(Observer, observers_, OnExtensionIconImageChanged(this)); |
} |