| 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 <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 #endif | 47 #endif |
| 48 | 48 |
| 49 using content::BrowserThread; | 49 using content::BrowserThread; |
| 50 | 50 |
| 51 namespace { | 51 namespace { |
| 52 | 52 |
| 53 // This global variable is used to check that value returned to different | 53 // This global variable is used to check that value returned to different |
| 54 // observers is the same. | 54 // observers is the same. |
| 55 Profile* g_created_profile; | 55 Profile* g_created_profile; |
| 56 | 56 |
| 57 } // namespace | 57 class UnittestProfileManager : public ::ProfileManagerWithoutInit { |
| 58 | |
| 59 namespace testing { | |
| 60 | |
| 61 class ProfileManager : public ::ProfileManagerWithoutInit { | |
| 62 public: | 58 public: |
| 63 explicit ProfileManager(const base::FilePath& user_data_dir) | 59 explicit UnittestProfileManager(const base::FilePath& user_data_dir) |
| 64 : ::ProfileManagerWithoutInit(user_data_dir) {} | 60 : ::ProfileManagerWithoutInit(user_data_dir) {} |
| 65 | 61 |
| 66 protected: | 62 protected: |
| 67 virtual Profile* CreateProfileHelper( | 63 virtual Profile* CreateProfileHelper( |
| 68 const base::FilePath& file_path) OVERRIDE { | 64 const base::FilePath& file_path) OVERRIDE { |
| 69 if (!base::PathExists(file_path)) { | 65 if (!base::PathExists(file_path)) { |
| 70 if (!file_util::CreateDirectory(file_path)) | 66 if (!file_util::CreateDirectory(file_path)) |
| 71 return NULL; | 67 return NULL; |
| 72 } | 68 } |
| 73 return new TestingProfile(file_path, NULL); | 69 return new TestingProfile(file_path, NULL); |
| 74 } | 70 } |
| 75 | 71 |
| 76 virtual Profile* CreateProfileAsyncHelper(const base::FilePath& path, | 72 virtual Profile* CreateProfileAsyncHelper(const base::FilePath& path, |
| 77 Delegate* delegate) OVERRIDE { | 73 Delegate* delegate) OVERRIDE { |
| 78 // This is safe while all file operations are done on the FILE thread. | 74 // This is safe while all file operations are done on the FILE thread. |
| 79 BrowserThread::PostTask( | 75 BrowserThread::PostTask( |
| 80 BrowserThread::FILE, FROM_HERE, | 76 BrowserThread::FILE, FROM_HERE, |
| 81 base::Bind(base::IgnoreResult(&file_util::CreateDirectory), path)); | 77 base::Bind(base::IgnoreResult(&file_util::CreateDirectory), path)); |
| 82 | 78 |
| 83 return new TestingProfile(path, this); | 79 return new TestingProfile(path, this); |
| 84 } | 80 } |
| 85 }; | 81 }; |
| 86 | 82 |
| 87 } // namespace testing | 83 } // namespace |
| 88 | 84 |
| 89 class ProfileManagerTest : public testing::Test { | 85 class ProfileManagerTest : public testing::Test { |
| 90 protected: | 86 protected: |
| 91 class MockObserver { | 87 class MockObserver { |
| 92 public: | 88 public: |
| 93 MOCK_METHOD2(OnProfileCreated, | 89 MOCK_METHOD2(OnProfileCreated, |
| 94 void(Profile* profile, Profile::CreateStatus status)); | 90 void(Profile* profile, Profile::CreateStatus status)); |
| 95 }; | 91 }; |
| 96 | 92 |
| 97 ProfileManagerTest() | 93 ProfileManagerTest() |
| 98 : local_state_(TestingBrowserProcess::GetGlobal()) { | 94 : local_state_(TestingBrowserProcess::GetGlobal()) { |
| 99 } | 95 } |
| 100 | 96 |
| 101 virtual void SetUp() { | 97 virtual void SetUp() { |
| 102 // Create a new temporary directory, and store the path | 98 // Create a new temporary directory, and store the path |
| 103 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 99 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
| 104 TestingBrowserProcess::GetGlobal()->SetProfileManager( | 100 TestingBrowserProcess::GetGlobal()->SetProfileManager( |
| 105 new testing::ProfileManager(temp_dir_.path())); | 101 new UnittestProfileManager(temp_dir_.path())); |
| 106 | 102 |
| 107 #if defined(OS_CHROMEOS) | 103 #if defined(OS_CHROMEOS) |
| 108 CommandLine* cl = CommandLine::ForCurrentProcess(); | 104 CommandLine* cl = CommandLine::ForCurrentProcess(); |
| 109 cl->AppendSwitch(switches::kTestType); | 105 cl->AppendSwitch(switches::kTestType); |
| 110 #endif | 106 #endif |
| 111 } | 107 } |
| 112 | 108 |
| 113 virtual void TearDown() { | 109 virtual void TearDown() { |
| 114 TestingBrowserProcess::GetGlobal()->SetProfileManager(NULL); | 110 TestingBrowserProcess::GetGlobal()->SetProfileManager(NULL); |
| 115 base::RunLoop().RunUntilIdle(); | 111 base::RunLoop().RunUntilIdle(); |
| (...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 | 406 |
| 411 Profile* profile = profile_manager->GetLastUsedProfileAllowedByPolicy(); | 407 Profile* profile = profile_manager->GetLastUsedProfileAllowedByPolicy(); |
| 412 ASSERT_TRUE(profile); | 408 ASSERT_TRUE(profile); |
| 413 EXPECT_FALSE(profile->IsOffTheRecord()); | 409 EXPECT_FALSE(profile->IsOffTheRecord()); |
| 414 PrefService* prefs = profile->GetPrefs(); | 410 PrefService* prefs = profile->GetPrefs(); |
| 415 EXPECT_EQ(IncognitoModePrefs::ENABLED, | 411 EXPECT_EQ(IncognitoModePrefs::ENABLED, |
| 416 IncognitoModePrefs::GetAvailability(prefs)); | 412 IncognitoModePrefs::GetAvailability(prefs)); |
| 417 | 413 |
| 418 // Attach an incognito Profile to the TestingProfile. | 414 // Attach an incognito Profile to the TestingProfile. |
| 419 ASSERT_FALSE(profile->GetOffTheRecordProfile()); | 415 ASSERT_FALSE(profile->GetOffTheRecordProfile()); |
| 420 TestingProfile* incognito_profile = new TestingProfile(); | 416 TestingProfile::Builder builder; |
| 421 incognito_profile->set_incognito(true); | 417 builder.SetIncognito(); |
| 418 scoped_ptr<TestingProfile> incognito_profile = builder.Build(); |
| 422 EXPECT_TRUE(incognito_profile->IsOffTheRecord()); | 419 EXPECT_TRUE(incognito_profile->IsOffTheRecord()); |
| 423 TestingProfile* testing_profile = static_cast<TestingProfile*>(profile); | 420 TestingProfile* testing_profile = static_cast<TestingProfile*>(profile); |
| 424 testing_profile->SetOffTheRecordProfile(incognito_profile); | 421 testing_profile->SetOffTheRecordProfile(incognito_profile.PassAs<Profile>()); |
| 425 ASSERT_TRUE(profile->GetOffTheRecordProfile()); | 422 ASSERT_TRUE(profile->GetOffTheRecordProfile()); |
| 426 | 423 |
| 427 IncognitoModePrefs::SetAvailability(prefs, IncognitoModePrefs::DISABLED); | 424 IncognitoModePrefs::SetAvailability(prefs, IncognitoModePrefs::DISABLED); |
| 428 EXPECT_FALSE( | 425 EXPECT_FALSE( |
| 429 profile_manager->GetLastUsedProfileAllowedByPolicy()->IsOffTheRecord()); | 426 profile_manager->GetLastUsedProfileAllowedByPolicy()->IsOffTheRecord()); |
| 430 | 427 |
| 431 // GetLastUsedProfileAllowedByPolicy() returns the incognito Profile when | 428 // GetLastUsedProfileAllowedByPolicy() returns the incognito Profile when |
| 432 // incognito mode is forced. | 429 // incognito mode is forced. |
| 433 IncognitoModePrefs::SetAvailability(prefs, IncognitoModePrefs::FORCED); | 430 IncognitoModePrefs::SetAvailability(prefs, IncognitoModePrefs::FORCED); |
| 434 EXPECT_TRUE( | 431 EXPECT_TRUE( |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 562 | 559 |
| 563 ProfileManager* profile_manager = g_browser_process->profile_manager(); | 560 ProfileManager* profile_manager = g_browser_process->profile_manager(); |
| 564 | 561 |
| 565 // Successfully create the profiles. | 562 // Successfully create the profiles. |
| 566 TestingProfile* profile1 = | 563 TestingProfile* profile1 = |
| 567 static_cast<TestingProfile*>(profile_manager->GetProfile(dest_path1)); | 564 static_cast<TestingProfile*>(profile_manager->GetProfile(dest_path1)); |
| 568 ASSERT_TRUE(profile1); | 565 ASSERT_TRUE(profile1); |
| 569 | 566 |
| 570 // incognito profiles should not be managed by the profile manager but by the | 567 // incognito profiles should not be managed by the profile manager but by the |
| 571 // original profile. | 568 // original profile. |
| 572 TestingProfile* profile2 = new TestingProfile(); | 569 TestingProfile::Builder builder; |
| 573 ASSERT_TRUE(profile2); | 570 builder.SetIncognito(); |
| 574 profile2->set_incognito(true); | 571 scoped_ptr<TestingProfile> profile2 = builder.Build(); |
| 575 profile1->SetOffTheRecordProfile(profile2); | 572 profile1->SetOffTheRecordProfile(profile2.PassAs<Profile>()); |
| 576 | 573 |
| 577 std::vector<Profile*> last_opened_profiles = | 574 std::vector<Profile*> last_opened_profiles = |
| 578 profile_manager->GetLastOpenedProfiles(); | 575 profile_manager->GetLastOpenedProfiles(); |
| 579 ASSERT_EQ(0U, last_opened_profiles.size()); | 576 ASSERT_EQ(0U, last_opened_profiles.size()); |
| 580 | 577 |
| 581 // Create a browser for profile1. | 578 // Create a browser for profile1. |
| 582 Browser::CreateParams profile1_params(profile1, chrome::GetActiveDesktop()); | 579 Browser::CreateParams profile1_params(profile1, chrome::GetActiveDesktop()); |
| 583 scoped_ptr<Browser> browser1( | 580 scoped_ptr<Browser> browser1( |
| 584 chrome::CreateBrowserWithTestWindowForParams(&profile1_params)); | 581 chrome::CreateBrowserWithTestWindowForParams(&profile1_params)); |
| 585 | 582 |
| 586 last_opened_profiles = profile_manager->GetLastOpenedProfiles(); | 583 last_opened_profiles = profile_manager->GetLastOpenedProfiles(); |
| 587 ASSERT_EQ(1U, last_opened_profiles.size()); | 584 ASSERT_EQ(1U, last_opened_profiles.size()); |
| 588 EXPECT_EQ(profile1, last_opened_profiles[0]); | 585 EXPECT_EQ(profile1, last_opened_profiles[0]); |
| 589 | 586 |
| 590 // And for profile2. | 587 // And for profile2. |
| 591 Browser::CreateParams profile2_params(profile2, chrome::GetActiveDesktop()); | 588 Browser::CreateParams profile2_params(profile1->GetOffTheRecordProfile(), |
| 589 chrome::GetActiveDesktop()); |
| 592 scoped_ptr<Browser> browser2a( | 590 scoped_ptr<Browser> browser2a( |
| 593 chrome::CreateBrowserWithTestWindowForParams(&profile2_params)); | 591 chrome::CreateBrowserWithTestWindowForParams(&profile2_params)); |
| 594 | 592 |
| 595 last_opened_profiles = profile_manager->GetLastOpenedProfiles(); | 593 last_opened_profiles = profile_manager->GetLastOpenedProfiles(); |
| 596 ASSERT_EQ(1U, last_opened_profiles.size()); | 594 ASSERT_EQ(1U, last_opened_profiles.size()); |
| 597 EXPECT_EQ(profile1, last_opened_profiles[0]); | 595 EXPECT_EQ(profile1, last_opened_profiles[0]); |
| 598 | 596 |
| 599 // Adding more browsers doesn't change anything. | 597 // Adding more browsers doesn't change anything. |
| 600 scoped_ptr<Browser> browser2b( | 598 scoped_ptr<Browser> browser2b( |
| 601 chrome::CreateBrowserWithTestWindowForParams(&profile2_params)); | 599 chrome::CreateBrowserWithTestWindowForParams(&profile2_params)); |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 764 dest_path2.BaseName().MaybeAsASCII()); | 762 dest_path2.BaseName().MaybeAsASCII()); |
| 765 profile_manager->ScheduleProfileForDeletion(dest_path2, | 763 profile_manager->ScheduleProfileForDeletion(dest_path2, |
| 766 ProfileManager::CreateCallback()); | 764 ProfileManager::CreateCallback()); |
| 767 // Spin the message loop so that all the callbacks can finish running. | 765 // Spin the message loop so that all the callbacks can finish running. |
| 768 base::RunLoop().RunUntilIdle(); | 766 base::RunLoop().RunUntilIdle(); |
| 769 | 767 |
| 770 EXPECT_EQ(dest_path3, profile_manager->GetLastUsedProfile()->GetPath()); | 768 EXPECT_EQ(dest_path3, profile_manager->GetLastUsedProfile()->GetPath()); |
| 771 EXPECT_EQ(profile_name3, local_state->GetString(prefs::kProfileLastUsed)); | 769 EXPECT_EQ(profile_name3, local_state->GetString(prefs::kProfileLastUsed)); |
| 772 } | 770 } |
| 773 #endif // !defined(OS_MACOSX) | 771 #endif // !defined(OS_MACOSX) |
| OLD | NEW |