Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Side by Side Diff: chrome/browser/chromeos/login/users/avatar/user_image_manager_browsertest.cc

Issue 2537713002: Add support for transparent/translucent pixels in the user image (Closed)
Patch Set: rebased Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698