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 <objbase.h> // For CoInitialize(). | 5 #include <objbase.h> // For CoInitialize(). |
6 | 6 |
7 #include "base/base_paths.h" | 7 #include "base/base_paths.h" |
8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
9 #include "base/location.h" | 9 #include "base/location.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
231 installer::kLnkExt); | 231 installer::kLnkExt); |
232 EXPECT_TRUE(base::PathExists(system_level_shortcut_path)) | 232 EXPECT_TRUE(base::PathExists(system_level_shortcut_path)) |
233 << location.ToString(); | 233 << location.ToString(); |
234 return system_level_shortcut_path; | 234 return system_level_shortcut_path; |
235 } | 235 } |
236 | 236 |
237 void RenameProfile(const tracked_objects::Location& location, | 237 void RenameProfile(const tracked_objects::Location& location, |
238 const base::FilePath& profile_path, | 238 const base::FilePath& profile_path, |
239 const base::string16& new_profile_name) { | 239 const base::string16& new_profile_name) { |
240 const size_t profile_index = | 240 const size_t profile_index = |
241 profile_info_cache_->GetIndexOfProfileWithPath(profile_2_path_); | 241 profile_info_cache_->GetIndexOfProfileWithPath(profile_path); |
Michael K. (Yandex Team)
2015/12/21 05:18:53
This was actually a bug.
| |
242 ASSERT_NE(std::string::npos, profile_index); | 242 ASSERT_NE(std::string::npos, profile_index); |
243 ASSERT_NE(profile_info_cache_->GetNameOfProfileAtIndex(profile_index), | 243 ASSERT_NE(profile_info_cache_->GetNameOfProfileAtIndex(profile_index), |
244 new_profile_name); | 244 new_profile_name); |
245 profile_info_cache_->SetNameOfProfileAtIndex(profile_index, | 245 profile_info_cache_->SetNameOfProfileAtIndex(profile_index, |
246 new_profile_name); | 246 new_profile_name); |
247 RunPendingTasks(); | 247 RunPendingTasks(); |
248 } | 248 } |
249 | 249 |
250 BrowserDistribution* GetDistribution() { | 250 BrowserDistribution* GetDistribution() { |
251 return BrowserDistribution::GetDistribution(); | 251 return BrowserDistribution::GetDistribution(); |
(...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
870 EXPECT_NE(unbadged_icon_1, new_badged_icon_1); | 870 EXPECT_NE(unbadged_icon_1, new_badged_icon_1); |
871 | 871 |
872 // Ensure the icon doesn't change on avatar change without 2 profiles. | 872 // Ensure the icon doesn't change on avatar change without 2 profiles. |
873 profile_info_cache_->SetAvatarIconOfProfileAtIndex(profile_index_1, 1); | 873 profile_info_cache_->SetAvatarIconOfProfileAtIndex(profile_index_1, 1); |
874 RunPendingTasks(); | 874 RunPendingTasks(); |
875 | 875 |
876 std::string unbadged_icon_1_a; | 876 std::string unbadged_icon_1_a; |
877 EXPECT_TRUE(base::ReadFileToString(icon_path_1, &unbadged_icon_1_a)); | 877 EXPECT_TRUE(base::ReadFileToString(icon_path_1, &unbadged_icon_1_a)); |
878 EXPECT_EQ(unbadged_icon_1, unbadged_icon_1_a); | 878 EXPECT_EQ(unbadged_icon_1, unbadged_icon_1_a); |
879 } | 879 } |
880 | |
881 TEST_F(ProfileShortcutManagerTest, ShortcutFilenameUniquified) { | |
882 const auto suffix = | |
883 GetDistribution()->GetShortcutName(BrowserDistribution::SHORTCUT_CHROME); | |
884 std::set<base::FilePath> excludes; | |
885 | |
886 auto shortcut_filename = | |
887 profiles::internal::GetShortcutUniqueFilenameForProfile( | |
888 L"Carrie", GetDistribution(), excludes); | |
889 EXPECT_EQ(L"Carrie - " + suffix + L".lnk", shortcut_filename); | |
890 excludes.insert(GetUserShortcutsDirectory().Append(shortcut_filename)); | |
891 | |
892 shortcut_filename = profiles::internal::GetShortcutUniqueFilenameForProfile( | |
893 L"Carrie", GetDistribution(), excludes); | |
894 EXPECT_EQ(L"Carrie - " + suffix + L" (2).lnk", shortcut_filename); | |
895 excludes.insert(GetUserShortcutsDirectory().Append(shortcut_filename)); | |
896 | |
897 shortcut_filename = profiles::internal::GetShortcutUniqueFilenameForProfile( | |
898 L"Carrie", GetDistribution(), excludes); | |
899 EXPECT_EQ(L"Carrie - " + suffix + L" (3).lnk", shortcut_filename); | |
900 excludes.insert(GetUserShortcutsDirectory().Append(shortcut_filename)); | |
901 | |
902 shortcut_filename = profiles::internal::GetShortcutUniqueFilenameForProfile( | |
903 L"Steven", GetDistribution(), excludes); | |
904 EXPECT_EQ(L"Steven - " + suffix + L".lnk", shortcut_filename); | |
905 excludes.insert(GetUserShortcutsDirectory().Append(shortcut_filename)); | |
906 | |
907 shortcut_filename = profiles::internal::GetShortcutUniqueFilenameForProfile( | |
908 L"Steven", GetDistribution(), excludes); | |
909 EXPECT_EQ(L"Steven - " + suffix + L" (2).lnk", shortcut_filename); | |
910 excludes.insert(GetUserShortcutsDirectory().Append(shortcut_filename)); | |
911 | |
912 shortcut_filename = profiles::internal::GetShortcutUniqueFilenameForProfile( | |
913 L"Carrie", GetDistribution(), excludes); | |
914 EXPECT_EQ(L"Carrie - " + suffix + L" (4).lnk", shortcut_filename); | |
915 excludes.insert(GetUserShortcutsDirectory().Append(shortcut_filename)); | |
916 | |
917 excludes.erase( | |
918 GetUserShortcutsDirectory().Append(L"Carrie - " + suffix + L".lnk")); | |
919 shortcut_filename = profiles::internal::GetShortcutUniqueFilenameForProfile( | |
920 L"Carrie", GetDistribution(), excludes); | |
921 EXPECT_EQ(L"Carrie - " + suffix + L".lnk", shortcut_filename); | |
922 } | |
923 | |
924 TEST_F(ProfileShortcutManagerTest, ShortcutFilenameMatcher) { | |
925 profiles::internal::ShortcutFilenameMatcher matcher(L"Carrie", | |
926 GetDistribution()); | |
927 const auto suffix = | |
928 GetDistribution()->GetShortcutName(BrowserDistribution::SHORTCUT_CHROME); | |
929 EXPECT_TRUE(matcher.IsCanonical(L"Carrie - " + suffix + L" (2).lnk")); | |
930 EXPECT_FALSE(matcher.IsCanonical(L"Carrie - " + suffix + L"(2).lnk")); | |
931 EXPECT_FALSE(matcher.IsCanonical(L"Carrie - " + suffix + L" 2.lnk")); | |
932 EXPECT_FALSE(matcher.IsCanonical(L"Carrie - " + suffix + L"2.lnk")); | |
933 EXPECT_FALSE(matcher.IsCanonical(L"Carrie - " + suffix + L" - 2.lnk")); | |
934 EXPECT_FALSE(matcher.IsCanonical(L"Carrie - " + suffix + L" (a).lnk")); | |
935 EXPECT_TRUE(matcher.IsCanonical(L"Carrie - " + suffix + L" (11).lnk")); | |
936 EXPECT_TRUE(matcher.IsCanonical(L"Carrie - " + suffix + L" (03).lnk")); | |
937 EXPECT_TRUE(matcher.IsCanonical(L"Carrie - " + suffix + L" (999).lnk")); | |
938 EXPECT_FALSE(matcher.IsCanonical(L"Carrie - " + suffix + L" (999).lin")); | |
939 EXPECT_FALSE(matcher.IsCanonical(L"ABC Carrie - " + suffix + L" DEF.lnk")); | |
940 EXPECT_FALSE(matcher.IsCanonical(L"ABC Carrie DEF.lnk")); | |
941 EXPECT_FALSE(matcher.IsCanonical(L"Carrie.lnk")); | |
942 } | |
943 | |
944 TEST_F(ProfileShortcutManagerTest, ShortcutsForProfilesWithIdenticalNames) { | |
945 SetupDefaultProfileShortcut(FROM_HERE); | |
946 | |
947 // Create new profile - profile2. | |
948 CreateProfileWithShortcut(FROM_HERE, profile_2_name_, profile_2_path_); | |
949 // Check that nothing is changed for profile1. | |
950 ValidateProfileShortcut(FROM_HERE, profile_1_name_, profile_1_path_); | |
951 | |
952 // Give to profile1 the same name as profile2. | |
953 base::string16 new_profile_1_name = profile_2_name_; | |
954 RenameProfile(FROM_HERE, profile_1_path_, new_profile_1_name); | |
955 const auto profile_1_shortcut_name = new_profile_1_name + L" - " + | |
956 GetDistribution()->GetShortcutName(BrowserDistribution::SHORTCUT_CHROME) + | |
957 L" (2)"; | |
958 const auto profile_1_shortcut_path = GetUserShortcutsDirectory() | |
959 .Append(profile_1_shortcut_name + installer::kLnkExt); | |
960 ValidateProfileShortcutAtPath(FROM_HERE, | |
961 profile_1_shortcut_path, | |
962 profile_1_path_); | |
963 // Check that nothing is changed for profile2. | |
964 ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_); | |
965 | |
966 // Create new profile - profile3. | |
967 CreateProfileWithShortcut(FROM_HERE, profile_3_name_, profile_3_path_); | |
968 // Check that nothing is changed for profile1 and profile2. | |
969 ValidateProfileShortcutAtPath(FROM_HERE, | |
970 profile_1_shortcut_path, | |
971 profile_1_path_); | |
972 ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_); | |
973 | |
974 // Give to profile3 the same name as profile2. | |
975 const base::string16 new_profile_3_name = profile_2_name_; | |
976 RenameProfile(FROM_HERE, profile_3_path_, new_profile_3_name); | |
977 const auto profile_3_shortcut_name = new_profile_3_name + L" - " + | |
978 GetDistribution()->GetShortcutName(BrowserDistribution::SHORTCUT_CHROME) + | |
979 L" (3)"; | |
980 const auto profile_3_shortcut_path = GetUserShortcutsDirectory() | |
981 .Append(profile_3_shortcut_name + installer::kLnkExt); | |
982 ValidateProfileShortcutAtPath(FROM_HERE, | |
983 profile_3_shortcut_path, | |
984 profile_3_path_); | |
985 // Check that nothing is changed for profile1 and profile2. | |
986 ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_); | |
987 ValidateProfileShortcutAtPath(FROM_HERE, | |
988 profile_1_shortcut_path, | |
989 profile_1_path_); | |
990 | |
991 // Rename profile1 again. | |
992 new_profile_1_name = L"Carrie"; | |
993 RenameProfile(FROM_HERE, profile_1_path_, new_profile_1_name); | |
994 ValidateProfileShortcut(FROM_HERE, new_profile_1_name, profile_1_path_); | |
995 // Check that nothing is changed for profile2 and profile3. | |
996 ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_); | |
997 ValidateProfileShortcutAtPath(FROM_HERE, | |
998 profile_3_shortcut_path, | |
999 profile_3_path_); | |
1000 | |
1001 // Delete profile1. | |
1002 profile_info_cache_->DeleteProfileFromCache(profile_1_path_); | |
1003 RunPendingTasks(); | |
1004 EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(new_profile_1_name)); | |
1005 // Check that nothing is changed for profile2 and profile3. | |
1006 ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_); | |
1007 ValidateProfileShortcutAtPath(FROM_HERE, | |
1008 profile_3_shortcut_path, | |
1009 profile_3_path_); | |
1010 | |
1011 // Delete profile2. | |
1012 EXPECT_TRUE(base::PathExists( | |
1013 GetDefaultShortcutPathForProfile(profile_2_name_))); | |
1014 EXPECT_TRUE(base::PathExists(profile_3_shortcut_path)); | |
1015 profile_info_cache_->DeleteProfileFromCache(profile_2_path_); | |
1016 RunPendingTasks(); | |
1017 EXPECT_FALSE(base::PathExists( | |
1018 GetDefaultShortcutPathForProfile(profile_2_name_))); | |
1019 // Only profile3 exists. There should be non-profile shortcut only. | |
1020 EXPECT_FALSE(base::PathExists(profile_3_shortcut_path)); | |
1021 ValidateNonProfileShortcut(FROM_HERE); | |
1022 } | |
OLD | NEW |