OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
86 Delegate* delegate) override { | 86 Delegate* delegate) override { |
87 // This is safe while all file operations are done on the FILE thread. | 87 // This is safe while all file operations are done on the FILE thread. |
88 BrowserThread::PostTask( | 88 BrowserThread::PostTask( |
89 BrowserThread::FILE, FROM_HERE, | 89 BrowserThread::FILE, FROM_HERE, |
90 base::Bind(base::IgnoreResult(&base::CreateDirectory), path)); | 90 base::Bind(base::IgnoreResult(&base::CreateDirectory), path)); |
91 | 91 |
92 return new TestingProfile(path, this); | 92 return new TestingProfile(path, this); |
93 } | 93 } |
94 }; | 94 }; |
95 | 95 |
96 void ExpectNullProfile(Profile* profile) { | |
Bernhard Bauer
2016/03/14 19:05:34
Can you make this take an additional Closure to ru
Miguel Garcia
2016/03/17 20:04:07
I will look into this and fix it before submitting
| |
97 EXPECT_EQ(nullptr, profile); | |
98 } | |
99 | |
100 void ExpectProfileWithName(const std::string& profile_name, | |
101 bool incognito, | |
102 Profile* profile) { | |
103 EXPECT_NE(nullptr, profile); | |
104 EXPECT_EQ(incognito, profile->IsOffTheRecord()); | |
105 if (!incognito) { | |
Bernhard Bauer
2016/03/14 19:05:34
For incognito profiles, you could verify the name
Miguel Garcia
2016/03/17 20:04:07
Good idea!
| |
106 #if defined(OS_WIN) | |
107 EXPECT_EQ(base::ASCIIToUTF16(profile_name), | |
Bernhard Bauer
2016/03/14 19:05:34
Alternatively, use FilePath().AppendASCII(profile_
Miguel Garcia
2016/03/17 20:04:07
Agreed. Done
| |
108 profile->GetPath().BaseName().value()); | |
109 #else | |
110 EXPECT_EQ(profile_name, profile->GetPath().BaseName().value()); | |
111 #endif | |
112 } | |
113 } | |
114 | |
96 } // namespace | 115 } // namespace |
97 | 116 |
98 class ProfileManagerTest : public testing::Test { | 117 class ProfileManagerTest : public testing::Test { |
99 protected: | 118 protected: |
100 class MockObserver { | 119 class MockObserver { |
101 public: | 120 public: |
102 MOCK_METHOD2(OnProfileCreated, | 121 MOCK_METHOD2(OnProfileCreated, |
103 void(Profile* profile, Profile::CreateStatus status)); | 122 void(Profile* profile, Profile::CreateStatus status)); |
104 }; | 123 }; |
105 | 124 |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
286 | 305 |
287 // Make sure any pending tasks run before we destroy the profiles. | 306 // Make sure any pending tasks run before we destroy the profiles. |
288 base::RunLoop().RunUntilIdle(); | 307 base::RunLoop().RunUntilIdle(); |
289 | 308 |
290 TestingBrowserProcess::GetGlobal()->SetProfileManager(NULL); | 309 TestingBrowserProcess::GetGlobal()->SetProfileManager(NULL); |
291 | 310 |
292 // Make sure history cleans up correctly. | 311 // Make sure history cleans up correctly. |
293 base::RunLoop().RunUntilIdle(); | 312 base::RunLoop().RunUntilIdle(); |
294 } | 313 } |
295 | 314 |
315 TEST_F(ProfileManagerTest, LoadProfileDoesNotExist) { | |
Bernhard Bauer
2016/03/14 19:05:34
Nit: "LoadNonExistingProfile" (and "LoadExistingPr
Miguel Garcia
2016/03/17 20:04:07
Done.
| |
316 const std::string profile_name = "NonExistingProfile"; | |
317 | |
318 ProfileManager* profile_manager = g_browser_process->profile_manager(); | |
319 profile_manager->LoadProfile(profile_name, false /* incognito */, | |
320 base::Bind(&ExpectNullProfile)); | |
321 base::RunLoop().RunUntilIdle(); | |
322 profile_manager->LoadProfile(profile_name, true /* incognito */, | |
323 base::Bind(&ExpectNullProfile)); | |
324 base::RunLoop().RunUntilIdle(); | |
325 } | |
326 | |
327 TEST_F(ProfileManagerTest, LoadProfileExisting) { | |
328 const std::string profile_name = "MyProfile"; | |
329 const std::string other_name = "SomeOtherProfile"; | |
330 MockObserver mock_observer1; | |
331 EXPECT_CALL(mock_observer1, OnProfileCreated(SameNotNull(), NotFail())) | |
332 .Times(testing::AtLeast(1)); | |
333 | |
334 ProfileManager* profile_manager = g_browser_process->profile_manager(); | |
335 CreateProfileAsync(profile_manager, profile_name, false, &mock_observer1); | |
336 | |
337 // Make sure a real profile is created before continuing. | |
338 base::RunLoop().RunUntilIdle(); | |
339 | |
340 bool incognito = false; | |
341 profile_manager->LoadProfile( | |
342 profile_name, incognito, | |
343 base::Bind(&ExpectProfileWithName, profile_name, incognito)); | |
344 | |
345 incognito = true; | |
346 profile_manager->LoadProfile( | |
347 profile_name, incognito, | |
348 base::Bind(&ExpectProfileWithName, profile_name, incognito)); | |
349 | |
350 // Loading some other non existing profile should still return null. | |
351 profile_manager->LoadProfile(other_name, false, | |
352 base::Bind(&ExpectNullProfile)); | |
353 base::RunLoop().RunUntilIdle(); | |
354 } | |
355 | |
296 TEST_F(ProfileManagerTest, CreateProfileAsyncMultipleRequests) { | 356 TEST_F(ProfileManagerTest, CreateProfileAsyncMultipleRequests) { |
297 g_created_profile = NULL; | 357 g_created_profile = NULL; |
298 | 358 |
299 MockObserver mock_observer1; | 359 MockObserver mock_observer1; |
300 EXPECT_CALL(mock_observer1, OnProfileCreated( | 360 EXPECT_CALL(mock_observer1, OnProfileCreated( |
301 SameNotNull(), NotFail())).Times(testing::AtLeast(1)); | 361 SameNotNull(), NotFail())).Times(testing::AtLeast(1)); |
302 MockObserver mock_observer2; | 362 MockObserver mock_observer2; |
303 EXPECT_CALL(mock_observer2, OnProfileCreated( | 363 EXPECT_CALL(mock_observer2, OnProfileCreated( |
304 SameNotNull(), NotFail())).Times(testing::AtLeast(1)); | 364 SameNotNull(), NotFail())).Times(testing::AtLeast(1)); |
305 MockObserver mock_observer3; | 365 MockObserver mock_observer3; |
(...skipping 1033 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1339 dest_path2.BaseName().MaybeAsASCII()); | 1399 dest_path2.BaseName().MaybeAsASCII()); |
1340 profile_manager->ScheduleProfileForDeletion(dest_path2, | 1400 profile_manager->ScheduleProfileForDeletion(dest_path2, |
1341 ProfileManager::CreateCallback()); | 1401 ProfileManager::CreateCallback()); |
1342 // Spin the message loop so that all the callbacks can finish running. | 1402 // Spin the message loop so that all the callbacks can finish running. |
1343 base::RunLoop().RunUntilIdle(); | 1403 base::RunLoop().RunUntilIdle(); |
1344 | 1404 |
1345 EXPECT_EQ(dest_path3, profile_manager->GetLastUsedProfile()->GetPath()); | 1405 EXPECT_EQ(dest_path3, profile_manager->GetLastUsedProfile()->GetPath()); |
1346 EXPECT_EQ(profile_name3, local_state->GetString(prefs::kProfileLastUsed)); | 1406 EXPECT_EQ(profile_name3, local_state->GetString(prefs::kProfileLastUsed)); |
1347 } | 1407 } |
1348 #endif // !defined(OS_MACOSX) | 1408 #endif // !defined(OS_MACOSX) |
OLD | NEW |