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

Side by Side Diff: chrome/browser/chromeos/arc/arc_session_manager_browsertest.cc

Issue 2639483003: Avoid leaving dangling pointers to User in ProfileHelper. (Closed)
Patch Set: Created 3 years, 11 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <memory> 5 #include <memory>
6 #include <string> 6 #include <string>
7 7
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/files/scoped_temp_dir.h" 10 #include "base/files/scoped_temp_dir.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 54
55 namespace { 55 namespace {
56 56
57 constexpr char kRefreshToken[] = "fake-refresh-token"; 57 constexpr char kRefreshToken[] = "fake-refresh-token";
58 // Set managed auth token for Android managed accounts. 58 // Set managed auth token for Android managed accounts.
59 constexpr char kManagedAuthToken[] = "managed-auth-token"; 59 constexpr char kManagedAuthToken[] = "managed-auth-token";
60 // Set unmanaged auth token for other Android unmanaged accounts. 60 // Set unmanaged auth token for other Android unmanaged accounts.
61 constexpr char kUnmanagedAuthToken[] = "unmanaged-auth-token"; 61 constexpr char kUnmanagedAuthToken[] = "unmanaged-auth-token";
62 constexpr char kWellKnownConsumerName[] = "test@gmail.com"; 62 constexpr char kWellKnownConsumerName[] = "test@gmail.com";
63 constexpr char kFakeUserName[] = "test@example.com"; 63 constexpr char kFakeUserName[] = "test@example.com";
64 constexpr char kFakeGaiaId[] = "1234567890";
64 65
65 } // namespace 66 } // namespace
66 67
67 namespace arc { 68 namespace arc {
68 69
69 // Observer of ARC bridge shutdown. 70 // Observer of ARC bridge shutdown.
70 class ArcSessionManagerShutdownObserver : public ArcSessionManager::Observer { 71 class ArcSessionManagerShutdownObserver : public ArcSessionManager::Observer {
71 public: 72 public:
72 ArcSessionManagerShutdownObserver() { 73 ArcSessionManagerShutdownObserver() {
73 ArcSessionManager::Get()->AddObserver(this); 74 ArcSessionManager::Get()->AddObserver(this);
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 BuildFakeProfileOAuth2TokenService); 177 BuildFakeProfileOAuth2TokenService);
177 profile_ = profile_builder.Build(); 178 profile_ = profile_builder.Build();
178 token_service_ = static_cast<FakeProfileOAuth2TokenService*>( 179 token_service_ = static_cast<FakeProfileOAuth2TokenService*>(
179 ProfileOAuth2TokenServiceFactory::GetForProfile(profile())); 180 ProfileOAuth2TokenServiceFactory::GetForProfile(profile()));
180 token_service_->UpdateCredentials("", kRefreshToken); 181 token_service_->UpdateCredentials("", kRefreshToken);
181 182
182 profile()->GetPrefs()->SetBoolean(prefs::kArcSignedIn, true); 183 profile()->GetPrefs()->SetBoolean(prefs::kArcSignedIn, true);
183 profile()->GetPrefs()->SetBoolean(prefs::kArcTermsAccepted, true); 184 profile()->GetPrefs()->SetBoolean(prefs::kArcTermsAccepted, true);
184 185
185 const AccountId account_id( 186 const AccountId account_id(
186 AccountId::FromUserEmailGaiaId(kFakeUserName, "1234567890")); 187 AccountId::FromUserEmailGaiaId(kFakeUserName, kFakeGaiaId));
187 GetFakeUserManager()->AddUser(account_id); 188 GetFakeUserManager()->AddUser(account_id);
188 GetFakeUserManager()->LoginUser(account_id); 189 GetFakeUserManager()->LoginUser(account_id);
189 190
190 // Set up ARC for test profile. 191 // Set up ARC for test profile.
191 ArcServiceLauncher::Get()->OnPrimaryUserProfilePrepared(profile()); 192 ArcServiceLauncher::Get()->OnPrimaryUserProfilePrepared(profile());
192 } 193 }
193 194
194 void TearDownOnMainThread() override { 195 void TearDownOnMainThread() override {
196 // Explicitly removing the user is required; otherwise ProfileHelper keeps
197 // a dangling pointer to the User.
198 // TODO(nya): Consider removing all users from ProfileHelper in the
199 // destructor of FakeChromeUserManager.
200 const AccountId account_id(
201 AccountId::FromUserEmailGaiaId(kFakeUserName, kFakeGaiaId));
202 GetFakeUserManager()->RemoveUserFromList(account_id);
195 ArcSessionManager::Get()->Shutdown(); 203 ArcSessionManager::Get()->Shutdown();
196 ArcServiceManager::Get()->Shutdown(); 204 ArcServiceManager::Get()->Shutdown();
197 profile_.reset(); 205 profile_.reset();
198 user_manager_enabler_.reset(); 206 user_manager_enabler_.reset();
199 test_server_.reset(); 207 test_server_.reset();
200 } 208 }
201 209
202 chromeos::FakeChromeUserManager* GetFakeUserManager() const { 210 chromeos::FakeChromeUserManager* GetFakeUserManager() const {
203 return static_cast<chromeos::FakeChromeUserManager*>( 211 return static_cast<chromeos::FakeChromeUserManager*>(
204 user_manager::UserManager::Get()); 212 user_manager::UserManager::Get());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 base::Time::Max()); 267 base::Time::Max());
260 ArcSessionManagerShutdownObserver().Wait(); 268 ArcSessionManagerShutdownObserver().Wait();
261 ASSERT_EQ(ArcSessionManager::State::REMOVING_DATA_DIR, 269 ASSERT_EQ(ArcSessionManager::State::REMOVING_DATA_DIR,
262 ArcSessionManager::Get()->state()); 270 ArcSessionManager::Get()->state());
263 ArcSessionManagerDataRemovedObserver().Wait(); 271 ArcSessionManagerDataRemovedObserver().Wait();
264 ASSERT_EQ(ArcSessionManager::State::STOPPED, 272 ASSERT_EQ(ArcSessionManager::State::STOPPED,
265 ArcSessionManager::Get()->state()); 273 ArcSessionManager::Get()->state());
266 } 274 }
267 275
268 } // namespace arc 276 } // namespace arc
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698