Chromium Code Reviews| Index: extensions/browser/extension_icon_image.cc |
| diff --git a/extensions/browser/extension_icon_image.cc b/extensions/browser/extension_icon_image.cc |
| index 5ebc40017920f6190631bb21baf4fb5030308d28..31ddd615c18a9e06fdb5739fc0e915a3e4ac9dd3 100644 |
| --- a/extensions/browser/extension_icon_image.cc |
| +++ b/extensions/browser/extension_icon_image.cc |
| @@ -11,6 +11,7 @@ |
| #include "extensions/browser/image_loader.h" |
| #include "extensions/browser/notification_types.h" |
| #include "extensions/common/extension.h" |
| +#include "ui/base/layout.h" |
| #include "ui/gfx/canvas.h" |
| #include "ui/gfx/geometry/size.h" |
| #include "ui/gfx/geometry/size_conversions.h" |
| @@ -223,7 +224,21 @@ void IconImage::OnImageLoaded(float scale, const gfx::Image& image_in) { |
| DCHECK(!rep.is_null()); |
| DCHECK_EQ(scale, rep.scale()); |
| - // Remove old representation if there is one. |
| + // Remove fractional scale image representations as they may have become |
| + // stale here. These images are generated by ImageSkia on request from |
| + // supported scales like 1x, 2x, etc. |
| + // TODO(oshima) |
| + // A better approach might be to set the |image_| member using the ImageSkia |
| + // copy from the image passed in and set the |image_skia_| member using |
| + // image_.ToImageSkia(). However that does not work correctly as the |
| + // ImageSkia from the image does not contain a source which breaks requests |
| + // for scaled images. |
| + std::vector<gfx::ImageSkiaRep> reps = image_skia_.image_reps(); |
| + for (const auto rep : reps) { |
|
brucedawson
2015/03/26 18:44:37
The declaration of 'rep' should, I believe, be "co
ananta
2015/03/26 18:48:20
Will address these in a followup
Thanks
Ananta
|
| + if (!ui::IsSupportedScale(rep.scale())) |
| + image_skia_.RemoveRepresentation(rep.scale()); |
| + } |
| + |
| image_skia_.RemoveRepresentation(scale); |
| image_skia_.AddRepresentation(rep); |