Skip to content

Commit

Permalink
Avatars: remove references to local avatar assets
Browse files Browse the repository at this point in the history
Since the AvatarsCloudMigration feature has fully launched, remove
the deprecated references to local default avatar assets.

Tests: existing browsertests
Bug: b/244369996
Change-Id: I6997b410220619aa0f6bb1828390bc4e3fb4a277
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4193272
Reviewed-by: Xiyuan Xia <xiyuan@chromium.org>
Commit-Queue: Angela Xiao <angelaxiao@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1098128}
  • Loading branch information
Angela Xiao authored and Chromium LUCI CQ committed Jan 27, 2023
1 parent e60c666 commit 1c36cfa
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 99 deletions.
Expand Up @@ -339,8 +339,7 @@ class UserImageManagerTest : public UserImageManagerTestBase {
IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveAndLoadUserImage) {
// Setup a user with JPEG image.
run_loop_ = std::make_unique<base::RunLoop>();
const gfx::ImageSkia& image = default_user_image::GetDefaultImageDeprecated(
default_user_image::kFirstDefaultImageIndex);
const gfx::ImageSkia& image = default_user_image::GetStubDefaultImage();
UserImageManager* user_image_manager =
ChromeUserManager::Get()->GetUserImageManager(test_account_id1_);
user_image_manager->SaveUserImage(user_manager::UserImage::CreateAndEncode(
Expand All @@ -358,9 +357,7 @@ IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveAndLoadUserImage) {
if (user->image_index() == user_manager::User::USER_IMAGE_INVALID)
UserImageChangeWaiter().Wait();
// Check image dimensions. Images can't be compared since JPEG is lossy.
const gfx::ImageSkia& saved_image =
default_user_image::GetDefaultImageDeprecated(
default_user_image::kFirstDefaultImageIndex);
const gfx::ImageSkia& saved_image = default_user_image::GetStubDefaultImage();
EXPECT_EQ(saved_image.width(), user->GetImage().width());
EXPECT_EQ(saved_image.height(), user->GetImage().height());
}
Expand Down
105 changes: 42 additions & 63 deletions chrome/browser/ash/login/users/avatar/user_image_manager_impl.cc
Expand Up @@ -9,7 +9,6 @@
#include <memory>
#include <utility>

#include "ash/constants/ash_features.h"
#include "ash/public/cpp/image_downloader.h"
#include "ash/webui/personalization_app/mojom/personalization_app.mojom.h"
#include "base/check.h"
Expand Down Expand Up @@ -268,45 +267,34 @@ void UserImageManagerImpl::Job::LoadImage(base::FilePath image_path,

if (default_user_image::IsValidIndex(image_index_)) {
// Load one of the default images. This happens synchronously.
if (ash::features::IsAvatarsCloudMigrationEnabled()) {
if (const base::Value::Dict* image_properties =
parent_->GetImageProperties()) {
image_cache_updated_ =
image_properties->FindBool(kImageCacheUpdated).value_or(false);
}
// Load default image from local cached version if available,
// otherwise download from gstatic resources if possible.
if (image_cache_updated_ && !image_path_.empty() &&
base::PathExists(image_path_) &&
!base::DirectoryExists(image_path_)) {
// Will refactor to remove this redundant call after the feature flag
// IsAvatarsCloudMigrationEnabled is no longer needed.
user_image_loader::StartWithFilePathAnimated(
parent_->background_task_runner_, image_path_,
base::BindOnce(&Job::OnLoadImageDone, weak_factory_.GetWeakPtr(),
false));
} else {
if (g_skip_default_user_image_download) {
auto user_image = std::make_unique<user_manager::UserImage>(
*ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
IDR_LOGIN_DEFAULT_USER));
UpdateUser(std::move(user_image));
UpdateLocalState();
NotifyJobDone();
return;
}
// Fetch the default image from cloud before caching it.
image_url_ = default_user_image::GetDefaultImageUrl(image_index_);
user_image_loader::StartWithGURLAnimated(
image_url_, base::BindOnce(&Job::OnLoadImageDone,
weak_factory_.GetWeakPtr(), true));
}
if (const base::Value::Dict* image_properties =
parent_->GetImageProperties()) {
image_cache_updated_ =
image_properties->FindBool(kImageCacheUpdated).value_or(false);
}
// Load default image from local cached version if available,
// otherwise download from gstatic resources if possible.
if (image_cache_updated_ && !image_path_.empty() &&
base::PathExists(image_path_) && !base::DirectoryExists(image_path_)) {
user_image_loader::StartWithFilePathAnimated(
parent_->background_task_runner_, image_path_,
base::BindOnce(&Job::OnLoadImageDone, weak_factory_.GetWeakPtr(),
false));
} else {
std::unique_ptr<user_manager::UserImage> user_image(
new user_manager::UserImage(
default_user_image::GetDefaultImageDeprecated(image_index_)));
UpdateUser(std::move(user_image));
NotifyJobDone();
if (g_skip_default_user_image_download) {
auto user_image = std::make_unique<user_manager::UserImage>(
*ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
IDR_LOGIN_DEFAULT_USER));
UpdateUser(std::move(user_image));
UpdateLocalState();
NotifyJobDone();
return;
}
// Fetch the default image from cloud before caching it.
image_url_ = default_user_image::GetDefaultImageUrl(image_index_);
user_image_loader::StartWithGURLAnimated(
image_url_, base::BindOnce(&Job::OnLoadImageDone,
weak_factory_.GetWeakPtr(), true));
}
} else if (image_index_ == user_manager::User::USER_IMAGE_EXTERNAL ||
image_index_ == user_manager::User::USER_IMAGE_PROFILE) {
Expand Down Expand Up @@ -334,35 +322,26 @@ void UserImageManagerImpl::Job::SetToDefaultImage(int default_image_index) {
DCHECK(default_user_image::IsValidIndex(default_image_index));

image_index_ = default_image_index;
if (ash::features::IsAvatarsCloudMigrationEnabled()) {
// Fetch the default image from cloud before caching it.
image_url_ = default_user_image::GetDefaultImageUrl(image_index_);

// Set user image to a temp stub image while fetching the default image from
// the cloud.
auto user_image = std::make_unique<user_manager::UserImage>(
*ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
IDR_LOGIN_DEFAULT_USER));
UpdateUser(std::move(user_image));
UpdateLocalState();

if (g_skip_default_user_image_download) {
NotifyJobDone();
return;
}
// Fetch the default image from cloud before caching it.
image_url_ = default_user_image::GetDefaultImageUrl(image_index_);

user_image_loader::StartWithGURLAnimated(
image_url_, base::BindOnce(&Job::OnLoadImageDone,
weak_factory_.GetWeakPtr(), true));
} else {
std::unique_ptr<user_manager::UserImage> user_image(
new user_manager::UserImage(
default_user_image::GetDefaultImageDeprecated(image_index_)));
// Set user image to a temp stub image while fetching the default image from
// the cloud.
auto user_image = std::make_unique<user_manager::UserImage>(
*ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
IDR_LOGIN_DEFAULT_USER));
UpdateUser(std::move(user_image));
UpdateLocalState();

UpdateUser(std::move(user_image));
UpdateLocalState();
if (g_skip_default_user_image_download) {
NotifyJobDone();
return;
}

user_image_loader::StartWithGURLAnimated(
image_url_,
base::BindOnce(&Job::OnLoadImageDone, weak_factory_.GetWeakPtr(), true));
}

void UserImageManagerImpl::Job::SetToImage(
Expand Down
Expand Up @@ -25,7 +25,6 @@
#include "ui/base/resource/resource_bundle.h"
#include "ui/chromeos/resources/grit/ui_chromeos_resources.h"
#include "ui/chromeos/strings/grit/ui_chromeos_strings.h"
#include "ui/gfx/image/image_skia.h"
#include "url/gurl.h"

namespace ash {
Expand Down Expand Up @@ -288,8 +287,6 @@ const DefaultImageSourceInfoIds kDefaultImageSourceInfoIds[] = {
{IDS_LOGIN_DEFAULT_USER_AUTHOR_33, IDS_LOGIN_DEFAULT_USER_WEBSITE_33},
};

constexpr char kDefaultUrlPrefix[] = "chrome://theme/IDR_LOGIN_DEFAULT_USER_";
constexpr char kZeroDefaultUrl[] = "chrome://theme/IDR_LOGIN_DEFAULT_USER";
constexpr char kGstaticImagePrefix[] =
"https://www.gstatic.com/chromecast/home/chromeos/avatars/";
constexpr char k100PercentPrefix[] = "default_100_percent/";
Expand Down Expand Up @@ -356,34 +353,23 @@ GURL GetDefaultImageUrl(
ui::ResourceScaleFactor scale_factor /*= ui::k200Percent*/) {
DCHECK(index >= 0 && index < kDefaultImagesCount);

if (ash::features::IsAvatarsCloudMigrationEnabled()) {
ui::ResourceScaleFactor adjusted_scale_factor =
GetAdjustedScaleFactorForDefaultImage(index, scale_factor);
auto scale_factor_prefix =
GetUrlPrefixForScaleFactor(adjusted_scale_factor);
ui::ResourceScaleFactor adjusted_scale_factor =
GetAdjustedScaleFactorForDefaultImage(index, scale_factor);
auto scale_factor_prefix = GetUrlPrefixForScaleFactor(adjusted_scale_factor);

return GURL(base::StrCat({kGstaticImagePrefix, scale_factor_prefix,
kDefaultImageInfo[index].path}));
}

if (index == 0)
return GURL(kZeroDefaultUrl);
return GURL(base::StringPrintf("%s%d", kDefaultUrlPrefix, index));
}

// DEPRECATED: after the full migration of the avatar images to cloud,
// this function should be removed since default images will no longer
// be available in device resources.
const gfx::ImageSkia& GetDefaultImageDeprecated(int index) {
DCHECK(index >= 0 && index < kDefaultImagesCount);
return *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
kDefaultImageInfo[index].resource_id);
return GURL(base::StrCat({kGstaticImagePrefix, scale_factor_prefix,
kDefaultImageInfo[index].path}));
}

int GetDefaultImageResourceId(int index) {
return kDefaultImageInfo[index].resource_id;
}

const gfx::ImageSkia& GetStubDefaultImage() {
return *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
IDR_LOGIN_DEFAULT_USER);
}

int GetRandomDefaultImageIndex() {
return kCurrentImageIndexes[base::RandInt(
0, std::size(kCurrentImageIndexes) - 1)];
Expand Down
Expand Up @@ -17,10 +17,6 @@
#include "ui/base/resource/resource_bundle.h"
#include "url/gurl.h"

namespace gfx {
class ImageSkia;
}

namespace ash::default_user_image {

// Enumeration of user image eligibility states.
Expand Down Expand Up @@ -69,12 +65,12 @@ ui::ResourceScaleFactor GetAdjustedScaleFactorForDefaultImage(
GURL GetDefaultImageUrl(int index,
ui::ResourceScaleFactor scale_factor = ui::k200Percent);

// Returns bitmap of default user image with specified index.
const gfx::ImageSkia& GetDefaultImageDeprecated(int index);

// Returns ID of default user image with specified index.
int GetDefaultImageResourceId(int index);

// Returns bitmap of the stub default user image.
const gfx::ImageSkia& GetStubDefaultImage();

// Returns a random default image index.
int GetRandomDefaultImageIndex();

Expand Down

0 comments on commit 1c36cfa

Please sign in to comment.