| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h" | 5 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 | 299 |
| 300 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveAndLoadUserImage) { | 300 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveAndLoadUserImage) { |
| 301 RegisterUser(test_account_id1_.GetUserEmail()); | 301 RegisterUser(test_account_id1_.GetUserEmail()); |
| 302 | 302 |
| 303 // Setup a user with JPEG image. | 303 // Setup a user with JPEG image. |
| 304 run_loop_.reset(new base::RunLoop); | 304 run_loop_.reset(new base::RunLoop); |
| 305 const gfx::ImageSkia& image = default_user_image::GetDefaultImage( | 305 const gfx::ImageSkia& image = default_user_image::GetDefaultImage( |
| 306 default_user_image::kFirstDefaultImageIndex); | 306 default_user_image::kFirstDefaultImageIndex); |
| 307 UserImageManager* user_image_manager = | 307 UserImageManager* user_image_manager = |
| 308 ChromeUserManager::Get()->GetUserImageManager(test_account_id1_); | 308 ChromeUserManager::Get()->GetUserImageManager(test_account_id1_); |
| 309 user_image_manager->SaveUserImage( | 309 user_image_manager->SaveUserImage(user_manager::UserImage::CreateAndEncode( |
| 310 user_manager::UserImage::CreateAndEncode(image)); | 310 image, user_manager::UserImage::FORMAT_JPEG)); |
| 311 run_loop_->Run(); | 311 run_loop_->Run(); |
| 312 } | 312 } |
| 313 | 313 |
| 314 // Ensures that the user image in JPEG format is loaded correctly. | 314 // Ensures that the user image in JPEG format is loaded correctly. |
| 315 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveAndLoadUserImage) { | 315 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveAndLoadUserImage) { |
| 316 user_manager::UserManager::Get()->GetUsers(); // Load users. | 316 user_manager::UserManager::Get()->GetUsers(); // Load users. |
| 317 const user_manager::User* user = | 317 const user_manager::User* user = |
| 318 user_manager::UserManager::Get()->FindUser(test_account_id1_); | 318 user_manager::UserManager::Get()->FindUser(test_account_id1_); |
| 319 ASSERT_TRUE(user); | 319 ASSERT_TRUE(user); |
| 320 // Wait for image load. | 320 // Wait for image load. |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 SkBitmap custom_image_bitmap; | 373 SkBitmap custom_image_bitmap; |
| 374 custom_image_bitmap.allocN32Pixels(10, 10); | 374 custom_image_bitmap.allocN32Pixels(10, 10); |
| 375 custom_image_bitmap.eraseColor(SK_ColorWHITE); | 375 custom_image_bitmap.eraseColor(SK_ColorWHITE); |
| 376 custom_image_bitmap.setImmutable(); | 376 custom_image_bitmap.setImmutable(); |
| 377 const gfx::ImageSkia custom_image = | 377 const gfx::ImageSkia custom_image = |
| 378 gfx::ImageSkia::CreateFrom1xBitmap(custom_image_bitmap); | 378 gfx::ImageSkia::CreateFrom1xBitmap(custom_image_bitmap); |
| 379 | 379 |
| 380 run_loop_.reset(new base::RunLoop); | 380 run_loop_.reset(new base::RunLoop); |
| 381 UserImageManager* user_image_manager = | 381 UserImageManager* user_image_manager = |
| 382 ChromeUserManager::Get()->GetUserImageManager(test_account_id1_); | 382 ChromeUserManager::Get()->GetUserImageManager(test_account_id1_); |
| 383 user_image_manager->SaveUserImage( | 383 user_image_manager->SaveUserImage(user_manager::UserImage::CreateAndEncode( |
| 384 user_manager::UserImage::CreateAndEncode(custom_image)); | 384 custom_image, user_manager::UserImage::FORMAT_JPEG)); |
| 385 run_loop_->Run(); | 385 run_loop_->Run(); |
| 386 | 386 |
| 387 EXPECT_FALSE(user->HasDefaultImage()); | 387 EXPECT_FALSE(user->HasDefaultImage()); |
| 388 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); | 388 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); |
| 389 EXPECT_TRUE(test::AreImagesEqual(custom_image, user->GetImage())); | 389 EXPECT_TRUE(test::AreImagesEqual(custom_image, user->GetImage())); |
| 390 ExpectUserImageInfo(test_account_id1_, | 390 ExpectUserImageInfo(test_account_id1_, |
| 391 user_manager::User::USER_IMAGE_EXTERNAL, | 391 user_manager::User::USER_IMAGE_EXTERNAL, |
| 392 GetUserImagePath(test_account_id1_, "jpg")); | 392 GetUserImagePath(test_account_id1_, "jpg")); |
| 393 | 393 |
| 394 const std::unique_ptr<gfx::ImageSkia> saved_image = | 394 const std::unique_ptr<gfx::ImageSkia> saved_image = |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 430 user_manager::User::USER_IMAGE_EXTERNAL, | 430 user_manager::User::USER_IMAGE_EXTERNAL, |
| 431 GetUserImagePath(test_account_id1_, "jpg")); | 431 GetUserImagePath(test_account_id1_, "jpg")); |
| 432 | 432 |
| 433 const std::unique_ptr<gfx::ImageSkia> saved_image = | 433 const std::unique_ptr<gfx::ImageSkia> saved_image = |
| 434 test::ImageLoader(GetUserImagePath(test_account_id1_, "jpg")).Load(); | 434 test::ImageLoader(GetUserImagePath(test_account_id1_, "jpg")).Load(); |
| 435 ASSERT_TRUE(saved_image); | 435 ASSERT_TRUE(saved_image); |
| 436 | 436 |
| 437 // Check image dimensions. Images can't be compared since JPEG is lossy. | 437 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 438 EXPECT_EQ(custom_image->width(), saved_image->width()); | 438 EXPECT_EQ(custom_image->width(), saved_image->width()); |
| 439 EXPECT_EQ(custom_image->height(), saved_image->height()); | 439 EXPECT_EQ(custom_image->height(), saved_image->height()); |
| 440 |
| 441 // Replace the user image with a PNG file with transparent pixels. |
| 442 const base::FilePath transparent_image_path = |
| 443 test_data_dir_.Append(test::kUserAvatarImage3RelativePath); |
| 444 const std::unique_ptr<gfx::ImageSkia> transparent_image = |
| 445 test::ImageLoader(transparent_image_path).Load(); |
| 446 ASSERT_TRUE(transparent_image); |
| 447 // This image should have transparent pixels (i.e. not opaque). |
| 448 EXPECT_FALSE(SkBitmap::ComputeIsOpaque(*transparent_image->bitmap())); |
| 449 |
| 450 run_loop_.reset(new base::RunLoop); |
| 451 user_image_manager->SaveUserImageFromFile(transparent_image_path); |
| 452 run_loop_->Run(); |
| 453 |
| 454 EXPECT_TRUE(test::AreImagesEqual(*transparent_image, user->GetImage())); |
| 455 ExpectUserImageInfo(test_account_id1_, |
| 456 user_manager::User::USER_IMAGE_EXTERNAL, |
| 457 GetUserImagePath(test_account_id1_, "png")); |
| 458 |
| 459 const std::unique_ptr<gfx::ImageSkia> new_saved_image = |
| 460 test::ImageLoader(GetUserImagePath(test_account_id1_, "png")).Load(); |
| 461 ASSERT_TRUE(new_saved_image); |
| 462 |
| 463 // The saved image should have transparent pixels (i.e. not opaque). |
| 464 EXPECT_FALSE(SkBitmap::ComputeIsOpaque(*new_saved_image->bitmap())); |
| 465 |
| 466 // The old user image file in JPEG should be deleted. Only the PNG version |
| 467 // should stay. |
| 468 EXPECT_FALSE(base::PathExists(GetUserImagePath(test_account_id1_, "jpg"))); |
| 469 EXPECT_TRUE(base::PathExists(GetUserImagePath(test_account_id1_, "png"))); |
| 440 } | 470 } |
| 441 | 471 |
| 442 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, | 472 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, |
| 443 PRE_SaveUserImageFromProfileImage) { | 473 PRE_SaveUserImageFromProfileImage) { |
| 444 RegisterUser(test_account_id1_.GetUserEmail()); | 474 RegisterUser(test_account_id1_.GetUserEmail()); |
| 445 chromeos::StartupUtils::MarkOobeCompleted(); | 475 chromeos::StartupUtils::MarkOobeCompleted(); |
| 446 } | 476 } |
| 447 | 477 |
| 448 // Verifies that SaveUserImageFromProfileImage() correctly downloads, sets and | 478 // Verifies that SaveUserImageFromProfileImage() correctly downloads, sets and |
| 449 // persists the chosen user image. | 479 // persists the chosen user image. |
| (...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 825 saved_image = | 855 saved_image = |
| 826 test::ImageLoader(GetUserImagePath(enterprise_account_id_, "jpg")).Load(); | 856 test::ImageLoader(GetUserImagePath(enterprise_account_id_, "jpg")).Load(); |
| 827 ASSERT_TRUE(saved_image); | 857 ASSERT_TRUE(saved_image); |
| 828 | 858 |
| 829 // Check image dimensions. Images can't be compared since JPEG is lossy. | 859 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 830 EXPECT_EQ(policy_image_->width(), saved_image->width()); | 860 EXPECT_EQ(policy_image_->width(), saved_image->width()); |
| 831 EXPECT_EQ(policy_image_->height(), saved_image->height()); | 861 EXPECT_EQ(policy_image_->height(), saved_image->height()); |
| 832 } | 862 } |
| 833 | 863 |
| 834 } // namespace chromeos | 864 } // namespace chromeos |
| OLD | NEW |