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

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

Issue 2568973002: chromeos: Replace user image notifications with observer (Closed)
Patch Set: rebase Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h" 5 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <map> 9 #include <map>
10 #include <memory> 10 #include <memory>
11 #include <string> 11 #include <string>
12 #include <vector> 12 #include <vector>
13 13
14 #include "base/command_line.h" 14 #include "base/command_line.h"
15 #include "base/compiler_specific.h" 15 #include "base/compiler_specific.h"
16 #include "base/files/file_path.h" 16 #include "base/files/file_path.h"
17 #include "base/files/file_util.h" 17 #include "base/files/file_util.h"
18 #include "base/json/json_writer.h" 18 #include "base/json/json_writer.h"
19 #include "base/macros.h" 19 #include "base/macros.h"
20 #include "base/memory/ptr_util.h"
20 #include "base/memory/ref_counted.h" 21 #include "base/memory/ref_counted.h"
21 #include "base/memory/ref_counted_memory.h" 22 #include "base/memory/ref_counted_memory.h"
22 #include "base/path_service.h" 23 #include "base/path_service.h"
23 #include "base/run_loop.h" 24 #include "base/run_loop.h"
24 #include "base/threading/thread_task_runner_handle.h" 25 #include "base/threading/thread_task_runner_handle.h"
25 #include "base/time/time.h" 26 #include "base/time/time.h"
26 #include "base/values.h" 27 #include "base/values.h"
27 #include "chrome/browser/browser_process.h" 28 #include "chrome/browser/browser_process.h"
28 #include "chrome/browser/chrome_notification_types.h"
29 #include "chrome/browser/chromeos/login/login_manager_test.h" 29 #include "chrome/browser/chromeos/login/login_manager_test.h"
30 #include "chrome/browser/chromeos/login/startup_utils.h" 30 #include "chrome/browser/chromeos/login/startup_utils.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/chrome_user_manager.h" 33 #include "chrome/browser/chromeos/login/users/chrome_user_manager.h"
34 #include "chrome/browser/chromeos/login/users/default_user_image/default_user_im ages.h" 34 #include "chrome/browser/chromeos/login/users/default_user_image/default_user_im ages.h"
35 #include "chrome/browser/chromeos/login/users/mock_user_manager.h" 35 #include "chrome/browser/chromeos/login/users/mock_user_manager.h"
36 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" 36 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h"
37 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" 37 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.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"
(...skipping 16 matching lines...) Expand all
55 #include "components/policy/core/common/cloud/cloud_policy_core.h" 55 #include "components/policy/core/common/cloud/cloud_policy_core.h"
56 #include "components/policy/core/common/cloud/cloud_policy_store.h" 56 #include "components/policy/core/common/cloud/cloud_policy_store.h"
57 #include "components/policy/core/common/cloud/policy_builder.h" 57 #include "components/policy/core/common/cloud/policy_builder.h"
58 #include "components/policy/proto/cloud_policy.pb.h" 58 #include "components/policy/proto/cloud_policy.pb.h"
59 #include "components/prefs/pref_change_registrar.h" 59 #include "components/prefs/pref_change_registrar.h"
60 #include "components/prefs/pref_service.h" 60 #include "components/prefs/pref_service.h"
61 #include "components/prefs/scoped_user_pref_update.h" 61 #include "components/prefs/scoped_user_pref_update.h"
62 #include "components/user_manager/user.h" 62 #include "components/user_manager/user.h"
63 #include "components/user_manager/user_image/user_image.h" 63 #include "components/user_manager/user_image/user_image.h"
64 #include "components/user_manager/user_manager.h" 64 #include "components/user_manager/user_manager.h"
65 #include "content/public/browser/notification_service.h"
66 #include "content/public/browser/notification_source.h"
67 #include "content/public/test/test_utils.h"
68 #include "crypto/rsa_private_key.h" 65 #include "crypto/rsa_private_key.h"
69 #include "google_apis/gaia/gaia_oauth_client.h" 66 #include "google_apis/gaia/gaia_oauth_client.h"
70 #include "google_apis/gaia/oauth2_token_service.h" 67 #include "google_apis/gaia/oauth2_token_service.h"
71 #include "net/test/embedded_test_server/embedded_test_server.h" 68 #include "net/test/embedded_test_server/embedded_test_server.h"
72 #include "net/url_request/test_url_fetcher_factory.h" 69 #include "net/url_request/test_url_fetcher_factory.h"
73 #include "net/url_request/url_fetcher_delegate.h" 70 #include "net/url_request/url_fetcher_delegate.h"
74 #include "net/url_request/url_request_status.h" 71 #include "net/url_request/url_request_status.h"
75 #include "testing/gtest/include/gtest/gtest.h" 72 #include "testing/gtest/include/gtest/gtest.h"
76 #include "third_party/skia/include/core/SkBitmap.h" 73 #include "third_party/skia/include/core/SkBitmap.h"
77 #include "ui/base/layout.h" 74 #include "ui/base/layout.h"
(...skipping 19 matching lines...) Expand all
97 } 94 }
98 policy::UserCloudPolicyManagerChromeOS* policy_manager = 95 policy::UserCloudPolicyManagerChromeOS* policy_manager =
99 policy::UserCloudPolicyManagerFactoryChromeOS::GetForProfile(profile); 96 policy::UserCloudPolicyManagerFactoryChromeOS::GetForProfile(profile);
100 if (!policy_manager) { 97 if (!policy_manager) {
101 ADD_FAILURE(); 98 ADD_FAILURE();
102 return NULL; 99 return NULL;
103 } 100 }
104 return policy_manager->core()->store(); 101 return policy_manager->core()->store();
105 } 102 }
106 103
104 class UserImageChangeWaiter : public user_manager::UserManager::Observer {
105 public:
106 UserImageChangeWaiter() {}
107 ~UserImageChangeWaiter() override {}
108
109 void Wait() {
110 user_manager::UserManager::Get()->AddObserver(this);
111 run_loop_ = base::MakeUnique<base::RunLoop>();
112 run_loop_->Run();
113 user_manager::UserManager::Get()->RemoveObserver(this);
114 }
115
116 // user_manager::UserManager::Observer:
117 void OnUserImageChanged(const user_manager::User& user) override {
118 if (run_loop_)
119 run_loop_->Quit();
120 }
121
122 private:
123 std::unique_ptr<base::RunLoop> run_loop_;
124
125 DISALLOW_COPY_AND_ASSIGN(UserImageChangeWaiter);
126 };
127
107 } // namespace 128 } // namespace
108 129
109 class UserImageManagerTest : public LoginManagerTest, 130 class UserImageManagerTest : public LoginManagerTest,
110 public user_manager::UserManager::Observer { 131 public user_manager::UserManager::Observer {
111 protected: 132 protected:
112 UserImageManagerTest() : LoginManagerTest(true) {} 133 UserImageManagerTest() : LoginManagerTest(true) {}
113 134
114 // LoginManagerTest overrides: 135 // LoginManagerTest overrides:
115 void SetUpInProcessBrowserTestFixture() override { 136 void SetUpInProcessBrowserTestFixture() override {
116 // Set up fake install attributes. 137 // Set up fake install attributes.
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 run_loop_->Run(); 331 run_loop_->Run();
311 } 332 }
312 333
313 // Ensures that the user image in JPEG format is loaded correctly. 334 // Ensures that the user image in JPEG format is loaded correctly.
314 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveAndLoadUserImage) { 335 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, SaveAndLoadUserImage) {
315 user_manager::UserManager::Get()->GetUsers(); // Load users. 336 user_manager::UserManager::Get()->GetUsers(); // Load users.
316 const user_manager::User* user = 337 const user_manager::User* user =
317 user_manager::UserManager::Get()->FindUser(test_account_id1_); 338 user_manager::UserManager::Get()->FindUser(test_account_id1_);
318 ASSERT_TRUE(user); 339 ASSERT_TRUE(user);
319 // Wait for image load. 340 // Wait for image load.
320 if (user->image_index() == user_manager::User::USER_IMAGE_INVALID) { 341 if (user->image_index() == user_manager::User::USER_IMAGE_INVALID)
321 content::WindowedNotificationObserver( 342 UserImageChangeWaiter().Wait();
322 chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED,
323 content::NotificationService::AllSources()).Wait();
324 }
325 // The image should be in the safe format. 343 // The image should be in the safe format.
326 EXPECT_TRUE(user->image_is_safe_format()); 344 EXPECT_TRUE(user->image_is_safe_format());
327 // Check image dimensions. Images can't be compared since JPEG is lossy. 345 // Check image dimensions. Images can't be compared since JPEG is lossy.
328 const gfx::ImageSkia& saved_image = default_user_image::GetDefaultImage( 346 const gfx::ImageSkia& saved_image = default_user_image::GetDefaultImage(
329 default_user_image::kFirstDefaultImageIndex); 347 default_user_image::kFirstDefaultImageIndex);
330 EXPECT_EQ(saved_image.width(), user->GetImage().width()); 348 EXPECT_EQ(saved_image.width(), user->GetImage().width());
331 EXPECT_EQ(saved_image.height(), user->GetImage().height()); 349 EXPECT_EQ(saved_image.height(), user->GetImage().height());
332 } 350 }
333 351
334 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveUserDefaultImageIndex) { 352 IN_PROC_BROWSER_TEST_F(UserImageManagerTest, PRE_SaveUserDefaultImageIndex) {
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 saved_image = 872 saved_image =
855 test::ImageLoader(GetUserImagePath(enterprise_account_id_, "jpg")).Load(); 873 test::ImageLoader(GetUserImagePath(enterprise_account_id_, "jpg")).Load();
856 ASSERT_TRUE(saved_image); 874 ASSERT_TRUE(saved_image);
857 875
858 // Check image dimensions. Images can't be compared since JPEG is lossy. 876 // Check image dimensions. Images can't be compared since JPEG is lossy.
859 EXPECT_EQ(policy_image_->width(), saved_image->width()); 877 EXPECT_EQ(policy_image_->width(), saved_image->width());
860 EXPECT_EQ(policy_image_->height(), saved_image->height()); 878 EXPECT_EQ(policy_image_->height(), saved_image->height());
861 } 879 }
862 880
863 } // namespace chromeos 881 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698