Chromium Code Reviews| Index: chrome/browser/renderer_context_menu/render_view_context_menu.cc |
| diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc |
| index 7330cf235ae7ca0d0053819d1eb4418270005e12..8e5d135a58b975f429e33c2e863c7ae2eefcc73f 100644 |
| --- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc |
| +++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc |
| @@ -110,9 +110,11 @@ |
| #include "ui/base/clipboard/clipboard.h" |
| #include "ui/base/clipboard/scoped_clipboard_writer.h" |
| #include "ui/base/l10n/l10n_util.h" |
| +#include "ui/gfx/canvas.h" |
| #include "ui/gfx/favicon_size.h" |
| #include "ui/gfx/geometry/point.h" |
| #include "ui/gfx/geometry/size.h" |
| +#include "ui/gfx/path.h" |
| #include "ui/gfx/text_elider.h" |
| #if defined(ENABLE_EXTENSIONS) |
| @@ -388,9 +390,18 @@ bool g_custom_id_ranges_initialized = false; |
| void AddIconToLastMenuItem(gfx::Image icon, ui::SimpleMenuModel* menu) { |
| int width = icon.Width(); |
| int height = icon.Height(); |
| + gfx::Path circular_mask; |
|
Bernhard Bauer
2015/10/27 09:44:14
Add a comment that explains what you do here?
|
| + gfx::Canvas canvas(icon.Size(), 1.0f, true); |
| + circular_mask.addCircle(SkIntToScalar(width) / 2, SkIntToScalar(height) / 2, |
| + SkIntToScalar(std::min(width, height)) / 2); |
| + canvas.ClipPath(circular_mask, true); |
| + canvas.DrawImageInt(*icon.ToImageSkia(), 0, 0); |
| + |
| gfx::CalculateFaviconTargetSize(&width, &height); |
| - menu->SetIcon(menu->GetItemCount() - 1, |
| - profiles::GetSizedAvatarIcon(icon, true, width, height)); |
| + gfx::Image sized_icon = profiles::GetSizedAvatarIcon( |
| + gfx::Image(gfx::ImageSkia(canvas.ExtractImageRep())), true, width, |
| + height); |
| + menu->SetIcon(menu->GetItemCount() - 1, sized_icon); |
| } |
| void OnProfileCreated(chrome::HostDesktopType desktop_type, |