| 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 <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" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 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/login_manager_test.h" | 28 #include "chrome/browser/chromeos/login/login_manager_test.h" |
| 29 #include "chrome/browser/chromeos/login/startup_utils.h" | 29 #include "chrome/browser/chromeos/login/startup_utils.h" |
| 30 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h" | 30 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h" |
| 31 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.h" | 31 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager_impl.h" |
| 32 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager_test_uti
l.h" | 32 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager_test_uti
l.h" |
| 33 #include "chrome/browser/chromeos/login/users/mock_user_manager.h" | 33 #include "chrome/browser/chromeos/login/users/mock_user_manager.h" |
| 34 #include "chrome/browser/chromeos/login/users/user.h" | |
| 35 #include "chrome/browser/chromeos/login/users/user_manager.h" | 34 #include "chrome/browser/chromeos/login/users/user_manager.h" |
| 36 #include "chrome/browser/chromeos/policy/cloud_external_data_manager_base_test_u
til.h" | 35 #include "chrome/browser/chromeos/policy/cloud_external_data_manager_base_test_u
til.h" |
| 37 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" | 36 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" |
| 38 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chrom
eos.h" | 37 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chrom
eos.h" |
| 39 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 38 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
| 40 #include "chrome/browser/profiles/profile.h" | 39 #include "chrome/browser/profiles/profile.h" |
| 41 #include "chrome/browser/profiles/profile_downloader.h" | 40 #include "chrome/browser/profiles/profile_downloader.h" |
| 42 #include "chrome/common/chrome_paths.h" | 41 #include "chrome/common/chrome_paths.h" |
| 43 #include "chrome/test/base/in_process_browser_test.h" | 42 #include "chrome/test/base/in_process_browser_test.h" |
| 44 #include "chrome/test/base/testing_browser_process.h" | 43 #include "chrome/test/base/testing_browser_process.h" |
| 45 #include "chromeos/chromeos_paths.h" | 44 #include "chromeos/chromeos_paths.h" |
| 46 #include "chromeos/dbus/cryptohome_client.h" | 45 #include "chromeos/dbus/cryptohome_client.h" |
| 47 #include "chromeos/dbus/dbus_thread_manager.h" | 46 #include "chromeos/dbus/dbus_thread_manager.h" |
| 48 #include "chromeos/dbus/fake_dbus_thread_manager.h" | 47 #include "chromeos/dbus/fake_dbus_thread_manager.h" |
| 49 #include "chromeos/dbus/fake_session_manager_client.h" | 48 #include "chromeos/dbus/fake_session_manager_client.h" |
| 50 #include "chromeos/dbus/session_manager_client.h" | 49 #include "chromeos/dbus/session_manager_client.h" |
| 51 #include "components/policy/core/common/cloud/cloud_policy_core.h" | 50 #include "components/policy/core/common/cloud/cloud_policy_core.h" |
| 52 #include "components/policy/core/common/cloud/cloud_policy_store.h" | 51 #include "components/policy/core/common/cloud/cloud_policy_store.h" |
| 53 #include "components/policy/core/common/cloud/policy_builder.h" | 52 #include "components/policy/core/common/cloud/policy_builder.h" |
| 53 #include "components/user_manager/user.h" |
| 54 #include "components/user_manager/user_image/default_user_images.h" | 54 #include "components/user_manager/user_image/default_user_images.h" |
| 55 #include "components/user_manager/user_image/user_image.h" | 55 #include "components/user_manager/user_image/user_image.h" |
| 56 #include "content/public/browser/notification_service.h" | 56 #include "content/public/browser/notification_service.h" |
| 57 #include "content/public/browser/notification_source.h" | 57 #include "content/public/browser/notification_source.h" |
| 58 #include "content/public/test/test_utils.h" | 58 #include "content/public/test/test_utils.h" |
| 59 #include "crypto/rsa_private_key.h" | 59 #include "crypto/rsa_private_key.h" |
| 60 #include "google_apis/gaia/gaia_oauth_client.h" | 60 #include "google_apis/gaia/gaia_oauth_client.h" |
| 61 #include "google_apis/gaia/oauth2_token_service.h" | 61 #include "google_apis/gaia/oauth2_token_service.h" |
| 62 #include "net/test/embedded_test_server/embedded_test_server.h" | 62 #include "net/test/embedded_test_server/embedded_test_server.h" |
| 63 #include "net/url_request/test_url_fetcher_factory.h" | 63 #include "net/url_request/test_url_fetcher_factory.h" |
| 64 #include "net/url_request/url_fetcher_delegate.h" | 64 #include "net/url_request/url_fetcher_delegate.h" |
| 65 #include "net/url_request/url_request_status.h" | 65 #include "net/url_request/url_request_status.h" |
| 66 #include "policy/proto/cloud_policy.pb.h" | 66 #include "policy/proto/cloud_policy.pb.h" |
| 67 #include "testing/gtest/include/gtest/gtest.h" | 67 #include "testing/gtest/include/gtest/gtest.h" |
| 68 #include "third_party/skia/include/core/SkBitmap.h" | 68 #include "third_party/skia/include/core/SkBitmap.h" |
| 69 #include "ui/base/layout.h" | 69 #include "ui/base/layout.h" |
| 70 #include "ui/base/resource/resource_bundle.h" | 70 #include "ui/base/resource/resource_bundle.h" |
| 71 #include "ui/gfx/image/image_skia.h" | 71 #include "ui/gfx/image/image_skia.h" |
| 72 #include "url/gurl.h" | 72 #include "url/gurl.h" |
| 73 | 73 |
| 74 namespace chromeos { | 74 namespace chromeos { |
| 75 | 75 |
| 76 namespace { | 76 namespace { |
| 77 | 77 |
| 78 const char kTestUser1[] = "test-user@example.com"; | 78 const char kTestUser1[] = "test-user@example.com"; |
| 79 const char kTestUser2[] = "test-user2@example.com"; | 79 const char kTestUser2[] = "test-user2@example.com"; |
| 80 | 80 |
| 81 policy::CloudPolicyStore* GetStoreForUser(const User* user) { | 81 policy::CloudPolicyStore* GetStoreForUser(const user_manager::User* user) { |
| 82 Profile* profile = ProfileHelper::Get()->GetProfileByUser(user); | 82 Profile* profile = ProfileHelper::Get()->GetProfileByUser(user); |
| 83 if (!profile) { | 83 if (!profile) { |
| 84 ADD_FAILURE(); | 84 ADD_FAILURE(); |
| 85 return NULL; | 85 return NULL; |
| 86 } | 86 } |
| 87 policy::UserCloudPolicyManagerChromeOS* policy_manager = | 87 policy::UserCloudPolicyManagerChromeOS* policy_manager = |
| 88 policy::UserCloudPolicyManagerFactoryChromeOS::GetForProfile(profile); | 88 policy::UserCloudPolicyManagerFactoryChromeOS::GetForProfile(profile); |
| 89 if (!policy_manager) { | 89 if (!policy_manager) { |
| 90 ADD_FAILURE(); | 90 ADD_FAILURE(); |
| 91 return NULL; | 91 return NULL; |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 int resource_id) { | 198 int resource_id) { |
| 199 base::FilePath image_path = GetUserImagePath(username, "png"); | 199 base::FilePath image_path = GetUserImagePath(username, "png"); |
| 200 scoped_refptr<base::RefCountedStaticMemory> image_data( | 200 scoped_refptr<base::RefCountedStaticMemory> image_data( |
| 201 ResourceBundle::GetSharedInstance().LoadDataResourceBytesForScale( | 201 ResourceBundle::GetSharedInstance().LoadDataResourceBytesForScale( |
| 202 resource_id, ui::SCALE_FACTOR_100P)); | 202 resource_id, ui::SCALE_FACTOR_100P)); |
| 203 int written = base::WriteFile( | 203 int written = base::WriteFile( |
| 204 image_path, | 204 image_path, |
| 205 reinterpret_cast<const char*>(image_data->front()), | 205 reinterpret_cast<const char*>(image_data->front()), |
| 206 image_data->size()); | 206 image_data->size()); |
| 207 EXPECT_EQ(static_cast<int>(image_data->size()), written); | 207 EXPECT_EQ(static_cast<int>(image_data->size()), written); |
| 208 SetOldUserImageInfo(username, User::kExternalImageIndex, image_path); | 208 SetOldUserImageInfo( |
| 209 username, user_manager::User::USER_IMAGE_EXTERNAL, image_path); |
| 209 } | 210 } |
| 210 | 211 |
| 211 // Returns the image path for user |username| with specified |extension|. | 212 // Returns the image path for user |username| with specified |extension|. |
| 212 base::FilePath GetUserImagePath(const std::string& username, | 213 base::FilePath GetUserImagePath(const std::string& username, |
| 213 const std::string& extension) { | 214 const std::string& extension) { |
| 214 return user_data_dir_.Append(username).AddExtension(extension); | 215 return user_data_dir_.Append(username).AddExtension(extension); |
| 215 } | 216 } |
| 216 | 217 |
| 217 // Completes the download of all non-image profile data for the user | 218 // Completes the download of all non-image profile data for the user |
| 218 // |username|. This method must only be called after a profile data | 219 // |username|. This method must only be called after a profile data |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 pref_change_registrar.Add("UserDisplayName", run_loop.QuitClosure()); | 267 pref_change_registrar.Add("UserDisplayName", run_loop.QuitClosure()); |
| 267 net::TestURLFetcher* fetcher = url_fetcher_factory->GetFetcherByID(0); | 268 net::TestURLFetcher* fetcher = url_fetcher_factory->GetFetcherByID(0); |
| 268 ASSERT_TRUE(fetcher); | 269 ASSERT_TRUE(fetcher); |
| 269 fetcher->SetResponseString(profile_image_data); | 270 fetcher->SetResponseString(profile_image_data); |
| 270 fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::SUCCESS, | 271 fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::SUCCESS, |
| 271 net::OK)); | 272 net::OK)); |
| 272 fetcher->set_response_code(200); | 273 fetcher->set_response_code(200); |
| 273 fetcher->delegate()->OnURLFetchComplete(fetcher); | 274 fetcher->delegate()->OnURLFetchComplete(fetcher); |
| 274 run_loop.Run(); | 275 run_loop.Run(); |
| 275 | 276 |
| 276 const User* user = UserManager::Get()->GetLoggedInUser(); | 277 const user_manager::User* user = UserManager::Get()->GetLoggedInUser(); |
| 277 ASSERT_TRUE(user); | 278 ASSERT_TRUE(user); |
| 278 UserImageManagerImpl* uim = reinterpret_cast<UserImageManagerImpl*>( | 279 UserImageManagerImpl* uim = reinterpret_cast<UserImageManagerImpl*>( |
| 279 UserManager::Get()->GetUserImageManager(user->email())); | 280 UserManager::Get()->GetUserImageManager(user->email())); |
| 280 if (uim->job_.get()) { | 281 if (uim->job_.get()) { |
| 281 run_loop_.reset(new base::RunLoop); | 282 run_loop_.reset(new base::RunLoop); |
| 282 run_loop_->Run(); | 283 run_loop_->Run(); |
| 283 } | 284 } |
| 284 } | 285 } |
| 285 | 286 |
| 286 base::FilePath test_data_dir_; | 287 base::FilePath test_data_dir_; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 // Setup a user with non-JPEG image. | 343 // Setup a user with non-JPEG image. |
| 343 ScopedUserManagerEnabler(new MockUserManager); | 344 ScopedUserManagerEnabler(new MockUserManager); |
| 344 SaveUserImagePNG(kTestUser1, | 345 SaveUserImagePNG(kTestUser1, |
| 345 user_manager::kDefaultImageResourceIDs | 346 user_manager::kDefaultImageResourceIDs |
| 346 [user_manager::kFirstDefaultImageIndex]); | 347 [user_manager::kFirstDefaultImageIndex]); |
| 347 } | 348 } |
| 348 | 349 |
| 349 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_NonJPEGImageFromFile) { | 350 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_NonJPEGImageFromFile) { |
| 350 UserManager::Get()->GetUsers(); // Load users. | 351 UserManager::Get()->GetUsers(); // Load users. |
| 351 // Old info preserved. | 352 // Old info preserved. |
| 352 ExpectOldUserImageInfo(kTestUser1, User::kExternalImageIndex, | 353 ExpectOldUserImageInfo(kTestUser1, |
| 354 user_manager::User::USER_IMAGE_EXTERNAL, |
| 353 GetUserImagePath(kTestUser1, "png")); | 355 GetUserImagePath(kTestUser1, "png")); |
| 354 const User* user = UserManager::Get()->FindUser(kTestUser1); | 356 const user_manager::User* user = UserManager::Get()->FindUser(kTestUser1); |
| 355 EXPECT_TRUE(user->image_is_stub()); | 357 EXPECT_TRUE(user->image_is_stub()); |
| 356 | 358 |
| 357 base::RunLoop run_loop; | 359 base::RunLoop run_loop; |
| 358 PrefChangeRegistrar pref_change_registrar_; | 360 PrefChangeRegistrar pref_change_registrar_; |
| 359 pref_change_registrar_.Init(local_state_); | 361 pref_change_registrar_.Init(local_state_); |
| 360 pref_change_registrar_.Add("UserImages", run_loop.QuitClosure()); | 362 pref_change_registrar_.Add("UserImages", run_loop.QuitClosure()); |
| 361 LogIn(kTestUser1); | 363 LogIn(kTestUser1); |
| 362 | 364 |
| 363 // Wait for migration. | 365 // Wait for migration. |
| 364 run_loop.Run(); | 366 run_loop.Run(); |
| 365 | 367 |
| 366 // Image info is migrated and the image is converted to JPG. | 368 // Image info is migrated and the image is converted to JPG. |
| 367 ExpectNewUserImageInfo(kTestUser1, User::kExternalImageIndex, | 369 ExpectNewUserImageInfo(kTestUser1, |
| 370 user_manager::User::USER_IMAGE_EXTERNAL, |
| 368 GetUserImagePath(kTestUser1, "jpg")); | 371 GetUserImagePath(kTestUser1, "jpg")); |
| 369 user = UserManager::Get()->GetLoggedInUser(); | 372 user = UserManager::Get()->GetLoggedInUser(); |
| 370 ASSERT_TRUE(user); | 373 ASSERT_TRUE(user); |
| 371 EXPECT_FALSE(user->image_is_safe_format()); | 374 EXPECT_FALSE(user->image_is_safe_format()); |
| 372 // Check image dimensions. | 375 // Check image dimensions. |
| 373 const gfx::ImageSkia& saved_image = | 376 const gfx::ImageSkia& saved_image = |
| 374 user_manager::GetDefaultImage(user_manager::kFirstDefaultImageIndex); | 377 user_manager::GetDefaultImage(user_manager::kFirstDefaultImageIndex); |
| 375 EXPECT_EQ(saved_image.width(), user->GetImage().width()); | 378 EXPECT_EQ(saved_image.width(), user->GetImage().width()); |
| 376 EXPECT_EQ(saved_image.height(), user->GetImage().height()); | 379 EXPECT_EQ(saved_image.height(), user->GetImage().height()); |
| 377 } | 380 } |
| 378 | 381 |
| 379 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, NonJPEGImageFromFile) { | 382 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, NonJPEGImageFromFile) { |
| 380 UserManager::Get()->GetUsers(); // Load users. | 383 UserManager::Get()->GetUsers(); // Load users. |
| 381 const User* user = UserManager::Get()->FindUser(kTestUser1); | 384 const user_manager::User* user = UserManager::Get()->FindUser(kTestUser1); |
| 382 ASSERT_TRUE(user); | 385 ASSERT_TRUE(user); |
| 383 // Wait for image load. | 386 // Wait for image load. |
| 384 if (user->image_index() == User::kInvalidImageIndex) { | 387 if (user->image_index() == user_manager::User::USER_IMAGE_INVALID) { |
| 385 content::WindowedNotificationObserver( | 388 content::WindowedNotificationObserver( |
| 386 chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED, | 389 chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED, |
| 387 content::NotificationService::AllSources()).Wait(); | 390 content::NotificationService::AllSources()).Wait(); |
| 388 } | 391 } |
| 389 // Now the migrated image is used. | 392 // Now the migrated image is used. |
| 390 EXPECT_TRUE(user->image_is_safe_format()); | 393 EXPECT_TRUE(user->image_is_safe_format()); |
| 391 // 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. |
| 392 const gfx::ImageSkia& saved_image = | 395 const gfx::ImageSkia& saved_image = |
| 393 user_manager::GetDefaultImage(user_manager::kFirstDefaultImageIndex); | 396 user_manager::GetDefaultImage(user_manager::kFirstDefaultImageIndex); |
| 394 EXPECT_EQ(saved_image.width(), user->GetImage().width()); | 397 EXPECT_EQ(saved_image.width(), user->GetImage().width()); |
| 395 EXPECT_EQ(saved_image.height(), user->GetImage().height()); | 398 EXPECT_EQ(saved_image.height(), user->GetImage().height()); |
| 396 } | 399 } |
| 397 | 400 |
| 398 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveUserDefaultImageIndex) { | 401 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveUserDefaultImageIndex) { |
| 399 RegisterUser(kTestUser1); | 402 RegisterUser(kTestUser1); |
| 400 } | 403 } |
| 401 | 404 |
| 402 // Verifies that SaveUserDefaultImageIndex() correctly sets and persists the | 405 // Verifies that SaveUserDefaultImageIndex() correctly sets and persists the |
| 403 // chosen user image. | 406 // chosen user image. |
| 404 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveUserDefaultImageIndex) { | 407 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveUserDefaultImageIndex) { |
| 405 const User* user = UserManager::Get()->FindUser(kTestUser1); | 408 const user_manager::User* user = UserManager::Get()->FindUser(kTestUser1); |
| 406 ASSERT_TRUE(user); | 409 ASSERT_TRUE(user); |
| 407 | 410 |
| 408 const gfx::ImageSkia& default_image = | 411 const gfx::ImageSkia& default_image = |
| 409 user_manager::GetDefaultImage(user_manager::kFirstDefaultImageIndex); | 412 user_manager::GetDefaultImage(user_manager::kFirstDefaultImageIndex); |
| 410 | 413 |
| 411 UserImageManager* user_image_manager = | 414 UserImageManager* user_image_manager = |
| 412 UserManager::Get()->GetUserImageManager(kTestUser1); | 415 UserManager::Get()->GetUserImageManager(kTestUser1); |
| 413 user_image_manager->SaveUserDefaultImageIndex( | 416 user_image_manager->SaveUserDefaultImageIndex( |
| 414 user_manager::kFirstDefaultImageIndex); | 417 user_manager::kFirstDefaultImageIndex); |
| 415 | 418 |
| 416 EXPECT_TRUE(user->HasDefaultImage()); | 419 EXPECT_TRUE(user->HasDefaultImage()); |
| 417 EXPECT_EQ(user_manager::kFirstDefaultImageIndex, user->image_index()); | 420 EXPECT_EQ(user_manager::kFirstDefaultImageIndex, user->image_index()); |
| 418 EXPECT_TRUE(test::AreImagesEqual(default_image, user->GetImage())); | 421 EXPECT_TRUE(test::AreImagesEqual(default_image, user->GetImage())); |
| 419 ExpectNewUserImageInfo( | 422 ExpectNewUserImageInfo( |
| 420 kTestUser1, user_manager::kFirstDefaultImageIndex, base::FilePath()); | 423 kTestUser1, user_manager::kFirstDefaultImageIndex, base::FilePath()); |
| 421 } | 424 } |
| 422 | 425 |
| 423 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveUserImage) { | 426 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveUserImage) { |
| 424 RegisterUser(kTestUser1); | 427 RegisterUser(kTestUser1); |
| 425 } | 428 } |
| 426 | 429 |
| 427 // Verifies that SaveUserImage() correctly sets and persists the chosen user | 430 // Verifies that SaveUserImage() correctly sets and persists the chosen user |
| 428 // image. | 431 // image. |
| 429 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveUserImage) { | 432 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveUserImage) { |
| 430 const User* user = UserManager::Get()->FindUser(kTestUser1); | 433 const user_manager::User* user = UserManager::Get()->FindUser(kTestUser1); |
| 431 ASSERT_TRUE(user); | 434 ASSERT_TRUE(user); |
| 432 | 435 |
| 433 SkBitmap custom_image_bitmap; | 436 SkBitmap custom_image_bitmap; |
| 434 custom_image_bitmap.allocN32Pixels(10, 10); | 437 custom_image_bitmap.allocN32Pixels(10, 10); |
| 435 custom_image_bitmap.setImmutable(); | 438 custom_image_bitmap.setImmutable(); |
| 436 const gfx::ImageSkia custom_image = | 439 const gfx::ImageSkia custom_image = |
| 437 gfx::ImageSkia::CreateFrom1xBitmap(custom_image_bitmap); | 440 gfx::ImageSkia::CreateFrom1xBitmap(custom_image_bitmap); |
| 438 | 441 |
| 439 run_loop_.reset(new base::RunLoop); | 442 run_loop_.reset(new base::RunLoop); |
| 440 UserImageManager* user_image_manager = | 443 UserImageManager* user_image_manager = |
| 441 UserManager::Get()->GetUserImageManager(kTestUser1); | 444 UserManager::Get()->GetUserImageManager(kTestUser1); |
| 442 user_image_manager->SaveUserImage( | 445 user_image_manager->SaveUserImage( |
| 443 user_manager::UserImage::CreateAndEncode(custom_image)); | 446 user_manager::UserImage::CreateAndEncode(custom_image)); |
| 444 run_loop_->Run(); | 447 run_loop_->Run(); |
| 445 | 448 |
| 446 EXPECT_FALSE(user->HasDefaultImage()); | 449 EXPECT_FALSE(user->HasDefaultImage()); |
| 447 EXPECT_EQ(User::kExternalImageIndex, user->image_index()); | 450 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); |
| 448 EXPECT_TRUE(test::AreImagesEqual(custom_image, user->GetImage())); | 451 EXPECT_TRUE(test::AreImagesEqual(custom_image, user->GetImage())); |
| 449 ExpectNewUserImageInfo(kTestUser1, | 452 ExpectNewUserImageInfo(kTestUser1, |
| 450 User::kExternalImageIndex, | 453 user_manager::User::USER_IMAGE_EXTERNAL, |
| 451 GetUserImagePath(kTestUser1, "jpg")); | 454 GetUserImagePath(kTestUser1, "jpg")); |
| 452 | 455 |
| 453 const scoped_ptr<gfx::ImageSkia> saved_image = | 456 const scoped_ptr<gfx::ImageSkia> saved_image = |
| 454 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); | 457 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); |
| 455 ASSERT_TRUE(saved_image); | 458 ASSERT_TRUE(saved_image); |
| 456 | 459 |
| 457 // Check image dimensions. Images can't be compared since JPEG is lossy. | 460 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 458 EXPECT_EQ(custom_image.width(), saved_image->width()); | 461 EXPECT_EQ(custom_image.width(), saved_image->width()); |
| 459 EXPECT_EQ(custom_image.height(), saved_image->height()); | 462 EXPECT_EQ(custom_image.height(), saved_image->height()); |
| 460 } | 463 } |
| 461 | 464 |
| 462 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveUserImageFromFile) { | 465 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveUserImageFromFile) { |
| 463 RegisterUser(kTestUser1); | 466 RegisterUser(kTestUser1); |
| 464 } | 467 } |
| 465 | 468 |
| 466 // Verifies that SaveUserImageFromFile() correctly sets and persists the chosen | 469 // Verifies that SaveUserImageFromFile() correctly sets and persists the chosen |
| 467 // user image. | 470 // user image. |
| 468 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveUserImageFromFile) { | 471 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveUserImageFromFile) { |
| 469 const User* user = UserManager::Get()->FindUser(kTestUser1); | 472 const user_manager::User* user = UserManager::Get()->FindUser(kTestUser1); |
| 470 ASSERT_TRUE(user); | 473 ASSERT_TRUE(user); |
| 471 | 474 |
| 472 const base::FilePath custom_image_path = | 475 const base::FilePath custom_image_path = |
| 473 test_data_dir_.Append(test::kUserAvatarImage1RelativePath); | 476 test_data_dir_.Append(test::kUserAvatarImage1RelativePath); |
| 474 const scoped_ptr<gfx::ImageSkia> custom_image = | 477 const scoped_ptr<gfx::ImageSkia> custom_image = |
| 475 test::ImageLoader(custom_image_path).Load(); | 478 test::ImageLoader(custom_image_path).Load(); |
| 476 ASSERT_TRUE(custom_image); | 479 ASSERT_TRUE(custom_image); |
| 477 | 480 |
| 478 run_loop_.reset(new base::RunLoop); | 481 run_loop_.reset(new base::RunLoop); |
| 479 UserImageManager* user_image_manager = | 482 UserImageManager* user_image_manager = |
| 480 UserManager::Get()->GetUserImageManager(kTestUser1); | 483 UserManager::Get()->GetUserImageManager(kTestUser1); |
| 481 user_image_manager->SaveUserImageFromFile(custom_image_path); | 484 user_image_manager->SaveUserImageFromFile(custom_image_path); |
| 482 run_loop_->Run(); | 485 run_loop_->Run(); |
| 483 | 486 |
| 484 EXPECT_FALSE(user->HasDefaultImage()); | 487 EXPECT_FALSE(user->HasDefaultImage()); |
| 485 EXPECT_EQ(User::kExternalImageIndex, user->image_index()); | 488 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); |
| 486 EXPECT_TRUE(test::AreImagesEqual(*custom_image, user->GetImage())); | 489 EXPECT_TRUE(test::AreImagesEqual(*custom_image, user->GetImage())); |
| 487 ExpectNewUserImageInfo(kTestUser1, | 490 ExpectNewUserImageInfo(kTestUser1, |
| 488 User::kExternalImageIndex, | 491 user_manager::User::USER_IMAGE_EXTERNAL, |
| 489 GetUserImagePath(kTestUser1, "jpg")); | 492 GetUserImagePath(kTestUser1, "jpg")); |
| 490 | 493 |
| 491 const scoped_ptr<gfx::ImageSkia> saved_image = | 494 const scoped_ptr<gfx::ImageSkia> saved_image = |
| 492 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); | 495 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); |
| 493 ASSERT_TRUE(saved_image); | 496 ASSERT_TRUE(saved_image); |
| 494 | 497 |
| 495 // Check image dimensions. Images can't be compared since JPEG is lossy. | 498 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 496 EXPECT_EQ(custom_image->width(), saved_image->width()); | 499 EXPECT_EQ(custom_image->width(), saved_image->width()); |
| 497 EXPECT_EQ(custom_image->height(), saved_image->height()); | 500 EXPECT_EQ(custom_image->height(), saved_image->height()); |
| 498 } | 501 } |
| 499 | 502 |
| 500 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, | 503 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, |
| 501 PRE_SaveUserImageFromProfileImage) { | 504 PRE_SaveUserImageFromProfileImage) { |
| 502 RegisterUser(kTestUser1); | 505 RegisterUser(kTestUser1); |
| 503 chromeos::StartupUtils::MarkOobeCompleted(); | 506 chromeos::StartupUtils::MarkOobeCompleted(); |
| 504 } | 507 } |
| 505 | 508 |
| 506 // Verifies that SaveUserImageFromProfileImage() correctly downloads, sets and | 509 // Verifies that SaveUserImageFromProfileImage() correctly downloads, sets and |
| 507 // persists the chosen user image. | 510 // persists the chosen user image. |
| 508 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveUserImageFromProfileImage) { | 511 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveUserImageFromProfileImage) { |
| 509 const User* user = UserManager::Get()->FindUser(kTestUser1); | 512 const user_manager::User* user = UserManager::Get()->FindUser(kTestUser1); |
| 510 ASSERT_TRUE(user); | 513 ASSERT_TRUE(user); |
| 511 | 514 |
| 512 UserImageManagerImpl::IgnoreProfileDataDownloadDelayForTesting(); | 515 UserImageManagerImpl::IgnoreProfileDataDownloadDelayForTesting(); |
| 513 LoginUser(kTestUser1); | 516 LoginUser(kTestUser1); |
| 514 | 517 |
| 515 run_loop_.reset(new base::RunLoop); | 518 run_loop_.reset(new base::RunLoop); |
| 516 UserImageManager* user_image_manager = | 519 UserImageManager* user_image_manager = |
| 517 UserManager::Get()->GetUserImageManager(kTestUser1); | 520 UserManager::Get()->GetUserImageManager(kTestUser1); |
| 518 user_image_manager->SaveUserImageFromProfileImage(); | 521 user_image_manager->SaveUserImageFromProfileImage(); |
| 519 run_loop_->Run(); | 522 run_loop_->Run(); |
| 520 | 523 |
| 521 net::TestURLFetcherFactory url_fetcher_factory; | 524 net::TestURLFetcherFactory url_fetcher_factory; |
| 522 CompleteProfileMetadataDownload(kTestUser1, &url_fetcher_factory); | 525 CompleteProfileMetadataDownload(kTestUser1, &url_fetcher_factory); |
| 523 CompleteProfileImageDownload(&url_fetcher_factory); | 526 CompleteProfileImageDownload(&url_fetcher_factory); |
| 524 | 527 |
| 525 const gfx::ImageSkia& profile_image = | 528 const gfx::ImageSkia& profile_image = |
| 526 user_image_manager->DownloadedProfileImage(); | 529 user_image_manager->DownloadedProfileImage(); |
| 527 | 530 |
| 528 EXPECT_FALSE(user->HasDefaultImage()); | 531 EXPECT_FALSE(user->HasDefaultImage()); |
| 529 EXPECT_EQ(User::kProfileImageIndex, user->image_index()); | 532 EXPECT_EQ(user_manager::User::USER_IMAGE_PROFILE, user->image_index()); |
| 530 EXPECT_TRUE(test::AreImagesEqual(profile_image, user->GetImage())); | 533 EXPECT_TRUE(test::AreImagesEqual(profile_image, user->GetImage())); |
| 531 ExpectNewUserImageInfo(kTestUser1, | 534 ExpectNewUserImageInfo(kTestUser1, |
| 532 User::kProfileImageIndex, | 535 user_manager::User::USER_IMAGE_PROFILE, |
| 533 GetUserImagePath(kTestUser1, "jpg")); | 536 GetUserImagePath(kTestUser1, "jpg")); |
| 534 | 537 |
| 535 const scoped_ptr<gfx::ImageSkia> saved_image = | 538 const scoped_ptr<gfx::ImageSkia> saved_image = |
| 536 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); | 539 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); |
| 537 ASSERT_TRUE(saved_image); | 540 ASSERT_TRUE(saved_image); |
| 538 | 541 |
| 539 // Check image dimensions. Images can't be compared since JPEG is lossy. | 542 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 540 EXPECT_EQ(profile_image.width(), saved_image->width()); | 543 EXPECT_EQ(profile_image.width(), saved_image->width()); |
| 541 EXPECT_EQ(profile_image.height(), saved_image->height()); | 544 EXPECT_EQ(profile_image.height(), saved_image->height()); |
| 542 } | 545 } |
| 543 | 546 |
| 544 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, | 547 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, |
| 545 PRE_ProfileImageDownloadDoesNotClobber) { | 548 PRE_ProfileImageDownloadDoesNotClobber) { |
| 546 RegisterUser(kTestUser1); | 549 RegisterUser(kTestUser1); |
| 547 chromeos::StartupUtils::MarkOobeCompleted(); | 550 chromeos::StartupUtils::MarkOobeCompleted(); |
| 548 } | 551 } |
| 549 | 552 |
| 550 // Sets the user image to the profile image, then sets it to one of the default | 553 // Sets the user image to the profile image, then sets it to one of the default |
| 551 // images while the profile image download is still in progress. Verifies that | 554 // images while the profile image download is still in progress. Verifies that |
| 552 // when the download completes, the profile image is ignored and does not | 555 // when the download completes, the profile image is ignored and does not |
| 553 // clobber the default image chosen in the meantime. | 556 // clobber the default image chosen in the meantime. |
| 554 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, | 557 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, |
| 555 ProfileImageDownloadDoesNotClobber) { | 558 ProfileImageDownloadDoesNotClobber) { |
| 556 const User* user = UserManager::Get()->FindUser(kTestUser1); | 559 const user_manager::User* user = UserManager::Get()->FindUser(kTestUser1); |
| 557 ASSERT_TRUE(user); | 560 ASSERT_TRUE(user); |
| 558 | 561 |
| 559 const gfx::ImageSkia& default_image = | 562 const gfx::ImageSkia& default_image = |
| 560 user_manager::GetDefaultImage(user_manager::kFirstDefaultImageIndex); | 563 user_manager::GetDefaultImage(user_manager::kFirstDefaultImageIndex); |
| 561 | 564 |
| 562 UserImageManagerImpl::IgnoreProfileDataDownloadDelayForTesting(); | 565 UserImageManagerImpl::IgnoreProfileDataDownloadDelayForTesting(); |
| 563 LoginUser(kTestUser1); | 566 LoginUser(kTestUser1); |
| 564 | 567 |
| 565 run_loop_.reset(new base::RunLoop); | 568 run_loop_.reset(new base::RunLoop); |
| 566 UserImageManager* user_image_manager = | 569 UserImageManager* user_image_manager = |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 665 | 668 |
| 666 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, PRE_SetAndClear) { | 669 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, PRE_SetAndClear) { |
| 667 RegisterUser(kTestUser1); | 670 RegisterUser(kTestUser1); |
| 668 chromeos::StartupUtils::MarkOobeCompleted(); | 671 chromeos::StartupUtils::MarkOobeCompleted(); |
| 669 } | 672 } |
| 670 | 673 |
| 671 // Verifies that the user image can be set through policy. Also verifies that | 674 // Verifies that the user image can be set through policy. Also verifies that |
| 672 // after the policy has been cleared, the user is able to choose a different | 675 // after the policy has been cleared, the user is able to choose a different |
| 673 // image. | 676 // image. |
| 674 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, SetAndClear) { | 677 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, SetAndClear) { |
| 675 const User* user = UserManager::Get()->FindUser(kTestUser1); | 678 const user_manager::User* user = UserManager::Get()->FindUser(kTestUser1); |
| 676 ASSERT_TRUE(user); | 679 ASSERT_TRUE(user); |
| 677 | 680 |
| 678 LoginUser(kTestUser1); | 681 LoginUser(kTestUser1); |
| 679 base::RunLoop().RunUntilIdle(); | 682 base::RunLoop().RunUntilIdle(); |
| 680 | 683 |
| 681 policy::CloudPolicyStore* store = GetStoreForUser(user); | 684 policy::CloudPolicyStore* store = GetStoreForUser(user); |
| 682 ASSERT_TRUE(store); | 685 ASSERT_TRUE(store); |
| 683 | 686 |
| 684 // Set policy. Verify that the policy-provided user image is downloaded, set | 687 // Set policy. Verify that the policy-provided user image is downloaded, set |
| 685 // and persisted. | 688 // and persisted. |
| 686 user_policy_.payload().mutable_useravatarimage()->set_value( | 689 user_policy_.payload().mutable_useravatarimage()->set_value( |
| 687 ConstructPolicy(test::kUserAvatarImage2RelativePath)); | 690 ConstructPolicy(test::kUserAvatarImage2RelativePath)); |
| 688 user_policy_.Build(); | 691 user_policy_.Build(); |
| 689 fake_session_manager_client_->set_user_policy(kTestUser1, | 692 fake_session_manager_client_->set_user_policy(kTestUser1, |
| 690 user_policy_.GetBlob()); | 693 user_policy_.GetBlob()); |
| 691 run_loop_.reset(new base::RunLoop); | 694 run_loop_.reset(new base::RunLoop); |
| 692 store->Load(); | 695 store->Load(); |
| 693 run_loop_->Run(); | 696 run_loop_->Run(); |
| 694 | 697 |
| 695 EXPECT_FALSE(user->HasDefaultImage()); | 698 EXPECT_FALSE(user->HasDefaultImage()); |
| 696 EXPECT_EQ(User::kExternalImageIndex, user->image_index()); | 699 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); |
| 697 EXPECT_TRUE(test::AreImagesEqual(*policy_image_, user->GetImage())); | 700 EXPECT_TRUE(test::AreImagesEqual(*policy_image_, user->GetImage())); |
| 698 ExpectNewUserImageInfo(kTestUser1, | 701 ExpectNewUserImageInfo(kTestUser1, |
| 699 User::kExternalImageIndex, | 702 user_manager::User::USER_IMAGE_EXTERNAL, |
| 700 GetUserImagePath(kTestUser1, "jpg")); | 703 GetUserImagePath(kTestUser1, "jpg")); |
| 701 | 704 |
| 702 scoped_ptr<gfx::ImageSkia> saved_image = | 705 scoped_ptr<gfx::ImageSkia> saved_image = |
| 703 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); | 706 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); |
| 704 ASSERT_TRUE(saved_image); | 707 ASSERT_TRUE(saved_image); |
| 705 | 708 |
| 706 // Check image dimensions. Images can't be compared since JPEG is lossy. | 709 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 707 EXPECT_EQ(policy_image_->width(), saved_image->width()); | 710 EXPECT_EQ(policy_image_->width(), saved_image->width()); |
| 708 EXPECT_EQ(policy_image_->height(), saved_image->height()); | 711 EXPECT_EQ(policy_image_->height(), saved_image->height()); |
| 709 | 712 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 752 | 755 |
| 753 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, PRE_PolicyOverridesUser) { | 756 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, PRE_PolicyOverridesUser) { |
| 754 RegisterUser(kTestUser1); | 757 RegisterUser(kTestUser1); |
| 755 chromeos::StartupUtils::MarkOobeCompleted(); | 758 chromeos::StartupUtils::MarkOobeCompleted(); |
| 756 } | 759 } |
| 757 | 760 |
| 758 // Verifies that when the user chooses a user image and a different image is | 761 // Verifies that when the user chooses a user image and a different image is |
| 759 // then set through policy, the policy takes precedence, overriding the | 762 // then set through policy, the policy takes precedence, overriding the |
| 760 // previously chosen image. | 763 // previously chosen image. |
| 761 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, PolicyOverridesUser) { | 764 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, PolicyOverridesUser) { |
| 762 const User* user = UserManager::Get()->FindUser(kTestUser1); | 765 const user_manager::User* user = UserManager::Get()->FindUser(kTestUser1); |
| 763 ASSERT_TRUE(user); | 766 ASSERT_TRUE(user); |
| 764 | 767 |
| 765 LoginUser(kTestUser1); | 768 LoginUser(kTestUser1); |
| 766 base::RunLoop().RunUntilIdle(); | 769 base::RunLoop().RunUntilIdle(); |
| 767 | 770 |
| 768 policy::CloudPolicyStore* store = GetStoreForUser(user); | 771 policy::CloudPolicyStore* store = GetStoreForUser(user); |
| 769 ASSERT_TRUE(store); | 772 ASSERT_TRUE(store); |
| 770 | 773 |
| 771 // Choose a user image. Verify that the chosen user image is set and | 774 // Choose a user image. Verify that the chosen user image is set and |
| 772 // persisted. | 775 // persisted. |
| (...skipping 16 matching lines...) Expand all Loading... |
| 789 user_policy_.payload().mutable_useravatarimage()->set_value( | 792 user_policy_.payload().mutable_useravatarimage()->set_value( |
| 790 ConstructPolicy(test::kUserAvatarImage2RelativePath)); | 793 ConstructPolicy(test::kUserAvatarImage2RelativePath)); |
| 791 user_policy_.Build(); | 794 user_policy_.Build(); |
| 792 fake_session_manager_client_->set_user_policy(kTestUser1, | 795 fake_session_manager_client_->set_user_policy(kTestUser1, |
| 793 user_policy_.GetBlob()); | 796 user_policy_.GetBlob()); |
| 794 run_loop_.reset(new base::RunLoop); | 797 run_loop_.reset(new base::RunLoop); |
| 795 store->Load(); | 798 store->Load(); |
| 796 run_loop_->Run(); | 799 run_loop_->Run(); |
| 797 | 800 |
| 798 EXPECT_FALSE(user->HasDefaultImage()); | 801 EXPECT_FALSE(user->HasDefaultImage()); |
| 799 EXPECT_EQ(User::kExternalImageIndex, user->image_index()); | 802 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); |
| 800 EXPECT_TRUE(test::AreImagesEqual(*policy_image_, user->GetImage())); | 803 EXPECT_TRUE(test::AreImagesEqual(*policy_image_, user->GetImage())); |
| 801 ExpectNewUserImageInfo(kTestUser1, | 804 ExpectNewUserImageInfo(kTestUser1, |
| 802 User::kExternalImageIndex, | 805 user_manager::User::USER_IMAGE_EXTERNAL, |
| 803 GetUserImagePath(kTestUser1, "jpg")); | 806 GetUserImagePath(kTestUser1, "jpg")); |
| 804 | 807 |
| 805 scoped_ptr<gfx::ImageSkia> saved_image = | 808 scoped_ptr<gfx::ImageSkia> saved_image = |
| 806 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); | 809 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); |
| 807 ASSERT_TRUE(saved_image); | 810 ASSERT_TRUE(saved_image); |
| 808 | 811 |
| 809 // Check image dimensions. Images can't be compared since JPEG is lossy. | 812 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 810 EXPECT_EQ(policy_image_->width(), saved_image->width()); | 813 EXPECT_EQ(policy_image_->width(), saved_image->width()); |
| 811 EXPECT_EQ(policy_image_->height(), saved_image->height()); | 814 EXPECT_EQ(policy_image_->height(), saved_image->height()); |
| 812 } | 815 } |
| 813 | 816 |
| 814 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, | 817 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, |
| 815 PRE_UserDoesNotOverridePolicy) { | 818 PRE_UserDoesNotOverridePolicy) { |
| 816 RegisterUser(kTestUser1); | 819 RegisterUser(kTestUser1); |
| 817 chromeos::StartupUtils::MarkOobeCompleted(); | 820 chromeos::StartupUtils::MarkOobeCompleted(); |
| 818 } | 821 } |
| 819 | 822 |
| 820 // Verifies that when the user image has been set through policy and the user | 823 // Verifies that when the user image has been set through policy and the user |
| 821 // chooses a different image, the policy takes precedence, preventing the user | 824 // chooses a different image, the policy takes precedence, preventing the user |
| 822 // from overriding the previously chosen image. | 825 // from overriding the previously chosen image. |
| 823 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, UserDoesNotOverridePolicy) { | 826 IN_PROC_BROWSER_TEST_F(UserImageManagerPolicyTest, UserDoesNotOverridePolicy) { |
| 824 const User* user = UserManager::Get()->FindUser(kTestUser1); | 827 const user_manager::User* user = UserManager::Get()->FindUser(kTestUser1); |
| 825 ASSERT_TRUE(user); | 828 ASSERT_TRUE(user); |
| 826 | 829 |
| 827 LoginUser(kTestUser1); | 830 LoginUser(kTestUser1); |
| 828 base::RunLoop().RunUntilIdle(); | 831 base::RunLoop().RunUntilIdle(); |
| 829 | 832 |
| 830 policy::CloudPolicyStore* store = GetStoreForUser(user); | 833 policy::CloudPolicyStore* store = GetStoreForUser(user); |
| 831 ASSERT_TRUE(store); | 834 ASSERT_TRUE(store); |
| 832 | 835 |
| 833 // Set policy. Verify that the policy-provided user image is downloaded, set | 836 // Set policy. Verify that the policy-provided user image is downloaded, set |
| 834 // and persisted. | 837 // and persisted. |
| 835 user_policy_.payload().mutable_useravatarimage()->set_value( | 838 user_policy_.payload().mutable_useravatarimage()->set_value( |
| 836 ConstructPolicy(test::kUserAvatarImage2RelativePath)); | 839 ConstructPolicy(test::kUserAvatarImage2RelativePath)); |
| 837 user_policy_.Build(); | 840 user_policy_.Build(); |
| 838 fake_session_manager_client_->set_user_policy(kTestUser1, | 841 fake_session_manager_client_->set_user_policy(kTestUser1, |
| 839 user_policy_.GetBlob()); | 842 user_policy_.GetBlob()); |
| 840 run_loop_.reset(new base::RunLoop); | 843 run_loop_.reset(new base::RunLoop); |
| 841 store->Load(); | 844 store->Load(); |
| 842 run_loop_->Run(); | 845 run_loop_->Run(); |
| 843 | 846 |
| 844 EXPECT_FALSE(user->HasDefaultImage()); | 847 EXPECT_FALSE(user->HasDefaultImage()); |
| 845 EXPECT_EQ(User::kExternalImageIndex, user->image_index()); | 848 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); |
| 846 EXPECT_TRUE(test::AreImagesEqual(*policy_image_, user->GetImage())); | 849 EXPECT_TRUE(test::AreImagesEqual(*policy_image_, user->GetImage())); |
| 847 ExpectNewUserImageInfo(kTestUser1, | 850 ExpectNewUserImageInfo(kTestUser1, |
| 848 User::kExternalImageIndex, | 851 user_manager::User::USER_IMAGE_EXTERNAL, |
| 849 GetUserImagePath(kTestUser1, "jpg")); | 852 GetUserImagePath(kTestUser1, "jpg")); |
| 850 | 853 |
| 851 scoped_ptr<gfx::ImageSkia> saved_image = | 854 scoped_ptr<gfx::ImageSkia> saved_image = |
| 852 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); | 855 test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); |
| 853 ASSERT_TRUE(saved_image); | 856 ASSERT_TRUE(saved_image); |
| 854 | 857 |
| 855 // Check image dimensions. Images can't be compared since JPEG is lossy. | 858 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 856 EXPECT_EQ(policy_image_->width(), saved_image->width()); | 859 EXPECT_EQ(policy_image_->width(), saved_image->width()); |
| 857 EXPECT_EQ(policy_image_->height(), saved_image->height()); | 860 EXPECT_EQ(policy_image_->height(), saved_image->height()); |
| 858 | 861 |
| 859 // Choose a different user image. Verify that the user image does not change | 862 // Choose a different user image. Verify that the user image does not change |
| 860 // as policy takes precedence. | 863 // as policy takes precedence. |
| 861 UserImageManager* user_image_manager = | 864 UserImageManager* user_image_manager = |
| 862 UserManager::Get()->GetUserImageManager(kTestUser1); | 865 UserManager::Get()->GetUserImageManager(kTestUser1); |
| 863 user_image_manager->SaveUserDefaultImageIndex( | 866 user_image_manager->SaveUserDefaultImageIndex( |
| 864 user_manager::kFirstDefaultImageIndex); | 867 user_manager::kFirstDefaultImageIndex); |
| 865 | 868 |
| 866 EXPECT_FALSE(user->HasDefaultImage()); | 869 EXPECT_FALSE(user->HasDefaultImage()); |
| 867 EXPECT_EQ(User::kExternalImageIndex, user->image_index()); | 870 EXPECT_EQ(user_manager::User::USER_IMAGE_EXTERNAL, user->image_index()); |
| 868 EXPECT_TRUE(test::AreImagesEqual(*policy_image_, user->GetImage())); | 871 EXPECT_TRUE(test::AreImagesEqual(*policy_image_, user->GetImage())); |
| 869 ExpectNewUserImageInfo(kTestUser1, | 872 ExpectNewUserImageInfo(kTestUser1, |
| 870 User::kExternalImageIndex, | 873 user_manager::User::USER_IMAGE_EXTERNAL, |
| 871 GetUserImagePath(kTestUser1, "jpg")); | 874 GetUserImagePath(kTestUser1, "jpg")); |
| 872 | 875 |
| 873 saved_image = test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); | 876 saved_image = test::ImageLoader(GetUserImagePath(kTestUser1, "jpg")).Load(); |
| 874 ASSERT_TRUE(saved_image); | 877 ASSERT_TRUE(saved_image); |
| 875 | 878 |
| 876 // Check image dimensions. Images can't be compared since JPEG is lossy. | 879 // Check image dimensions. Images can't be compared since JPEG is lossy. |
| 877 EXPECT_EQ(policy_image_->width(), saved_image->width()); | 880 EXPECT_EQ(policy_image_->width(), saved_image->width()); |
| 878 EXPECT_EQ(policy_image_->height(), saved_image->height()); | 881 EXPECT_EQ(policy_image_->height(), saved_image->height()); |
| 879 } | 882 } |
| 880 | 883 |
| 881 } // namespace chromeos | 884 } // namespace chromeos |
| OLD | NEW |