| 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 <stdint.h> | 5 #include <stdint.h> |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 return NULL; | 100 return NULL; |
| 101 } | 101 } |
| 102 return policy_manager->core()->store(); | 102 return policy_manager->core()->store(); |
| 103 } | 103 } |
| 104 | 104 |
| 105 } // namespace | 105 } // namespace |
| 106 | 106 |
| 107 class UserImageManagerTest : public LoginManagerTest, | 107 class UserImageManagerTest : public LoginManagerTest, |
| 108 public user_manager::UserManager::Observer { | 108 public user_manager::UserManager::Observer { |
| 109 protected: | 109 protected: |
| 110 UserImageManagerTest() | 110 UserImageManagerTest() : LoginManagerTest(true) {} |
| 111 : LoginManagerTest(true), | |
| 112 enterprise_account_id_(AccountId::FromUserEmail(kEnterpriseUser1)) {} | |
| 113 | 111 |
| 114 // LoginManagerTest overrides: | 112 // LoginManagerTest overrides: |
| 115 void SetUpInProcessBrowserTestFixture() override { | 113 void SetUpInProcessBrowserTestFixture() override { |
| 116 LoginManagerTest::SetUpInProcessBrowserTestFixture(); | 114 LoginManagerTest::SetUpInProcessBrowserTestFixture(); |
| 117 | 115 |
| 118 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir_)); | 116 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir_)); |
| 119 ASSERT_TRUE(PathService::Get(chrome::DIR_USER_DATA, &user_data_dir_)); | 117 ASSERT_TRUE(PathService::Get(chrome::DIR_USER_DATA, &user_data_dir_)); |
| 120 } | 118 } |
| 121 | 119 |
| 122 void SetUpCommandLine(base::CommandLine* command_line) override { | 120 void SetUpCommandLine(base::CommandLine* command_line) override { |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 base::FilePath user_data_dir_; | 318 base::FilePath user_data_dir_; |
| 321 | 319 |
| 322 PrefService* local_state_; | 320 PrefService* local_state_; |
| 323 | 321 |
| 324 scoped_ptr<gfx::ImageSkia> decoded_image_; | 322 scoped_ptr<gfx::ImageSkia> decoded_image_; |
| 325 | 323 |
| 326 scoped_ptr<base::RunLoop> run_loop_; | 324 scoped_ptr<base::RunLoop> run_loop_; |
| 327 | 325 |
| 328 const AccountId test_account_id1_ = AccountId::FromUserEmail(kTestUser1); | 326 const AccountId test_account_id1_ = AccountId::FromUserEmail(kTestUser1); |
| 329 const AccountId test_account_id2_ = AccountId::FromUserEmail(kTestUser2); | 327 const AccountId test_account_id2_ = AccountId::FromUserEmail(kTestUser2); |
| 330 const AccountId enterprise_account_id_; | 328 const AccountId enterprise_account_id_ = |
| 329 AccountId::FromUserEmail(kEnterpriseUser1); |
| 330 const cryptohome::Identification cryptohome_id_ = |
| 331 cryptohome::Identification(enterprise_account_id_); |
| 331 | 332 |
| 332 private: | 333 private: |
| 333 DISALLOW_COPY_AND_ASSIGN(UserImageManagerTest); | 334 DISALLOW_COPY_AND_ASSIGN(UserImageManagerTest); |
| 334 }; | 335 }; |
| 335 | 336 |
| 336 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_DefaultUserImagePreserved) { | 337 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_DefaultUserImagePreserved) { |
| 337 // Setup an old default (stock) user image. | 338 // Setup an old default (stock) user image. |
| 338 ScopedUserManagerEnabler(new MockUserManager); | 339 ScopedUserManagerEnabler(new MockUserManager); |
| 339 SetOldUserImageInfo(test_account_id1_, | 340 SetOldUserImageInfo(test_account_id1_, |
| 340 default_user_image::kFirstDefaultImageIndex, | 341 default_user_image::kFirstDefaultImageIndex, |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 659 UserImageManagerTest::SetUpInProcessBrowserTestFixture(); | 660 UserImageManagerTest::SetUpInProcessBrowserTestFixture(); |
| 660 } | 661 } |
| 661 | 662 |
| 662 void SetUpOnMainThread() override { | 663 void SetUpOnMainThread() override { |
| 663 UserImageManagerTest::SetUpOnMainThread(); | 664 UserImageManagerTest::SetUpOnMainThread(); |
| 664 | 665 |
| 665 base::FilePath user_keys_dir; | 666 base::FilePath user_keys_dir; |
| 666 ASSERT_TRUE(PathService::Get(chromeos::DIR_USER_POLICY_KEYS, | 667 ASSERT_TRUE(PathService::Get(chromeos::DIR_USER_POLICY_KEYS, |
| 667 &user_keys_dir)); | 668 &user_keys_dir)); |
| 668 const std::string sanitized_username = | 669 const std::string sanitized_username = |
| 669 chromeos::CryptohomeClient::GetStubSanitizedUsername( | 670 chromeos::CryptohomeClient::GetStubSanitizedUsername(cryptohome_id_); |
| 670 enterprise_account_id_.GetUserEmail()); | |
| 671 const base::FilePath user_key_file = | 671 const base::FilePath user_key_file = |
| 672 user_keys_dir.AppendASCII(sanitized_username) | 672 user_keys_dir.AppendASCII(sanitized_username) |
| 673 .AppendASCII("policy.pub"); | 673 .AppendASCII("policy.pub"); |
| 674 std::vector<uint8_t> user_key_bits; | 674 std::vector<uint8_t> user_key_bits; |
| 675 ASSERT_TRUE(user_policy_.GetSigningKey()->ExportPublicKey(&user_key_bits)); | 675 ASSERT_TRUE(user_policy_.GetSigningKey()->ExportPublicKey(&user_key_bits)); |
| 676 ASSERT_TRUE(base::CreateDirectory(user_key_file.DirName())); | 676 ASSERT_TRUE(base::CreateDirectory(user_key_file.DirName())); |
| 677 ASSERT_EQ(base::WriteFile( | 677 ASSERT_EQ(base::WriteFile( |
| 678 user_key_file, | 678 user_key_file, |
| 679 reinterpret_cast<const char*>(user_key_bits.data()), | 679 reinterpret_cast<const char*>(user_key_bits.data()), |
| 680 user_key_bits.size()), | 680 user_key_bits.size()), |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 741 base::RunLoop().RunUntilIdle(); | 741 base::RunLoop().RunUntilIdle(); |
| 742 | 742 |
| 743 policy::CloudPolicyStore* store = GetStoreForUser(user); | 743 policy::CloudPolicyStore* store = GetStoreForUser(user); |
| 744 ASSERT_TRUE(store); | 744 ASSERT_TRUE(store); |
| 745 | 745 |
| 746 // Set policy. Verify that the policy-provided user image is downloaded, set | 746 // Set policy. Verify that the policy-provided user image is downloaded, set |
| 747 // and persisted. | 747 // and persisted. |
| 748 user_policy_.payload().mutable_useravatarimage()->set_value( | 748 user_policy_.payload().mutable_useravatarimage()->set_value( |
| 749 ConstructPolicy(test::kUserAvatarImage2RelativePath)); | 749 ConstructPolicy(test::kUserAvatarImage2RelativePath)); |
| 750 user_policy_.Build(); | 750 user_policy_.Build(); |
| 751 fake_session_manager_client_->set_user_policy( | 751 fake_session_manager_client_->set_user_policy(cryptohome_id_, |
| 752 enterprise_account_id_.GetUserEmail(), user_policy_.GetBlob()); | 752 user_policy_.GetBlob()); |
| 753 run_loop_.reset(new base::RunLoop); | 753 run_loop_.reset(new base::RunLoop); |
| 754 store->Load(); | 754 store->Load(); |
| 755 run_loop_->Run(); | 755 run_loop_->Run(); |
| 756 | 756 |
| 757 EXPECT_FALSE(user->HasDefaultImage()); | 757 EXPECT_FALSE(user->HasDefaultImage()); |
| 758 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); | 758 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); |
| 759 EXPECT_TRUE(test::AreImagesEqual(*policy_image_, user->GetImage())); | 759 EXPECT_TRUE(test::AreImagesEqual(*policy_image_, user->GetImage())); |
| 760 ExpectNewUserImageInfo(enterprise_account_id_, | 760 ExpectNewUserImageInfo(enterprise_account_id_, |
| 761 user_manager::User::USER_IMAGE_EXTERNAL, | 761 user_manager::User::USER_IMAGE_EXTERNAL, |
| 762 GetUserImagePath(enterprise_account_id_, "jpg")); | 762 GetUserImagePath(enterprise_account_id_, "jpg")); |
| 763 | 763 |
| 764 scoped_ptr<gfx::ImageSkia> saved_image = | 764 scoped_ptr<gfx::ImageSkia> saved_image = |
| 765 test::ImageLoader(GetUserImagePath(enterprise_account_id_, "jpg")).Load(); | 765 test::ImageLoader(GetUserImagePath(enterprise_account_id_, "jpg")).Load(); |
| 766 ASSERT_TRUE(saved_image); | 766 ASSERT_TRUE(saved_image); |
| 767 | 767 |
| 768 // Check image dimensions. Images can't be compared since JPEG is lossy. | 768 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 769 EXPECT_EQ(policy_image_->width(), saved_image->width()); | 769 EXPECT_EQ(policy_image_->width(), saved_image->width()); |
| 770 EXPECT_EQ(policy_image_->height(), saved_image->height()); | 770 EXPECT_EQ(policy_image_->height(), saved_image->height()); |
| 771 | 771 |
| 772 // Clear policy. Verify that the user image switches to a random default | 772 // Clear policy. Verify that the user image switches to a random default |
| 773 // image. | 773 // image. |
| 774 user_policy_.payload().Clear(); | 774 user_policy_.payload().Clear(); |
| 775 user_policy_.Build(); | 775 user_policy_.Build(); |
| 776 fake_session_manager_client_->set_user_policy( | 776 fake_session_manager_client_->set_user_policy(cryptohome_id_, |
| 777 enterprise_account_id_.GetUserEmail(), user_policy_.GetBlob()); | 777 user_policy_.GetBlob()); |
| 778 run_loop_.reset(new base::RunLoop); | 778 run_loop_.reset(new base::RunLoop); |
| 779 store->AddObserver(this); | 779 store->AddObserver(this); |
| 780 store->Load(); | 780 store->Load(); |
| 781 run_loop_->Run(); | 781 run_loop_->Run(); |
| 782 store->RemoveObserver(this); | 782 store->RemoveObserver(this); |
| 783 base::RunLoop().RunUntilIdle(); | 783 base::RunLoop().RunUntilIdle(); |
| 784 | 784 |
| 785 const int default_image_index = user->image_index(); | 785 const int default_image_index = user->image_index(); |
| 786 EXPECT_TRUE(user->HasDefaultImage()); | 786 EXPECT_TRUE(user->HasDefaultImage()); |
| 787 ASSERT_LE(default_user_image::kFirstDefaultImageIndex, default_image_index); | 787 ASSERT_LE(default_user_image::kFirstDefaultImageIndex, default_image_index); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 848 EXPECT_TRUE(test::AreImagesEqual(default_image, user->GetImage())); | 848 EXPECT_TRUE(test::AreImagesEqual(default_image, user->GetImage())); |
| 849 ExpectNewUserImageInfo(enterprise_account_id_, | 849 ExpectNewUserImageInfo(enterprise_account_id_, |
| 850 default_user_image::kFirstDefaultImageIndex, | 850 default_user_image::kFirstDefaultImageIndex, |
| 851 base::FilePath()); | 851 base::FilePath()); |
| 852 | 852 |
| 853 // Set policy. Verify that the policy-provided user image is downloaded, set | 853 // Set policy. Verify that the policy-provided user image is downloaded, set |
| 854 // and persisted, overriding the previously set image. | 854 // and persisted, overriding the previously set image. |
| 855 user_policy_.payload().mutable_useravatarimage()->set_value( | 855 user_policy_.payload().mutable_useravatarimage()->set_value( |
| 856 ConstructPolicy(test::kUserAvatarImage2RelativePath)); | 856 ConstructPolicy(test::kUserAvatarImage2RelativePath)); |
| 857 user_policy_.Build(); | 857 user_policy_.Build(); |
| 858 fake_session_manager_client_->set_user_policy( | 858 fake_session_manager_client_->set_user_policy(cryptohome_id_, |
| 859 enterprise_account_id_.GetUserEmail(), user_policy_.GetBlob()); | 859 user_policy_.GetBlob()); |
| 860 run_loop_.reset(new base::RunLoop); | 860 run_loop_.reset(new base::RunLoop); |
| 861 store->Load(); | 861 store->Load(); |
| 862 run_loop_->Run(); | 862 run_loop_->Run(); |
| 863 | 863 |
| 864 EXPECT_FALSE(user->HasDefaultImage()); | 864 EXPECT_FALSE(user->HasDefaultImage()); |
| 865 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); | 865 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); |
| 866 EXPECT_TRUE(test::AreImagesEqual(*policy_image_, user->GetImage())); | 866 EXPECT_TRUE(test::AreImagesEqual(*policy_image_, user->GetImage())); |
| 867 ExpectNewUserImageInfo(enterprise_account_id_, | 867 ExpectNewUserImageInfo(enterprise_account_id_, |
| 868 user_manager::User::USER_IMAGE_EXTERNAL, | 868 user_manager::User::USER_IMAGE_EXTERNAL, |
| 869 GetUserImagePath(enterprise_account_id_, "jpg")); | 869 GetUserImagePath(enterprise_account_id_, "jpg")); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 895 base::RunLoop().RunUntilIdle(); | 895 base::RunLoop().RunUntilIdle(); |
| 896 | 896 |
| 897 policy::CloudPolicyStore* store = GetStoreForUser(user); | 897 policy::CloudPolicyStore* store = GetStoreForUser(user); |
| 898 ASSERT_TRUE(store); | 898 ASSERT_TRUE(store); |
| 899 | 899 |
| 900 // Set policy. Verify that the policy-provided user image is downloaded, set | 900 // Set policy. Verify that the policy-provided user image is downloaded, set |
| 901 // and persisted. | 901 // and persisted. |
| 902 user_policy_.payload().mutable_useravatarimage()->set_value( | 902 user_policy_.payload().mutable_useravatarimage()->set_value( |
| 903 ConstructPolicy(test::kUserAvatarImage2RelativePath)); | 903 ConstructPolicy(test::kUserAvatarImage2RelativePath)); |
| 904 user_policy_.Build(); | 904 user_policy_.Build(); |
| 905 fake_session_manager_client_->set_user_policy( | 905 fake_session_manager_client_->set_user_policy(cryptohome_id_, |
| 906 enterprise_account_id_.GetUserEmail(), user_policy_.GetBlob()); | 906 user_policy_.GetBlob()); |
| 907 run_loop_.reset(new base::RunLoop); | 907 run_loop_.reset(new base::RunLoop); |
| 908 store->Load(); | 908 store->Load(); |
| 909 run_loop_->Run(); | 909 run_loop_->Run(); |
| 910 | 910 |
| 911 EXPECT_FALSE(user->HasDefaultImage()); | 911 EXPECT_FALSE(user->HasDefaultImage()); |
| 912 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); | 912 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); |
| 913 EXPECT_TRUE(test::AreImagesEqual(*policy_image_, user->GetImage())); | 913 EXPECT_TRUE(test::AreImagesEqual(*policy_image_, user->GetImage())); |
| 914 ExpectNewUserImageInfo(enterprise_account_id_, | 914 ExpectNewUserImageInfo(enterprise_account_id_, |
| 915 user_manager::User::USER_IMAGE_EXTERNAL, | 915 user_manager::User::USER_IMAGE_EXTERNAL, |
| 916 GetUserImagePath(enterprise_account_id_, "jpg")); | 916 GetUserImagePath(enterprise_account_id_, "jpg")); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 940 saved_image = | 940 saved_image = |
| 941 test::ImageLoader(GetUserImagePath(enterprise_account_id_, "jpg")).Load(); | 941 test::ImageLoader(GetUserImagePath(enterprise_account_id_, "jpg")).Load(); |
| 942 ASSERT_TRUE(saved_image); | 942 ASSERT_TRUE(saved_image); |
| 943 | 943 |
| 944 // Check image dimensions. Images can't be compared since JPEG is lossy. | 944 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 945 EXPECT_EQ(policy_image_->width(), saved_image->width()); | 945 EXPECT_EQ(policy_image_->width(), saved_image->width()); |
| 946 EXPECT_EQ(policy_image_->height(), saved_image->height()); | 946 EXPECT_EQ(policy_image_->height(), saved_image->height()); |
| 947 } | 947 } |
| 948 | 948 |
| 949 } // namespace chromeos | 949 } // namespace chromeos |
| OLD | NEW |