| 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..cfd4fccac9df97302cda847bfd3c46e5df64f8d2 100644
|
| --- a/extensions/browser/extension_icon_image.cc
|
| +++ b/extensions/browser/extension_icon_image.cc
|
| @@ -223,7 +223,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) {
|
| + if (!gfx::ImageSkia::IsSupportedScale(rep.scale()))
|
| + image_skia_.RemoveRepresentation(rep.scale());
|
| + }
|
| +
|
| image_skia_.RemoveRepresentation(scale);
|
| image_skia_.AddRepresentation(rep);
|
|
|
|
|