| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <map> | 5 #include <map> |
| 6 #include <string> | 6 #include <string> |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| 11 #include "base/file_util.h" | 11 #include "base/file_util.h" |
| 12 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
| 13 #include "base/json/json_writer.h" | 13 #include "base/json/json_writer.h" |
| 14 #include "base/memory/linked_ptr.h" | 14 #include "base/memory/linked_ptr.h" |
| 15 #include "base/memory/ref_counted.h" | 15 #include "base/memory/ref_counted.h" |
| 16 #include "base/memory/ref_counted_memory.h" | 16 #include "base/memory/ref_counted_memory.h" |
| 17 #include "base/memory/scoped_ptr.h" | 17 #include "base/memory/scoped_ptr.h" |
| 18 #include "base/message_loop/message_loop_proxy.h" | 18 #include "base/message_loop/message_loop_proxy.h" |
| 19 #include "base/path_service.h" | 19 #include "base/path_service.h" |
| 20 #include "base/prefs/pref_change_registrar.h" | 20 #include "base/prefs/pref_change_registrar.h" |
| 21 #include "base/prefs/pref_service.h" | 21 #include "base/prefs/pref_service.h" |
| 22 #include "base/prefs/scoped_user_pref_update.h" | 22 #include "base/prefs/scoped_user_pref_update.h" |
| 23 #include "base/run_loop.h" | 23 #include "base/run_loop.h" |
| 24 #include "base/time/time.h" | 24 #include "base/time/time.h" |
| 25 #include "base/values.h" | 25 #include "base/values.h" |
| 26 #include "chrome/browser/browser_process.h" | 26 #include "chrome/browser/browser_process.h" |
| 27 #include "chrome/browser/chrome_notification_types.h" | 27 #include "chrome/browser/chrome_notification_types.h" |
| 28 #include "chrome/browser/chromeos/login/default_user_images.h" | 28 #include "chrome/browser/chromeos/login/default_user_images.h" |
| 29 #include "chrome/browser/chromeos/login/login_manager_test.h" | 29 #include "chrome/browser/chromeos/login/login_manager_test_helper.h" |
| 30 #include "chrome/browser/chromeos/login/mock_user_manager.h" | 30 #include "chrome/browser/chromeos/login/mock_user_manager.h" |
| 31 #include "chrome/browser/chromeos/login/startup_utils.h" | 31 #include "chrome/browser/chromeos/login/startup_utils.h" |
| 32 #include "chrome/browser/chromeos/login/user.h" | 32 #include "chrome/browser/chromeos/login/user.h" |
| 33 #include "chrome/browser/chromeos/login/user_image.h" | 33 #include "chrome/browser/chromeos/login/user_image.h" |
| 34 #include "chrome/browser/chromeos/login/user_image_manager.h" | 34 #include "chrome/browser/chromeos/login/user_image_manager.h" |
| 35 #include "chrome/browser/chromeos/login/user_image_manager_impl.h" | 35 #include "chrome/browser/chromeos/login/user_image_manager_impl.h" |
| 36 #include "chrome/browser/chromeos/login/user_image_manager_test_util.h" | 36 #include "chrome/browser/chromeos/login/user_image_manager_test_util.h" |
| 37 #include "chrome/browser/chromeos/login/user_manager.h" | 37 #include "chrome/browser/chromeos/login/user_manager.h" |
| 38 #include "chrome/browser/chromeos/policy/cloud_external_data_manager_base_test_u
til.h" | 38 #include "chrome/browser/chromeos/policy/cloud_external_data_manager_base_test_u
til.h" |
| 39 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" | 39 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 policy::UserCloudPolicyManagerFactoryChromeOS::GetForProfile(profile); | 87 policy::UserCloudPolicyManagerFactoryChromeOS::GetForProfile(profile); |
| 88 if (!policy_manager) { | 88 if (!policy_manager) { |
| 89 ADD_FAILURE(); | 89 ADD_FAILURE(); |
| 90 return NULL; | 90 return NULL; |
| 91 } | 91 } |
| 92 return policy_manager->core()->store(); | 92 return policy_manager->core()->store(); |
| 93 } | 93 } |
| 94 | 94 |
| 95 } // namespace | 95 } // namespace |
| 96 | 96 |
| 97 class UserImageManagerTest : public LoginManagerTest, | 97 class UserImageManagerTest : public InProcessBrowserTest, |
| 98 public UserManager::Observer { | 98 public UserManager::Observer { |
| 99 protected: | 99 protected: |
| 100 UserImageManagerTest() : LoginManagerTest(true) { | 100 UserImageManagerTest() |
| 101 : login_manager_test_helper_(new LoginManagerTestHelper) { |
| 102 set_exit_when_last_browser_closes(false); |
| 101 } | 103 } |
| 102 | 104 |
| 103 // LoginManagerTest overrides: | 105 // InProcessBrowserTest overrides: |
| 104 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { | 106 virtual void SetUpInProcessBrowserTestFixture() OVERRIDE { |
| 105 LoginManagerTest::SetUpInProcessBrowserTestFixture(); | 107 login_manager_test_helper_->SetUpLoginUtils(true); |
| 106 | 108 |
| 107 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir_)); | 109 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir_)); |
| 108 ASSERT_TRUE(PathService::Get(chrome::DIR_USER_DATA, &user_data_dir_)); | 110 ASSERT_TRUE(PathService::Get(chrome::DIR_USER_DATA, &user_data_dir_)); |
| 109 } | 111 } |
| 110 | 112 |
| 111 virtual void SetUpOnMainThread() OVERRIDE { | 113 virtual void SetUpOnMainThread() OVERRIDE { |
| 112 LoginManagerTest::SetUpOnMainThread(); | 114 login_manager_test_helper_->SetUp(); |
| 113 local_state_ = g_browser_process->local_state(); | 115 local_state_ = g_browser_process->local_state(); |
| 114 UserManager::Get()->AddObserver(this); | 116 UserManager::Get()->AddObserver(this); |
| 115 } | 117 } |
| 116 | 118 |
| 117 virtual void TearDownOnMainThread() OVERRIDE { | 119 virtual void TearDownOnMainThread() OVERRIDE { |
| 118 UserManager::Get()->RemoveObserver(this); | 120 UserManager::Get()->RemoveObserver(this); |
| 119 LoginManagerTest::TearDownOnMainThread(); | 121 InProcessBrowserTest::TearDownOnMainThread(); |
| 122 } |
| 123 |
| 124 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { |
| 125 login_manager_test_helper_->SetUpCommandLine(command_line); |
| 126 } |
| 127 |
| 128 virtual void CleanUpOnMainThread() OVERRIDE { |
| 129 login_manager_test_helper_->CleanUp(); |
| 120 } | 130 } |
| 121 | 131 |
| 122 // UserManager::Observer overrides: | 132 // UserManager::Observer overrides: |
| 123 virtual void LocalStateChanged(UserManager* user_manager) OVERRIDE { | 133 virtual void LocalStateChanged(UserManager* user_manager) OVERRIDE { |
| 124 if (run_loop_) | 134 if (run_loop_) |
| 125 run_loop_->Quit(); | 135 run_loop_->Quit(); |
| 126 } | 136 } |
| 127 | 137 |
| 128 // Logs in |username|. | 138 // Logs in |username|. |
| 129 void LogIn(const std::string& username) { | 139 void LogIn(const std::string& username) { |
| 130 UserManager::Get()->UserLoggedIn(username, username, false); | 140 UserManager::Get()->UserLoggedIn(username, username, false); |
| 131 } | 141 } |
| 132 | 142 |
| 133 // Stores old (pre-migration) user image info. | 143 // Stores old (pre-migration) user image info. |
| 134 void SetOldUserImageInfo(const std::string& username, | 144 void SetOldUserImageInfo(const std::string& username, |
| 135 int image_index, | 145 int image_index, |
| 136 const base::FilePath& image_path) { | 146 const base::FilePath& image_path) { |
| 137 RegisterUser(username); | 147 login_manager_test_helper_->RegisterUser(username); |
| 138 DictionaryPrefUpdate images_pref(local_state_, "UserImages"); | 148 DictionaryPrefUpdate images_pref(local_state_, "UserImages"); |
| 139 base::DictionaryValue* image_properties = new base::DictionaryValue(); | 149 base::DictionaryValue* image_properties = new base::DictionaryValue(); |
| 140 image_properties->Set( | 150 image_properties->Set( |
| 141 "index", base::Value::CreateIntegerValue(image_index)); | 151 "index", base::Value::CreateIntegerValue(image_index)); |
| 142 image_properties->Set( | 152 image_properties->Set( |
| 143 "path" , new base::StringValue(image_path.value())); | 153 "path" , new base::StringValue(image_path.value())); |
| 144 images_pref->SetWithoutPathExpansion(username, image_properties); | 154 images_pref->SetWithoutPathExpansion(username, image_properties); |
| 145 } | 155 } |
| 146 | 156 |
| 147 // Verifies user image info in |images_pref| dictionary. | 157 // Verifies user image info in |images_pref| dictionary. |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 run_loop_->Run(); | 293 run_loop_->Run(); |
| 284 } | 294 } |
| 285 } | 295 } |
| 286 | 296 |
| 287 base::FilePath test_data_dir_; | 297 base::FilePath test_data_dir_; |
| 288 base::FilePath user_data_dir_; | 298 base::FilePath user_data_dir_; |
| 289 | 299 |
| 290 PrefService* local_state_; | 300 PrefService* local_state_; |
| 291 | 301 |
| 292 scoped_ptr<gfx::ImageSkia> decoded_image_; | 302 scoped_ptr<gfx::ImageSkia> decoded_image_; |
| 293 | 303 scoped_ptr<LoginManagerTestHelper> login_manager_test_helper_; |
| 294 scoped_ptr<base::RunLoop> run_loop_; | 304 scoped_ptr<base::RunLoop> run_loop_; |
| 295 | 305 |
| 296 private: | 306 private: |
| 297 DISALLOW_COPY_AND_ASSIGN(UserImageManagerTest); | 307 DISALLOW_COPY_AND_ASSIGN(UserImageManagerTest); |
| 298 }; | 308 }; |
| 299 | 309 |
| 300 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_DefaultUserImagePreserved) { | 310 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_DefaultUserImagePreserved) { |
| 301 // Setup an old default (stock) user image. | 311 // Setup an old default (stock) user image. |
| 302 ScopedUserManagerEnabler(new MockUserManager); | 312 ScopedUserManagerEnabler(new MockUserManager); |
| 303 SetOldUserImageInfo(kTestUser1, kFirstDefaultImageIndex, base::FilePath()); | 313 SetOldUserImageInfo(kTestUser1, kFirstDefaultImageIndex, base::FilePath()); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 381 } | 391 } |
| 382 // Now the migrated image is used. | 392 // Now the migrated image is used. |
| 383 EXPECT_TRUE(user->image_is_safe_format()); | 393 EXPECT_TRUE(user->image_is_safe_format()); |
| 384 // Check image dimensions. Images can't be compared since JPEG is lossy. | 394 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 385 const gfx::ImageSkia& saved_image = GetDefaultImage(kFirstDefaultImageIndex); | 395 const gfx::ImageSkia& saved_image = GetDefaultImage(kFirstDefaultImageIndex); |
| 386 EXPECT_EQ(saved_image.width(), user->GetImage().width()); | 396 EXPECT_EQ(saved_image.width(), user->GetImage().width()); |
| 387 EXPECT_EQ(saved_image.height(), user->GetImage().height()); | 397 EXPECT_EQ(saved_image.height(), user->GetImage().height()); |
| 388 } | 398 } |
| 389 | 399 |
| 390 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveUserDefaultImageIndex) { | 400 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveUserDefaultImageIndex) { |
| 391 RegisterUser(kTestUser1); | 401 login_manager_test_helper_->RegisterUser(kTestUser1); |
| 392 } | 402 } |
| 393 | 403 |
| 394 // Verifies that SaveUserDefaultImageIndex() correctly sets and persists the | 404 // Verifies that SaveUserDefaultImageIndex() correctly sets and persists the |
| 395 // chosen user image. | 405 // chosen user image. |
| 396 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveUserDefaultImageIndex) { | 406 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveUserDefaultImageIndex) { |
| 397 const User* user = UserManager::Get()->FindUser(kTestUser1); | 407 const User* user = UserManager::Get()->FindUser(kTestUser1); |
| 398 ASSERT_TRUE(user); | 408 ASSERT_TRUE(user); |
| 399 | 409 |
| 400 const gfx::ImageSkia& default_image = | 410 const gfx::ImageSkia& default_image = |
| 401 GetDefaultImage(kFirstDefaultImageIndex); | 411 GetDefaultImage(kFirstDefaultImageIndex); |
| 402 | 412 |
| 403 UserImageManager* user_image_manager = | 413 UserImageManager* user_image_manager = |
| 404 UserManager::Get()->GetUserImageManager(kTestUser1); | 414 UserManager::Get()->GetUserImageManager(kTestUser1); |
| 405 user_image_manager->SaveUserDefaultImageIndex(kFirstDefaultImageIndex); | 415 user_image_manager->SaveUserDefaultImageIndex(kFirstDefaultImageIndex); |
| 406 | 416 |
| 407 EXPECT_TRUE(user->HasDefaultImage()); | 417 EXPECT_TRUE(user->HasDefaultImage()); |
| 408 EXPECT_EQ(kFirstDefaultImageIndex, user->image_index()); | 418 EXPECT_EQ(kFirstDefaultImageIndex, user->image_index()); |
| 409 EXPECT_TRUE(test::AreImagesEqual(default_image, user->GetImage())); | 419 EXPECT_TRUE(test::AreImagesEqual(default_image, user->GetImage())); |
| 410 ExpectNewUserImageInfo(kTestUser1, kFirstDefaultImageIndex, base::FilePath()); | 420 ExpectNewUserImageInfo(kTestUser1, kFirstDefaultImageIndex, base::FilePath()); |
| 411 } | 421 } |
| 412 | 422 |
| 413 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveUserImage) { | 423 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveUserImage) { |
| 414 RegisterUser(kTestUser1); | 424 login_manager_test_helper_->RegisterUser(kTestUser1); |
| 415 } | 425 } |
| 416 | 426 |
| 417 // Verifies that SaveUserImage() correctly sets and persists the chosen user | 427 // Verifies that SaveUserImage() correctly sets and persists the chosen user |
| 418 // image. | 428 // image. |
| 419 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveUserImage) { | 429 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveUserImage) { |
| 420 const User* user = UserManager::Get()->FindUser(kTestUser1); | 430 const User* user = UserManager::Get()->FindUser(kTestUser1); |
| 421 ASSERT_TRUE(user); | 431 ASSERT_TRUE(user); |
| 422 | 432 |
| 423 SkBitmap custom_image_bitmap; | 433 SkBitmap custom_image_bitmap; |
| 424 custom_image_bitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10); | 434 custom_image_bitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 443 const scoped_ptr<gfx::ImageSkia> saved_image = | 453 const scoped_ptr<gfx::ImageSkia> saved_image = |
| 444 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); | 454 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); |
| 445 ASSERT_TRUE(saved_image); | 455 ASSERT_TRUE(saved_image); |
| 446 | 456 |
| 447 // Check image dimensions. Images can't be compared since JPEG is lossy. | 457 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 448 EXPECT_EQ(custom_image.width(), saved_image->width()); | 458 EXPECT_EQ(custom_image.width(), saved_image->width()); |
| 449 EXPECT_EQ(custom_image.height(), saved_image->height()); | 459 EXPECT_EQ(custom_image.height(), saved_image->height()); |
| 450 } | 460 } |
| 451 | 461 |
| 452 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveUserImageFromFile) { | 462 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveUserImageFromFile) { |
| 453 RegisterUser(kTestUser1); | 463 login_manager_test_helper_->RegisterUser(kTestUser1); |
| 454 } | 464 } |
| 455 | 465 |
| 456 // Verifies that SaveUserImageFromFile() correctly sets and persists the chosen | 466 // Verifies that SaveUserImageFromFile() correctly sets and persists the chosen |
| 457 // user image. | 467 // user image. |
| 458 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveUserImageFromFile) { | 468 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveUserImageFromFile) { |
| 459 const User* user = UserManager::Get()->FindUser(kTestUser1); | 469 const User* user = UserManager::Get()->FindUser(kTestUser1); |
| 460 ASSERT_TRUE(user); | 470 ASSERT_TRUE(user); |
| 461 | 471 |
| 462 const base::FilePath custom_image_path = | 472 const base::FilePath custom_image_path = |
| 463 test_data_dir_.Append(test::kUserAvatarImage1RelativePath); | 473 test_data_dir_.Append(test::kUserAvatarImage1RelativePath); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 482 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); | 492 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); |
| 483 ASSERT_TRUE(saved_image); | 493 ASSERT_TRUE(saved_image); |
| 484 | 494 |
| 485 // Check image dimensions. Images can't be compared since JPEG is lossy. | 495 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 486 EXPECT_EQ(custom_image->width(), saved_image->width()); | 496 EXPECT_EQ(custom_image->width(), saved_image->width()); |
| 487 EXPECT_EQ(custom_image->height(), saved_image->height()); | 497 EXPECT_EQ(custom_image->height(), saved_image->height()); |
| 488 } | 498 } |
| 489 | 499 |
| 490 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, | 500 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, |
| 491 PRE_SaveUserImageFromProfileImage) { | 501 PRE_SaveUserImageFromProfileImage) { |
| 492 RegisterUser(kTestUser1); | 502 login_manager_test_helper_->RegisterUser(kTestUser1); |
| 493 chromeos::StartupUtils::MarkOobeCompleted(); | 503 chromeos::StartupUtils::MarkOobeCompleted(); |
| 494 } | 504 } |
| 495 | 505 |
| 496 // Verifies that SaveUserImageFromProfileImage() correctly downloads, sets and | 506 // Verifies that SaveUserImageFromProfileImage() correctly downloads, sets and |
| 497 // persists the chosen user image. | 507 // persists the chosen user image. |
| 498 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveUserImageFromProfileImage) { | 508 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveUserImageFromProfileImage) { |
| 499 const User* user = UserManager::Get()->FindUser(kTestUser1); | 509 const User* user = UserManager::Get()->FindUser(kTestUser1); |
| 500 ASSERT_TRUE(user); | 510 ASSERT_TRUE(user); |
| 501 | 511 |
| 502 UserImageManagerImpl::IgnoreProfileDataDownloadDelayForTesting(); | 512 UserImageManagerImpl::IgnoreProfileDataDownloadDelayForTesting(); |
| 503 LoginUser(kTestUser1); | 513 login_manager_test_helper_->LogInUser(kTestUser1); |
| 504 | 514 |
| 505 run_loop_.reset(new base::RunLoop); | 515 run_loop_.reset(new base::RunLoop); |
| 506 UserImageManager* user_image_manager = | 516 UserImageManager* user_image_manager = |
| 507 UserManager::Get()->GetUserImageManager(kTestUser1); | 517 UserManager::Get()->GetUserImageManager(kTestUser1); |
| 508 user_image_manager->SaveUserImageFromProfileImage(); | 518 user_image_manager->SaveUserImageFromProfileImage(); |
| 509 run_loop_->Run(); | 519 run_loop_->Run(); |
| 510 | 520 |
| 511 net::TestURLFetcherFactory url_fetcher_factory; | 521 net::TestURLFetcherFactory url_fetcher_factory; |
| 512 CompleteProfileMetadataDownload(kTestUser1, &url_fetcher_factory); | 522 CompleteProfileMetadataDownload(kTestUser1, &url_fetcher_factory); |
| 513 CompleteProfileImageDownload(&url_fetcher_factory); | 523 CompleteProfileImageDownload(&url_fetcher_factory); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 526 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); | 536 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); |
| 527 ASSERT_TRUE(saved_image); | 537 ASSERT_TRUE(saved_image); |
| 528 | 538 |
| 529 // Check image dimensions. Images can't be compared since JPEG is lossy. | 539 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 530 EXPECT_EQ(profile_image.width(), saved_image->width()); | 540 EXPECT_EQ(profile_image.width(), saved_image->width()); |
| 531 EXPECT_EQ(profile_image.height(), saved_image->height()); | 541 EXPECT_EQ(profile_image.height(), saved_image->height()); |
| 532 } | 542 } |
| 533 | 543 |
| 534 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, | 544 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, |
| 535 PRE_ProfileImageDownloadDoesNotClobber) { | 545 PRE_ProfileImageDownloadDoesNotClobber) { |
| 536 RegisterUser(kTestUser1); | 546 login_manager_test_helper_->RegisterUser(kTestUser1); |
| 537 chromeos::StartupUtils::MarkOobeCompleted(); | 547 chromeos::StartupUtils::MarkOobeCompleted(); |
| 538 } | 548 } |
| 539 | 549 |
| 540 // Sets the user image to the profile image, then sets it to one of the default | 550 // Sets the user image to the profile image, then sets it to one of the default |
| 541 // images while the profile image download is still in progress. Verifies that | 551 // images while the profile image download is still in progress. Verifies that |
| 542 // when the download completes, the profile image is ignored and does not | 552 // when the download completes, the profile image is ignored and does not |
| 543 // clobber the default image chosen in the meantime. | 553 // clobber the default image chosen in the meantime. |
| 544 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, | 554 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, |
| 545 ProfileImageDownloadDoesNotClobber) { | 555 ProfileImageDownloadDoesNotClobber) { |
| 546 const User* user = UserManager::Get()->FindUser(kTestUser1); | 556 const User* user = UserManager::Get()->FindUser(kTestUser1); |
| 547 ASSERT_TRUE(user); | 557 ASSERT_TRUE(user); |
| 548 | 558 |
| 549 const gfx::ImageSkia& default_image = | 559 const gfx::ImageSkia& default_image = |
| 550 GetDefaultImage(kFirstDefaultImageIndex); | 560 GetDefaultImage(kFirstDefaultImageIndex); |
| 551 | 561 |
| 552 UserImageManagerImpl::IgnoreProfileDataDownloadDelayForTesting(); | 562 UserImageManagerImpl::IgnoreProfileDataDownloadDelayForTesting(); |
| 553 LoginUser(kTestUser1); | 563 login_manager_test_helper_->LogInUser(kTestUser1); |
| 554 | 564 |
| 555 run_loop_.reset(new base::RunLoop); | 565 run_loop_.reset(new base::RunLoop); |
| 556 UserImageManager* user_image_manager = | 566 UserImageManager* user_image_manager = |
| 557 UserManager::Get()->GetUserImageManager(kTestUser1); | 567 UserManager::Get()->GetUserImageManager(kTestUser1); |
| 558 user_image_manager->SaveUserImageFromProfileImage(); | 568 user_image_manager->SaveUserImageFromProfileImage(); |
| 559 run_loop_->Run(); | 569 run_loop_->Run(); |
| 560 | 570 |
| 561 net::TestURLFetcherFactory url_fetcher_factory; | 571 net::TestURLFetcherFactory url_fetcher_factory; |
| 562 CompleteProfileMetadataDownload(kTestUser1, &url_fetcher_factory); | 572 CompleteProfileMetadataDownload(kTestUser1, &url_fetcher_factory); |
| 563 | 573 |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 645 FakeDBusThreadManager* fake_dbus_thread_manager_; | 655 FakeDBusThreadManager* fake_dbus_thread_manager_; |
| 646 FakeSessionManagerClient* fake_session_manager_client_; | 656 FakeSessionManagerClient* fake_session_manager_client_; |
| 647 | 657 |
| 648 scoped_ptr<gfx::ImageSkia> policy_image_; | 658 scoped_ptr<gfx::ImageSkia> policy_image_; |
| 649 | 659 |
| 650 private: | 660 private: |
| 651 DISALLOW_COPY_AND_ASSIGN(UserImageManagerPolicyTest); | 661 DISALLOW_COPY_AND_ASSIGN(UserImageManagerPolicyTest); |
| 652 }; | 662 }; |
| 653 | 663 |
| 654 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, PRE_SetAndClear) { | 664 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, PRE_SetAndClear) { |
| 655 RegisterUser(kTestUser1); | 665 login_manager_test_helper_->RegisterUser(kTestUser1); |
| 656 chromeos::StartupUtils::MarkOobeCompleted(); | 666 chromeos::StartupUtils::MarkOobeCompleted(); |
| 657 } | 667 } |
| 658 | 668 |
| 659 // Verifies that the user image can be set through policy. Also verifies that | 669 // Verifies that the user image can be set through policy. Also verifies that |
| 660 // after the policy has been cleared, the user is able to choose a different | 670 // after the policy has been cleared, the user is able to choose a different |
| 661 // image. | 671 // image. |
| 662 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, SetAndClear) { | 672 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, SetAndClear) { |
| 663 const User* user = UserManager::Get()->FindUser(kTestUser1); | 673 const User* user = UserManager::Get()->FindUser(kTestUser1); |
| 664 ASSERT_TRUE(user); | 674 ASSERT_TRUE(user); |
| 665 | 675 |
| 666 LoginUser(kTestUser1); | 676 login_manager_test_helper_->LogInUser(kTestUser1); |
| 667 base::RunLoop().RunUntilIdle(); | 677 base::RunLoop().RunUntilIdle(); |
| 668 | 678 |
| 669 policy::CloudPolicyStore* store = GetStoreForUser(user); | 679 policy::CloudPolicyStore* store = GetStoreForUser(user); |
| 670 ASSERT_TRUE(store); | 680 ASSERT_TRUE(store); |
| 671 | 681 |
| 672 // Set policy. Verify that the policy-provided user image is downloaded, set | 682 // Set policy. Verify that the policy-provided user image is downloaded, set |
| 673 // and persisted. | 683 // and persisted. |
| 674 user_policy_.payload().mutable_useravatarimage()->set_value( | 684 user_policy_.payload().mutable_useravatarimage()->set_value( |
| 675 ConstructPolicy(test::kUserAvatarImage2RelativePath)); | 685 ConstructPolicy(test::kUserAvatarImage2RelativePath)); |
| 676 user_policy_.Build(); | 686 user_policy_.Build(); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 731 UserManager::Get()->GetUserImageManager(kTestUser1); | 741 UserManager::Get()->GetUserImageManager(kTestUser1); |
| 732 user_image_manager->SaveUserDefaultImageIndex(kFirstDefaultImageIndex); | 742 user_image_manager->SaveUserDefaultImageIndex(kFirstDefaultImageIndex); |
| 733 | 743 |
| 734 EXPECT_TRUE(user->HasDefaultImage()); | 744 EXPECT_TRUE(user->HasDefaultImage()); |
| 735 EXPECT_EQ(kFirstDefaultImageIndex, user->image_index()); | 745 EXPECT_EQ(kFirstDefaultImageIndex, user->image_index()); |
| 736 EXPECT_TRUE(test::AreImagesEqual(default_image, user->GetImage())); | 746 EXPECT_TRUE(test::AreImagesEqual(default_image, user->GetImage())); |
| 737 ExpectNewUserImageInfo(kTestUser1, kFirstDefaultImageIndex, base::FilePath()); | 747 ExpectNewUserImageInfo(kTestUser1, kFirstDefaultImageIndex, base::FilePath()); |
| 738 } | 748 } |
| 739 | 749 |
| 740 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, PRE_PolicyOverridesUser) { | 750 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, PRE_PolicyOverridesUser) { |
| 741 RegisterUser(kTestUser1); | 751 login_manager_test_helper_->RegisterUser(kTestUser1); |
| 742 chromeos::StartupUtils::MarkOobeCompleted(); | 752 chromeos::StartupUtils::MarkOobeCompleted(); |
| 743 } | 753 } |
| 744 | 754 |
| 745 // Verifies that when the user chooses a user image and a different image is | 755 // Verifies that when the user chooses a user image and a different image is |
| 746 // then set through policy, the policy takes precedence, overriding the | 756 // then set through policy, the policy takes precedence, overriding the |
| 747 // previously chosen image. | 757 // previously chosen image. |
| 748 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, PolicyOverridesUser) { | 758 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, PolicyOverridesUser) { |
| 749 const User* user = UserManager::Get()->FindUser(kTestUser1); | 759 const User* user = UserManager::Get()->FindUser(kTestUser1); |
| 750 ASSERT_TRUE(user); | 760 ASSERT_TRUE(user); |
| 751 | 761 |
| 752 LoginUser(kTestUser1); | 762 login_manager_test_helper_->LogInUser(kTestUser1); |
| 753 base::RunLoop().RunUntilIdle(); | 763 base::RunLoop().RunUntilIdle(); |
| 754 | 764 |
| 755 policy::CloudPolicyStore* store = GetStoreForUser(user); | 765 policy::CloudPolicyStore* store = GetStoreForUser(user); |
| 756 ASSERT_TRUE(store); | 766 ASSERT_TRUE(store); |
| 757 | 767 |
| 758 // Choose a user image. Verify that the chosen user image is set and | 768 // Choose a user image. Verify that the chosen user image is set and |
| 759 // persisted. | 769 // persisted. |
| 760 const gfx::ImageSkia& default_image = | 770 const gfx::ImageSkia& default_image = |
| 761 GetDefaultImage(kFirstDefaultImageIndex); | 771 GetDefaultImage(kFirstDefaultImageIndex); |
| 762 | 772 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 791 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); | 801 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); |
| 792 ASSERT_TRUE(saved_image); | 802 ASSERT_TRUE(saved_image); |
| 793 | 803 |
| 794 // Check image dimensions. Images can't be compared since JPEG is lossy. | 804 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 795 EXPECT_EQ(policy_image_->width(), saved_image->width()); | 805 EXPECT_EQ(policy_image_->width(), saved_image->width()); |
| 796 EXPECT_EQ(policy_image_->height(), saved_image->height()); | 806 EXPECT_EQ(policy_image_->height(), saved_image->height()); |
| 797 } | 807 } |
| 798 | 808 |
| 799 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, | 809 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, |
| 800 PRE_UserDoesNotOverridePolicy) { | 810 PRE_UserDoesNotOverridePolicy) { |
| 801 RegisterUser(kTestUser1); | 811 login_manager_test_helper_->RegisterUser(kTestUser1); |
| 802 chromeos::StartupUtils::MarkOobeCompleted(); | 812 chromeos::StartupUtils::MarkOobeCompleted(); |
| 803 } | 813 } |
| 804 | 814 |
| 805 // Verifies that when the user image has been set through policy and the user | 815 // Verifies that when the user image has been set through policy and the user |
| 806 // chooses a different image, the policy takes precedence, preventing the user | 816 // chooses a different image, the policy takes precedence, preventing the user |
| 807 // from overriding the previously chosen image. | 817 // from overriding the previously chosen image. |
| 808 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, UserDoesNotOverridePolicy) { | 818 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, UserDoesNotOverridePolicy) { |
| 809 const User* user = UserManager::Get()->FindUser(kTestUser1); | 819 const User* user = UserManager::Get()->FindUser(kTestUser1); |
| 810 ASSERT_TRUE(user); | 820 ASSERT_TRUE(user); |
| 811 | 821 |
| 812 LoginUser(kTestUser1); | 822 login_manager_test_helper_->LogInUser(kTestUser1); |
| 813 base::RunLoop().RunUntilIdle(); | 823 base::RunLoop().RunUntilIdle(); |
| 814 | 824 |
| 815 policy::CloudPolicyStore* store = GetStoreForUser(user); | 825 policy::CloudPolicyStore* store = GetStoreForUser(user); |
| 816 ASSERT_TRUE(store); | 826 ASSERT_TRUE(store); |
| 817 | 827 |
| 818 // Set policy. Verify that the policy-provided user image is downloaded, set | 828 // Set policy. Verify that the policy-provided user image is downloaded, set |
| 819 // and persisted. | 829 // and persisted. |
| 820 user_policy_.payload().mutable_useravatarimage()->set_value( | 830 user_policy_.payload().mutable_useravatarimage()->set_value( |
| 821 ConstructPolicy(test::kUserAvatarImage2RelativePath)); | 831 ConstructPolicy(test::kUserAvatarImage2RelativePath)); |
| 822 user_policy_.Build(); | 832 user_policy_.Build(); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 856 | 866 |
| 857 saved_image = test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); | 867 saved_image = test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); |
| 858 ASSERT_TRUE(saved_image); | 868 ASSERT_TRUE(saved_image); |
| 859 | 869 |
| 860 // Check image dimensions. Images can't be compared since JPEG is lossy. | 870 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 861 EXPECT_EQ(policy_image_->width(), saved_image->width()); | 871 EXPECT_EQ(policy_image_->width(), saved_image->width()); |
| 862 EXPECT_EQ(policy_image_->height(), saved_image->height()); | 872 EXPECT_EQ(policy_image_->height(), saved_image->height()); |
| 863 } | 873 } |
| 864 | 874 |
| 865 } // namespace chromeos | 875 } // namespace chromeos |
| OLD | NEW |