Index: chrome/browser/ui/views/profiles/profile_chooser_view.cc |
diff --git a/chrome/browser/ui/views/profiles/profile_chooser_view.cc b/chrome/browser/ui/views/profiles/profile_chooser_view.cc |
index 1949a23511b23508479c2b9198b3b230307147a7..6a4b059a5304ff1a48e1acabff6cff2c092679d6 100644 |
--- a/chrome/browser/ui/views/profiles/profile_chooser_view.cc |
+++ b/chrome/browser/ui/views/profiles/profile_chooser_view.cc |
@@ -46,6 +46,7 @@ |
#include "ui/base/resource/resource_bundle.h" |
#include "ui/compositor/clip_transform_recorder.h" |
#include "ui/gfx/canvas.h" |
+#include "ui/gfx/image/canvas_image_source.h" |
#include "ui/gfx/image/image.h" |
#include "ui/gfx/image/image_skia.h" |
#include "ui/gfx/paint_vector_icon.h" |
@@ -474,6 +475,57 @@ class TitleCard : public views::View { |
DISALLOW_COPY_AND_ASSIGN(TitleCard); |
}; |
+// ProfileBadge -------------------------------------------------------- |
+ |
+const size_t kProfileBadgeSize = 30; |
+const size_t kProfileBadgeWhitePadding = 2; |
+ |
+// Draws a white circle, then a light blue circle, then a dark blue icon. |
+class ProfileBadge : public gfx::CanvasImageSource { |
+ public: |
+ ProfileBadge(gfx::VectorIconId id, size_t icon_size) |
+ : CanvasImageSource(gfx::Size(kProfileBadgeSize, kProfileBadgeSize), |
+ false), |
+ id_(id), |
+ icon_size_(icon_size) {} |
+ |
+ ~ProfileBadge() override {} |
+ |
+ // CanvasImageSource: |
+ void Draw(gfx::Canvas* canvas) override { |
+ const SkISize size = canvas->sk_canvas()->getDeviceSize(); |
+ gfx::Rect bounds(0, 0, size.width(), size.height()); |
+ |
+ SkPaint paint; |
+ paint.setAntiAlias(true); |
+ paint.setColor(SK_ColorWHITE); |
+ canvas->DrawCircle(bounds.CenterPoint(), size.width() / 2, paint); |
+ |
+ paint.setColor(SkColorSetRGB(0xAF, 0xD9, 0xFC)); |
+ canvas->DrawCircle(bounds.CenterPoint(), |
+ size.width() / 2 - kProfileBadgeWhitePadding, paint); |
+ |
+ int offset = (kProfileBadgeSize - icon_size_) / 2; |
+ canvas->Translate(gfx::Vector2d(offset, offset)); |
+ gfx::PaintVectorIcon(canvas, id_, icon_size_, SkColorSetRGB(0, 0x66, 0xff)); |
+ } |
+ |
+ private: |
+ const gfx::VectorIconId id_; |
+ const size_t icon_size_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ProfileBadge); |
+}; |
+ |
+gfx::ImageSkia CreateBadgeForProfile(Profile* profile) { |
+ ProfileBadge* badge = |
+ profile->IsChild() |
+ ? new ProfileBadge(gfx::VectorIconId::ACCOUNT_CHILD_INVERT, 26) |
+ : new ProfileBadge(gfx::VectorIconId::SUPERVISOR_ACCOUNT, 20); |
+ |
+ return gfx::ImageSkia(badge, badge->size()); |
+} |
+ |
// ProfileChooserView --------------------------------------------------------- |
// static |
@@ -1183,10 +1235,7 @@ views::View* ProfileChooserView::CreateCurrentProfileView( |
ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance(); |
if (browser_->profile()->IsSupervised()) { |
views::ImageView* supervised_icon = new views::ImageView(); |
- int image_id = browser_->profile()->IsChild() |
- ? IDR_ICON_PROFILES_MENU_CHILD |
- : IDR_ICON_PROFILES_MENU_LEGACY_SUPERVISED; |
- supervised_icon->SetImage(rb->GetImageSkiaNamed(image_id)); |
+ supervised_icon->SetImage(CreateBadgeForProfile(browser_->profile())); |
gfx::Size preferred_size = supervised_icon->GetPreferredSize(); |
gfx::Rect parent_bounds = current_profile_photo_->bounds(); |
supervised_icon->SetBounds( |