| 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_path.h" | 10 #include "base/files/file_path.h" |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 ProfileAttributesStorage& storage = | 171 ProfileAttributesStorage& storage = |
| 172 profile_manager->GetProfileAttributesStorage(); | 172 profile_manager->GetProfileAttributesStorage(); |
| 173 size_t num_profiles = storage.GetNumberOfProfiles(); | 173 size_t num_profiles = storage.GetNumberOfProfiles(); |
| 174 base::FilePath path = temp_dir_.GetPath().AppendASCII(path_suffix); | 174 base::FilePath path = temp_dir_.GetPath().AppendASCII(path_suffix); |
| 175 storage.AddProfile(path, profile_name, std::string(), base::string16(), 0, | 175 storage.AddProfile(path, profile_name, std::string(), base::string16(), 0, |
| 176 std::string()); | 176 std::string()); |
| 177 EXPECT_EQ(num_profiles + 1u, storage.GetNumberOfProfiles()); | 177 EXPECT_EQ(num_profiles + 1u, storage.GetNumberOfProfiles()); |
| 178 return profile_manager->GetProfile(path); | 178 return profile_manager->GetProfile(path); |
| 179 } | 179 } |
| 180 | 180 |
| 181 // Helper function to set profile ephemeral at prefs and attributes storage. |
| 182 void SetProfileEphemeral(Profile* profile) { |
| 183 profile->GetPrefs()->SetBoolean(prefs::kForceEphemeralProfiles, true); |
| 184 |
| 185 // Update IsEphemeral in attributes storage, normally it happened via |
| 186 // kForceEphemeralProfiles pref change event routed to |
| 187 // ProfileImpl::UpdateIsEphemeralInStorage(). |
| 188 ProfileAttributesEntry* entry; |
| 189 ProfileAttributesStorage& storage = |
| 190 g_browser_process->profile_manager()->GetProfileAttributesStorage(); |
| 191 EXPECT_TRUE( |
| 192 storage.GetProfileAttributesWithPath(profile->GetPath(), &entry)); |
| 193 entry->SetIsEphemeral(true); |
| 194 } |
| 195 |
| 181 #if defined(OS_CHROMEOS) | 196 #if defined(OS_CHROMEOS) |
| 182 // Helper function to register an user with id |user_id| and create profile | 197 // Helper function to register an user with id |user_id| and create profile |
| 183 // with a correct path. | 198 // with a correct path. |
| 184 void RegisterUser(const std::string& user_id) { | 199 void RegisterUser(const std::string& user_id) { |
| 185 chromeos::ProfileHelper* profile_helper = chromeos::ProfileHelper::Get(); | 200 chromeos::ProfileHelper* profile_helper = chromeos::ProfileHelper::Get(); |
| 186 const std::string user_id_hash = | 201 const std::string user_id_hash = |
| 187 profile_helper->GetUserIdHashByUserIdForTesting(user_id); | 202 profile_helper->GetUserIdHashByUserIdForTesting(user_id); |
| 188 user_manager::UserManager::Get()->UserLoggedIn( | 203 user_manager::UserManager::Get()->UserLoggedIn( |
| 189 AccountId::FromUserEmail(user_id), user_id_hash, false); | 204 AccountId::FromUserEmail(user_id), user_id_hash, false); |
| 190 g_browser_process->profile_manager()->GetProfile( | 205 g_browser_process->profile_manager()->GetProfile( |
| (...skipping 679 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 870 // There's no Browser object on Android and there's no multi-profiles on Chrome. | 885 // There's no Browser object on Android and there's no multi-profiles on Chrome. |
| 871 TEST_F(ProfileManagerTest, EphemeralProfilesDontEndUpAsLastProfile) { | 886 TEST_F(ProfileManagerTest, EphemeralProfilesDontEndUpAsLastProfile) { |
| 872 base::FilePath dest_path = temp_dir_.GetPath(); | 887 base::FilePath dest_path = temp_dir_.GetPath(); |
| 873 dest_path = dest_path.Append(FILE_PATH_LITERAL("Ephemeral Profile")); | 888 dest_path = dest_path.Append(FILE_PATH_LITERAL("Ephemeral Profile")); |
| 874 | 889 |
| 875 ProfileManager* profile_manager = g_browser_process->profile_manager(); | 890 ProfileManager* profile_manager = g_browser_process->profile_manager(); |
| 876 | 891 |
| 877 TestingProfile* profile = | 892 TestingProfile* profile = |
| 878 static_cast<TestingProfile*>(profile_manager->GetProfile(dest_path)); | 893 static_cast<TestingProfile*>(profile_manager->GetProfile(dest_path)); |
| 879 ASSERT_TRUE(profile); | 894 ASSERT_TRUE(profile); |
| 880 profile->GetPrefs()->SetBoolean(prefs::kForceEphemeralProfiles, true); | 895 SetProfileEphemeral(profile); |
| 881 | 896 |
| 882 // Here the last used profile is still the "Default" profile. | 897 // Here the last used profile is still the "Default" profile. |
| 883 Profile* last_used_profile = profile_manager->GetLastUsedProfile(); | 898 Profile* last_used_profile = profile_manager->GetLastUsedProfile(); |
| 884 EXPECT_NE(profile, last_used_profile); | 899 EXPECT_NE(profile, last_used_profile); |
| 885 | 900 |
| 886 // Create a browser for the profile. | 901 // Create a browser for the profile. |
| 887 Browser::CreateParams profile_params(profile); | 902 Browser::CreateParams profile_params(profile); |
| 888 std::unique_ptr<Browser> browser( | 903 std::unique_ptr<Browser> browser( |
| 889 chrome::CreateBrowserWithTestWindowForParams(&profile_params)); | 904 chrome::CreateBrowserWithTestWindowForParams(&profile_params)); |
| 890 last_used_profile = profile_manager->GetLastUsedProfile(); | 905 last_used_profile = profile_manager->GetLastUsedProfile(); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 910 | 925 |
| 911 // Successfully create the profiles. | 926 // Successfully create the profiles. |
| 912 TestingProfile* normal_profile = | 927 TestingProfile* normal_profile = |
| 913 static_cast<TestingProfile*>(profile_manager->GetProfile(dest_path1)); | 928 static_cast<TestingProfile*>(profile_manager->GetProfile(dest_path1)); |
| 914 ASSERT_TRUE(normal_profile); | 929 ASSERT_TRUE(normal_profile); |
| 915 | 930 |
| 916 // Add one ephemeral profile which should not end up in this list. | 931 // Add one ephemeral profile which should not end up in this list. |
| 917 TestingProfile* ephemeral_profile1 = | 932 TestingProfile* ephemeral_profile1 = |
| 918 static_cast<TestingProfile*>(profile_manager->GetProfile(dest_path2)); | 933 static_cast<TestingProfile*>(profile_manager->GetProfile(dest_path2)); |
| 919 ASSERT_TRUE(ephemeral_profile1); | 934 ASSERT_TRUE(ephemeral_profile1); |
| 920 ephemeral_profile1->GetPrefs()->SetBoolean(prefs::kForceEphemeralProfiles, | 935 SetProfileEphemeral(ephemeral_profile1); |
| 921 true); | |
| 922 | 936 |
| 923 // Add second ephemeral profile but don't mark it as such yet. | 937 // Add second ephemeral profile but don't mark it as such yet. |
| 924 TestingProfile* ephemeral_profile2 = | 938 TestingProfile* ephemeral_profile2 = |
| 925 static_cast<TestingProfile*>(profile_manager->GetProfile(dest_path3)); | 939 static_cast<TestingProfile*>(profile_manager->GetProfile(dest_path3)); |
| 926 ASSERT_TRUE(ephemeral_profile2); | 940 ASSERT_TRUE(ephemeral_profile2); |
| 927 | 941 |
| 928 // Create a browser for profile1. | 942 // Create a browser for profile1. |
| 929 Browser::CreateParams profile1_params(normal_profile); | 943 Browser::CreateParams profile1_params(normal_profile); |
| 930 std::unique_ptr<Browser> browser1( | 944 std::unique_ptr<Browser> browser1( |
| 931 chrome::CreateBrowserWithTestWindowForParams(&profile1_params)); | 945 chrome::CreateBrowserWithTestWindowForParams(&profile1_params)); |
| 932 | 946 |
| 933 // Create browsers for the ephemeral profile. | 947 // Create browsers for the ephemeral profile. |
| 934 Browser::CreateParams profile2_params(ephemeral_profile1); | 948 Browser::CreateParams profile2_params(ephemeral_profile1); |
| 935 std::unique_ptr<Browser> browser2( | 949 std::unique_ptr<Browser> browser2( |
| 936 chrome::CreateBrowserWithTestWindowForParams(&profile2_params)); | 950 chrome::CreateBrowserWithTestWindowForParams(&profile2_params)); |
| 937 | 951 |
| 938 Browser::CreateParams profile3_params(ephemeral_profile2); | 952 Browser::CreateParams profile3_params(ephemeral_profile2); |
| 939 std::unique_ptr<Browser> browser3( | 953 std::unique_ptr<Browser> browser3( |
| 940 chrome::CreateBrowserWithTestWindowForParams(&profile3_params)); | 954 chrome::CreateBrowserWithTestWindowForParams(&profile3_params)); |
| 941 | 955 |
| 942 std::vector<Profile*> last_opened_profiles = | 956 std::vector<Profile*> last_opened_profiles = |
| 943 profile_manager->GetLastOpenedProfiles(); | 957 profile_manager->GetLastOpenedProfiles(); |
| 944 ASSERT_EQ(2U, last_opened_profiles.size()); | 958 ASSERT_EQ(2U, last_opened_profiles.size()); |
| 945 EXPECT_EQ(normal_profile, last_opened_profiles[0]); | 959 EXPECT_EQ(normal_profile, last_opened_profiles[0]); |
| 946 EXPECT_EQ(ephemeral_profile2, last_opened_profiles[1]); | 960 EXPECT_EQ(ephemeral_profile2, last_opened_profiles[1]); |
| 947 | 961 |
| 948 // Mark the second profile ephemeral. | 962 // Mark the second profile ephemeral. |
| 949 ephemeral_profile2->GetPrefs()->SetBoolean(prefs::kForceEphemeralProfiles, | 963 SetProfileEphemeral(ephemeral_profile2); |
| 950 true); | |
| 951 | 964 |
| 952 // Simulate a shutdown. | 965 // Simulate a shutdown. |
| 953 content::NotificationService::current()->Notify( | 966 content::NotificationService::current()->Notify( |
| 954 chrome::NOTIFICATION_CLOSE_ALL_BROWSERS_REQUEST, | 967 chrome::NOTIFICATION_CLOSE_ALL_BROWSERS_REQUEST, |
| 955 content::NotificationService::AllSources(), | 968 content::NotificationService::AllSources(), |
| 956 content::NotificationService::NoDetails()); | 969 content::NotificationService::NoDetails()); |
| 957 browser1.reset(); | 970 browser1.reset(); |
| 958 browser2.reset(); | 971 browser2.reset(); |
| 959 browser3.reset(); | 972 browser3.reset(); |
| 960 | 973 |
| (...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1442 dest_path2.BaseName().MaybeAsASCII()); | 1455 dest_path2.BaseName().MaybeAsASCII()); |
| 1443 profile_manager->ScheduleProfileForDeletion(dest_path2, | 1456 profile_manager->ScheduleProfileForDeletion(dest_path2, |
| 1444 ProfileManager::CreateCallback()); | 1457 ProfileManager::CreateCallback()); |
| 1445 // Spin the message loop so that all the callbacks can finish running. | 1458 // Spin the message loop so that all the callbacks can finish running. |
| 1446 base::RunLoop().RunUntilIdle(); | 1459 base::RunLoop().RunUntilIdle(); |
| 1447 | 1460 |
| 1448 EXPECT_EQ(dest_path3, profile_manager->GetLastUsedProfile()->GetPath()); | 1461 EXPECT_EQ(dest_path3, profile_manager->GetLastUsedProfile()->GetPath()); |
| 1449 EXPECT_EQ(profile_name3, local_state->GetString(prefs::kProfileLastUsed)); | 1462 EXPECT_EQ(profile_name3, local_state->GetString(prefs::kProfileLastUsed)); |
| 1450 } | 1463 } |
| 1451 #endif // !defined(OS_MACOSX) | 1464 #endif // !defined(OS_MACOSX) |
| OLD | NEW |