From fe117bb2d7fe3e5cbf880a7b8cda6d66a716b4e9 Mon Sep 17 00:00:00 2001 From: "bartfab@chromium.org" Date: Fri, 6 Jun 2014 01:14:51 +0000 Subject: [PATCH] Reset avatar image when the avatar policy becomes unset When the avatar policy is cleared, the user can pick an avatar image again. Until the user does this, Chrome has two options: 1) keep using the image that had most recently been set through policy 2) revert to a default image Chrome's current behavior is (1). This CL changes it to (2), which may be easier to understand for users and is consistent with the behavior of the wallpaper policy. BUG=380422 TEST=Updated browser test Review URL: https://codereview.chromium.org/315213002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@275289 0039d316-1c4b-4281-b951-d872f2087c98 --- .../users/avatar/user_image_manager_browsertest.cc | 37 ++++++++++------------ .../login/users/avatar/user_image_manager_impl.cc | 1 + 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/chrome/browser/chromeos/login/users/avatar/user_image_manager_browsertest.cc b/chrome/browser/chromeos/login/users/avatar/user_image_manager_browsertest.cc index b9776eb6d506..f8b0849caf75 100644 --- a/chrome/browser/chromeos/login/users/avatar/user_image_manager_browsertest.cc +++ b/chrome/browser/chromeos/login/users/avatar/user_image_manager_browsertest.cc @@ -695,8 +695,8 @@ IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, SetAndClear) { EXPECT_EQ(policy_image_->width(), saved_image->width()); EXPECT_EQ(policy_image_->height(), saved_image->height()); - // Clear policy. Verify that the policy-provided user image remains set as no - // different user image has been chosen yet. + // Clear policy. Verify that the user image switches to a random default + // image. user_policy_.payload().Clear(); user_policy_.Build(); fake_session_manager_client_->set_user_policy(kTestUser1, @@ -708,33 +708,28 @@ IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, SetAndClear) { store->RemoveObserver(this); base::RunLoop().RunUntilIdle(); - EXPECT_FALSE(user->HasDefaultImage()); - EXPECT_EQ(User::kExternalImageIndex, user->image_index()); - EXPECT_TRUE(test::AreImagesEqual(*policy_image_, user->GetImage())); - ExpectNewUserImageInfo(kTestUser1, - User::kExternalImageIndex, - GetUserImagePath(kTestUser1, "jpg")); - - saved_image = test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); - ASSERT_TRUE(saved_image); - - // Check image dimensions. Images can't be compared since JPEG is lossy. - EXPECT_EQ(policy_image_->width(), saved_image->width()); - EXPECT_EQ(policy_image_->height(), saved_image->height()); + const int default_image_index = user->image_index(); + EXPECT_TRUE(user->HasDefaultImage()); + ASSERT_LE(kFirstDefaultImageIndex, default_image_index); + ASSERT_GT(kFirstDefaultImageIndex + kDefaultImagesCount, default_image_index); + const gfx::ImageSkia& default_image = GetDefaultImage(default_image_index); + EXPECT_TRUE(test::AreImagesEqual(default_image, user->GetImage())); + ExpectNewUserImageInfo(kTestUser1, default_image_index, base::FilePath()); // Choose a different user image. Verify that the chosen user image is set and // persisted. - const gfx::ImageSkia& default_image = - GetDefaultImage(kFirstDefaultImageIndex); + const int user_image_index = kFirstDefaultImageIndex + + (default_image_index - kFirstDefaultImageIndex + 1) % kDefaultImagesCount; + const gfx::ImageSkia& user_image = GetDefaultImage(user_image_index); UserImageManager* user_image_manager = UserManager::Get()->GetUserImageManager(kTestUser1); - user_image_manager->SaveUserDefaultImageIndex(kFirstDefaultImageIndex); + user_image_manager->SaveUserDefaultImageIndex(user_image_index); EXPECT_TRUE(user->HasDefaultImage()); - EXPECT_EQ(kFirstDefaultImageIndex, user->image_index()); - EXPECT_TRUE(test::AreImagesEqual(default_image, user->GetImage())); - ExpectNewUserImageInfo(kTestUser1, kFirstDefaultImageIndex, base::FilePath()); + EXPECT_EQ(user_image_index, user->image_index()); + EXPECT_TRUE(test::AreImagesEqual(user_image, user->GetImage())); + ExpectNewUserImageInfo(kTestUser1, user_image_index, base::FilePath()); } IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, PRE_PolicyOverridesUser) { diff --git a/chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.cc b/chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.cc index 167d09c487ca..b8e9e9fda142 100644 --- a/chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.cc +++ b/chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.cc @@ -696,6 +696,7 @@ void UserImageManagerImpl::OnExternalDataSet(const std::string& policy) { void UserImageManagerImpl::OnExternalDataCleared(const std::string& policy) { DCHECK_EQ(policy::key::kUserAvatarImage, policy); has_managed_image_ = false; + SetInitialUserImage(); TryToCreateImageSyncObserver(); } -- 2.11.4.GIT