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

Side by Side Diff: chrome/browser/sync/test/integration/sync_arc_package_helper.cc

Issue 2711033002: Fix Arc integration test. (Closed)
Patch Set: Rebase Created 3 years, 10 months 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/sync/test/integration/sync_arc_package_helper.h" 5 #include "chrome/browser/sync/test/integration/sync_arc_package_helper.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
11 #include "base/run_loop.h" 11 #include "base/run_loop.h"
12 #include "base/strings/string_number_conversions.h" 12 #include "base/strings/string_number_conversions.h"
13 #include "chrome/browser/chromeos/arc/arc_session_manager.h"
14 #include "chrome/browser/chromeos/arc/arc_util.h" 13 #include "chrome/browser/chromeos/arc/arc_util.h"
15 #include "chrome/browser/chromeos/login/users/fake_chrome_user_manager.h"
16 #include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h"
17 #include "chrome/browser/chromeos/profiles/profile_helper.h"
18 #include "chrome/browser/profiles/profile.h" 14 #include "chrome/browser/profiles/profile.h"
19 #include "chrome/browser/sync/test/integration/sync_datatype_helper.h" 15 #include "chrome/browser/sync/test/integration/sync_datatype_helper.h"
20 #include "chrome/browser/sync/test/integration/sync_test.h" 16 #include "chrome/browser/sync/test/integration/sync_test.h"
21 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h" 17 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs.h"
22 #include "chrome/browser/ui/app_list/arc/arc_app_list_prefs_factory.h"
23 #include "chrome/browser/ui/app_list/arc/arc_package_syncable_service.h" 18 #include "chrome/browser/ui/app_list/arc/arc_package_syncable_service.h"
24 #include "chromeos/chromeos_switches.h" 19 #include "chromeos/chromeos_switches.h"
25 #include "components/arc/arc_bridge_service.h"
26 #include "components/arc/test/fake_app_instance.h" 20 #include "components/arc/test/fake_app_instance.h"
27 21
28 namespace arc { 22 namespace arc {
29 23
30 namespace { 24 namespace {
31 25
32 std::string GetTestPackageName(size_t id) { 26 std::string GetTestPackageName(size_t id) {
33 return "testarcpackage" + base::SizeTToString(id); 27 return "testarcpackage" + base::SizeTToString(id);
34 } 28 }
35 29
36 chromeos::FakeChromeUserManager* GetUserManager() {
37 return static_cast<chromeos::FakeChromeUserManager*>(
38 user_manager::UserManager::Get());
39 }
40
41 const user_manager::User* CreateUserAndLogin(Profile* profile, size_t id) {
42 std::string gaia_id = "1234567890" + base::SizeTToString(id);
43 const AccountId account_id(
44 AccountId::FromUserEmailGaiaId(profile->GetProfileUserName(), gaia_id));
45 const user_manager::User* user = GetUserManager()->AddUser(account_id);
46 GetUserManager()->LoginUser(account_id);
47 return user;
48 }
49
50 } // namespace 30 } // namespace
51 31
52 SyncArcPackageHelper* SyncArcPackageHelper::GetInstance() { 32 SyncArcPackageHelper* SyncArcPackageHelper::GetInstance() {
53 SyncArcPackageHelper* instance = base::Singleton<SyncArcPackageHelper>::get(); 33 SyncArcPackageHelper* instance = base::Singleton<SyncArcPackageHelper>::get();
54 DCHECK(sync_datatype_helper::test()); 34 DCHECK(sync_datatype_helper::test());
55 instance->SetupTest(sync_datatype_helper::test()); 35 instance->SetupTest(sync_datatype_helper::test());
56 return instance; 36 return instance;
57 } 37 }
58 38
59 SyncArcPackageHelper::SyncArcPackageHelper() 39 SyncArcPackageHelper::SyncArcPackageHelper()
60 : test_(nullptr), setup_completed_(false), user_manager_enabler_(nullptr) {} 40 : test_(nullptr), setup_completed_(false) {}
61 41
62 SyncArcPackageHelper::~SyncArcPackageHelper() {} 42 SyncArcPackageHelper::~SyncArcPackageHelper() {}
63 43
64 void SyncArcPackageHelper::SetupTest(SyncTest* test) { 44 void SyncArcPackageHelper::SetupTest(SyncTest* test) {
65 if (setup_completed_) { 45 if (setup_completed_) {
66 DCHECK_EQ(test, test_); 46 DCHECK_EQ(test, test_);
67 return; 47 return;
68 } 48 }
69 test_ = test; 49 test_ = test;
70 50
71 user_manager_enabler_ = base::MakeUnique<chromeos::ScopedUserManagerEnabler>( 51 SetArcAllowedForSyncTesting();
72 new chromeos::FakeChromeUserManager()); 52
73 ArcAppListPrefsFactory::SetFactoryForSyncTest();
74 size_t id = 0; 53 size_t id = 0;
75 for (auto* profile : test_->GetAllProfiles()) 54 for (auto* profile : test_->GetAllProfiles())
76 SetupArcService(profile, id++); 55 SetupArcService(profile, id++);
77 setup_completed_ = true; 56 setup_completed_ = true;
78 } 57 }
79 58
80 void SyncArcPackageHelper::CleanUp() {
81 ArcSessionManager::Get()->Shutdown();
82 user_manager_enabler_.reset();
83 }
84
85 void SyncArcPackageHelper::InstallPackageWithIndex(Profile* profile, 59 void SyncArcPackageHelper::InstallPackageWithIndex(Profile* profile,
86 size_t id) { 60 size_t id) {
87 std::string package_name = GetTestPackageName(id); 61 std::string package_name = GetTestPackageName(id);
88 62
89 mojom::ArcPackageInfo package; 63 mojom::ArcPackageInfo package;
90 package.package_name = package_name; 64 package.package_name = package_name;
91 package.package_version = id; 65 package.package_version = id;
92 package.last_backup_android_id = id; 66 package.last_backup_android_id = id;
93 package.last_backup_time = id; 67 package.last_backup_time = id;
94 package.sync = true; 68 package.sync = true;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 DVLOG(1) << "Profile2: " 111 DVLOG(1) << "Profile2: "
138 << ArcPackageSyncableService::Get(profiles.front()); 112 << ArcPackageSyncableService::Get(profiles.front());
139 return false; 113 return false;
140 } 114 }
141 } 115 }
142 return true; 116 return true;
143 } 117 }
144 118
145 void SyncArcPackageHelper::SetupArcService(Profile* profile, size_t id) { 119 void SyncArcPackageHelper::SetupArcService(Profile* profile, size_t id) {
146 DCHECK(profile); 120 DCHECK(profile);
147 const user_manager::User* user = CreateUserAndLogin(profile, id);
148 // Have the user-to-profile mapping ready to avoid using the real profile
149 // manager (which is null).
150 chromeos::ProfileHelper::Get()->SetUserToProfileMappingForTesting(user,
151 profile);
152
153 ArcSessionManager* arc_session_manager = ArcSessionManager::Get();
154 DCHECK(arc_session_manager);
155 ArcSessionManager::DisableUIForTesting();
156 arc_session_manager->OnPrimaryUserProfilePrepared(profile);
157 arc::SetArcPlayStoreEnabledForProfile(profile, true); 121 arc::SetArcPlayStoreEnabledForProfile(profile, true);
158 122
159 ArcAppListPrefs* arc_app_list_prefs = ArcAppListPrefs::Get(profile); 123 ArcAppListPrefs* arc_app_list_prefs = ArcAppListPrefs::Get(profile);
160 DCHECK(arc_app_list_prefs); 124 DCHECK(arc_app_list_prefs);
161
162 base::RunLoop run_loop; 125 base::RunLoop run_loop;
163 arc_app_list_prefs->SetDefaltAppsReadyCallback(run_loop.QuitClosure()); 126 arc_app_list_prefs->SetDefaltAppsReadyCallback(run_loop.QuitClosure());
164 run_loop.Run(); 127 run_loop.Run();
165 128
166 instance_map_[profile] = 129 instance_map_[profile] =
167 base::MakeUnique<FakeAppInstance>(arc_app_list_prefs); 130 base::MakeUnique<FakeAppInstance>(arc_app_list_prefs);
168 DCHECK(instance_map_[profile].get()); 131 DCHECK(instance_map_[profile].get());
132 arc_app_list_prefs->app_instance_holder()->SetInstance(nullptr);
169 arc_app_list_prefs->app_instance_holder()->SetInstance( 133 arc_app_list_prefs->app_instance_holder()->SetInstance(
170 instance_map_[profile].get()); 134 instance_map_[profile].get());
171 // OnPackageListRefreshed will be called when AppInstance is ready. 135 // OnPackageListRefreshed will be called when AppInstance is ready.
172 // For fakeAppInstance we use SendRefreshPackageList to make sure that 136 // For fakeAppInstance we use SendRefreshPackageList to make sure that
173 // OnPackageListRefreshed will be called. 137 // OnPackageListRefreshed will be called.
174 instance_map_[profile]->SendRefreshPackageList( 138 instance_map_[profile]->SendRefreshPackageList(
175 std::vector<arc::mojom::ArcPackageInfo>()); 139 std::vector<arc::mojom::ArcPackageInfo>());
176 } 140 }
177 141
178 void SyncArcPackageHelper::InstallPackage( 142 void SyncArcPackageHelper::InstallPackage(
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 if (package1_info->last_backup_android_id != 209 if (package1_info->last_backup_android_id !=
246 package2_info->last_backup_android_id) 210 package2_info->last_backup_android_id)
247 return false; 211 return false;
248 if (package1_info->last_backup_time != package2_info->last_backup_time) 212 if (package1_info->last_backup_time != package2_info->last_backup_time)
249 return false; 213 return false;
250 } 214 }
251 return true; 215 return true;
252 } 216 }
253 217
254 } // namespace arc 218 } // namespace arc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698