Commit 54e977e6 authored by Alex Ilin's avatar Alex Ilin Committed by Commit Bot

[ProfilePicker] Multiply avatar icon sizes by the device scale factor

Avatars displayed in webUI should have their size multiplied by the
device scale factor. Otherwise, the avatars look blurry when Chrome is
running with device scale factor > 1.

Fixed: 1128102
Change-Id: I9a3f5e38b5bf9e8c14889bbef619f2a6eae565b9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2413948
Commit-Queue: Alex Ilin <alexilin@chromium.org>
Reviewed-by: default avatarDavid Roger <droger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#807467}
parent 6ed8f7dc
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
#include "ui/gfx/image/image.h" #include "ui/gfx/image/image.h"
namespace { namespace {
const size_t kAvatarIconSize = 74; const size_t kProfileCardAvatarSize = 74;
const size_t kProfileCreationAvatarSize = 100; const size_t kProfileCreationAvatarSize = 100;
constexpr int kDefaultThemeColorId = -1; constexpr int kDefaultThemeColorId = -1;
...@@ -98,7 +98,8 @@ base::Value GetAutogeneratedProfileThemeInfoValue(int color_id, ...@@ -98,7 +98,8 @@ base::Value GetAutogeneratedProfileThemeInfoValue(int color_id,
base::Optional<SkColor> color, base::Optional<SkColor> color,
SkColor frame_color, SkColor frame_color,
SkColor active_tab_color, SkColor active_tab_color,
SkColor frame_text_color) { SkColor frame_text_color,
int avatar_icon_size) {
base::Value dict(base::Value::Type::DICTIONARY); base::Value dict(base::Value::Type::DICTIONARY);
dict.SetIntKey("colorId", color_id); dict.SetIntKey("colorId", color_id);
if (color.has_value()) if (color.has_value())
...@@ -111,14 +112,13 @@ base::Value GetAutogeneratedProfileThemeInfoValue(int color_id, ...@@ -111,14 +112,13 @@ base::Value GetAutogeneratedProfileThemeInfoValue(int color_id,
color_utils::SkColorToRgbaString(frame_text_color)); color_utils::SkColorToRgbaString(frame_text_color));
gfx::Image icon = profiles::GetPlaceholderAvatarIconWithColors( gfx::Image icon = profiles::GetPlaceholderAvatarIconWithColors(
/*fill_color=*/frame_color, /*fill_color=*/frame_color,
/*stroke_color=*/GetAvatarStrokeColor(frame_color), /*stroke_color=*/GetAvatarStrokeColor(frame_color), avatar_icon_size);
kProfileCreationAvatarSize);
dict.SetStringKey("themeGenericAvatar", dict.SetStringKey("themeGenericAvatar",
webui::GetBitmapDataUrl(icon.AsBitmap())); webui::GetBitmapDataUrl(icon.AsBitmap()));
return dict; return dict;
} }
base::Value CreateDefaultProfileThemeInfo() { base::Value CreateDefaultProfileThemeInfo(int avatar_icon_size) {
bool dark_mode = bool dark_mode =
ui::NativeTheme::GetInstanceForNativeUi()->ShouldUseDarkColors(); ui::NativeTheme::GetInstanceForNativeUi()->ShouldUseDarkColors();
SkColor frame_color = ThemeProperties::GetDefaultColor( SkColor frame_color = ThemeProperties::GetDefaultColor(
...@@ -130,16 +130,19 @@ base::Value CreateDefaultProfileThemeInfo() { ...@@ -130,16 +130,19 @@ base::Value CreateDefaultProfileThemeInfo() {
/*incognito=*/false, dark_mode); /*incognito=*/false, dark_mode);
return GetAutogeneratedProfileThemeInfoValue( return GetAutogeneratedProfileThemeInfoValue(
kDefaultThemeColorId, base::nullopt, frame_color, active_tab_color, kDefaultThemeColorId, base::nullopt, frame_color, active_tab_color,
frame_text_color); frame_text_color, avatar_icon_size);
} }
base::Value CreateAutogeneratedProfileThemeInfo(int color_id, SkColor color) { base::Value CreateAutogeneratedProfileThemeInfo(int color_id,
SkColor color,
int avatar_icon_size) {
auto theme_colors = GetAutogeneratedThemeColors(color); auto theme_colors = GetAutogeneratedThemeColors(color);
SkColor frame_color = theme_colors.frame_color; SkColor frame_color = theme_colors.frame_color;
SkColor active_tab_color = theme_colors.active_tab_color; SkColor active_tab_color = theme_colors.active_tab_color;
SkColor frame_text_color = theme_colors.frame_text_color; SkColor frame_text_color = theme_colors.frame_text_color;
return GetAutogeneratedProfileThemeInfoValue( return GetAutogeneratedProfileThemeInfoValue(
color_id, color, frame_color, active_tab_color, frame_text_color); color_id, color, frame_color, active_tab_color, frame_text_color,
avatar_icon_size);
} }
} // namespace } // namespace
...@@ -275,8 +278,10 @@ void ProfilePickerHandler::HandleGetNewProfileSuggestedThemeInfo( ...@@ -275,8 +278,10 @@ void ProfilePickerHandler::HandleGetNewProfileSuggestedThemeInfo(
CHECK_EQ(1U, args->GetSize()); CHECK_EQ(1U, args->GetSize());
const base::Value& callback_id = args->GetList()[0]; const base::Value& callback_id = args->GetList()[0];
chrome_colors::ColorInfo color_info = GenerateNewProfileColor(); chrome_colors::ColorInfo color_info = GenerateNewProfileColor();
base::Value dict = int avatar_icon_size =
CreateAutogeneratedProfileThemeInfo(color_info.id, color_info.color); kProfileCreationAvatarSize * web_ui()->GetDeviceScaleFactor();
base::Value dict = CreateAutogeneratedProfileThemeInfo(
color_info.id, color_info.color, avatar_icon_size);
ResolveJavascriptCallback(callback_id, std::move(dict)); ResolveJavascriptCallback(callback_id, std::move(dict));
} }
...@@ -288,17 +293,20 @@ void ProfilePickerHandler::HandleGetProfileThemeInfo( ...@@ -288,17 +293,20 @@ void ProfilePickerHandler::HandleGetProfileThemeInfo(
const base::Value& user_theme_choice = args->GetList()[1]; const base::Value& user_theme_choice = args->GetList()[1];
int color_id = user_theme_choice.FindIntKey("colorId").value(); int color_id = user_theme_choice.FindIntKey("colorId").value();
base::Optional<SkColor> color = user_theme_choice.FindDoubleKey("color"); base::Optional<SkColor> color = user_theme_choice.FindDoubleKey("color");
int avatar_icon_size =
kProfileCreationAvatarSize * web_ui()->GetDeviceScaleFactor();
base::Value dict; base::Value dict;
switch (color_id) { switch (color_id) {
case kDefaultThemeColorId: case kDefaultThemeColorId:
dict = CreateDefaultProfileThemeInfo(); dict = CreateDefaultProfileThemeInfo(avatar_icon_size);
break; break;
case kManuallyPickedColorId: case kManuallyPickedColorId:
dict = CreateAutogeneratedProfileThemeInfo(color_id, *color); dict = CreateAutogeneratedProfileThemeInfo(color_id, *color,
avatar_icon_size);
break; break;
default: default:
dict = CreateAutogeneratedProfileThemeInfo( dict = CreateAutogeneratedProfileThemeInfo(
color_id, *GetChromeColorColorById(color_id)); color_id, *GetChromeColorColorById(color_id), avatar_icon_size);
break; break;
} }
ResolveJavascriptCallback(callback_id, std::move(dict)); ResolveJavascriptCallback(callback_id, std::move(dict));
...@@ -514,6 +522,8 @@ base::Value ProfilePickerHandler::GetProfilesList() { ...@@ -514,6 +522,8 @@ base::Value ProfilePickerHandler::GetProfilesList() {
g_browser_process->profile_manager() g_browser_process->profile_manager()
->GetProfileAttributesStorage() ->GetProfileAttributesStorage()
.GetAllProfilesAttributesSortedByName(); .GetAllProfilesAttributesSortedByName();
const int avatar_icon_size =
kProfileCardAvatarSize * web_ui()->GetDeviceScaleFactor();
for (const ProfileAttributesEntry* entry : entries) { for (const ProfileAttributesEntry* entry : entries) {
auto profile_entry = std::make_unique<base::DictionaryValue>(); auto profile_entry = std::make_unique<base::DictionaryValue>();
profile_entry->SetKey("profilePath", profile_entry->SetKey("profilePath",
...@@ -528,8 +538,9 @@ base::Value ProfilePickerHandler::GetProfilesList() { ...@@ -528,8 +538,9 @@ base::Value ProfilePickerHandler::GetProfilesList() {
profile_entry->SetString("userName", entry->GetUserName()); profile_entry->SetString("userName", entry->GetUserName());
profile_entry->SetBoolPath("isManaged", profile_entry->SetBoolPath("isManaged",
IsManaged(entry->GetHostedDomain())); IsManaged(entry->GetHostedDomain()));
gfx::Image icon = profiles::GetSizedAvatarIcon( gfx::Image icon =
entry->GetAvatarIcon(), true, kAvatarIconSize, kAvatarIconSize); profiles::GetSizedAvatarIcon(entry->GetAvatarIcon(avatar_icon_size),
true, avatar_icon_size, avatar_icon_size);
std::string icon_url = webui::GetBitmapDataUrl(icon.AsBitmap()); std::string icon_url = webui::GetBitmapDataUrl(icon.AsBitmap());
profile_entry->SetString("avatarIcon", icon_url); profile_entry->SetString("avatarIcon", icon_url);
profiles_list.Append(std::move(profile_entry)); profiles_list.Append(std::move(profile_entry));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment