| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
| 8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
| 9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
| 10 #include "chrome/browser/history/history.h" | 10 #include "chrome/browser/history/history.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 file_util::Delete(db_file_, false); | 70 file_util::Delete(db_file_, false); |
| 71 | 71 |
| 72 // Copy db file over that contains starred table. | 72 // Copy db file over that contains starred table. |
| 73 FilePath old_history_path; | 73 FilePath old_history_path; |
| 74 PathService::Get(chrome::DIR_TEST_DATA, &old_history_path); | 74 PathService::Get(chrome::DIR_TEST_DATA, &old_history_path); |
| 75 old_history_path = old_history_path.AppendASCII("bookmarks"); | 75 old_history_path = old_history_path.AppendASCII("bookmarks"); |
| 76 old_history_path = old_history_path.Append( | 76 old_history_path = old_history_path.Append( |
| 77 FILE_PATH_LITERAL("History_with_empty_starred")); | 77 FILE_PATH_LITERAL("History_with_empty_starred")); |
| 78 file_util::CopyFile(old_history_path, db_file_); | 78 file_util::CopyFile(old_history_path, db_file_); |
| 79 | 79 |
| 80 EXPECT_EQ(SQLITE_OK, | 80 EXPECT_EQ(SQLITE_OK, |
| 81 sqlite3_open(WideToUTF8(db_file_.ToWStringHack()).c_str(), &db_)); | 81 sqlite3_open(WideToUTF8(db_file_.ToWStringHack()).c_str(), &db_)); |
| 82 statement_cache_ = new SqliteStatementCache(db_); | 82 statement_cache_ = new SqliteStatementCache(db_); |
| 83 | 83 |
| 84 // Initialize the tables for this test. | 84 // Initialize the tables for this test. |
| 85 CreateURLTable(false); | 85 CreateURLTable(false); |
| 86 CreateMainURLIndex(); | 86 CreateMainURLIndex(); |
| 87 EnsureStarredIntegrity(); | 87 EnsureStarredIntegrity(); |
| 88 } | 88 } |
| 89 void TearDown() { | 89 void TearDown() { |
| 90 delete statement_cache_; | 90 delete statement_cache_; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 101 } | 101 } |
| 102 | 102 |
| 103 FilePath db_file_; | 103 FilePath db_file_; |
| 104 sqlite3* db_; | 104 sqlite3* db_; |
| 105 SqliteStatementCache* statement_cache_; | 105 SqliteStatementCache* statement_cache_; |
| 106 }; | 106 }; |
| 107 | 107 |
| 108 //----------------------------------------------------------------------------- | 108 //----------------------------------------------------------------------------- |
| 109 | 109 |
| 110 TEST_F(StarredURLDatabaseTest, FixOrphanedGroup) { | 110 TEST_F(StarredURLDatabaseTest, FixOrphanedGroup) { |
| 111 const size_t initial_count = GetStarredEntryCount(); | 111 const int initial_count = GetStarredEntryCount(); |
| 112 | 112 |
| 113 // Create a group that isn't parented to the other/bookmark folders. | 113 // Create a group that isn't parented to the other/bookmark folders. |
| 114 StarredEntry g_entry; | 114 StarredEntry g_entry; |
| 115 g_entry.type = StarredEntry::USER_GROUP; | 115 g_entry.type = StarredEntry::USER_GROUP; |
| 116 g_entry.parent_group_id = 100; | 116 g_entry.parent_group_id = 100; |
| 117 g_entry.visual_order = 10; | 117 g_entry.visual_order = 10; |
| 118 g_entry.group_id = 100; | 118 g_entry.group_id = 100; |
| 119 CreateStarredEntry(&g_entry); | 119 CreateStarredEntry(&g_entry); |
| 120 | 120 |
| 121 ASSERT_TRUE(EnsureStarredIntegrity()); | 121 ASSERT_TRUE(EnsureStarredIntegrity()); |
| 122 | 122 |
| 123 // Make sure no new entries were added. | 123 // Make sure no new entries were added. |
| 124 ASSERT_EQ(initial_count + 1, GetStarredEntryCount()); | 124 ASSERT_EQ(initial_count + 1, GetStarredEntryCount()); |
| 125 | 125 |
| 126 // Make sure the group was moved to the bookmark bar folder. | 126 // Make sure the group was moved to the bookmark bar folder. |
| 127 ASSERT_TRUE(GetStarredEntry(g_entry.id, &g_entry)); | 127 ASSERT_TRUE(GetStarredEntry(g_entry.id, &g_entry)); |
| 128 ASSERT_EQ(HistoryService::kBookmarkBarID, g_entry.parent_group_id); | 128 ASSERT_EQ(HistoryService::kBookmarkBarID, g_entry.parent_group_id); |
| 129 ASSERT_EQ(0, g_entry.visual_order); | 129 ASSERT_EQ(0, g_entry.visual_order); |
| 130 } | 130 } |
| 131 | 131 |
| 132 TEST_F(StarredURLDatabaseTest, FixOrphanedBookmarks) { | 132 TEST_F(StarredURLDatabaseTest, FixOrphanedBookmarks) { |
| 133 const size_t initial_count = GetStarredEntryCount(); | 133 const int initial_count = GetStarredEntryCount(); |
| 134 | 134 |
| 135 // Create two bookmarks that aren't in a random folder no on the bookmark bar. | 135 // Create two bookmarks that aren't in a random folder no on the bookmark bar. |
| 136 StarredEntry entry1; | 136 StarredEntry entry1; |
| 137 entry1.parent_group_id = 100; | 137 entry1.parent_group_id = 100; |
| 138 entry1.visual_order = 10; | 138 entry1.visual_order = 10; |
| 139 entry1.url = GURL(L"http://google.com/1"); | 139 entry1.url = GURL("http://google.com/1"); |
| 140 CreateStarredEntry(&entry1); | 140 CreateStarredEntry(&entry1); |
| 141 | 141 |
| 142 StarredEntry entry2; | 142 StarredEntry entry2; |
| 143 entry2.parent_group_id = 101; | 143 entry2.parent_group_id = 101; |
| 144 entry2.visual_order = 20; | 144 entry2.visual_order = 20; |
| 145 entry2.url = GURL(L"http://google.com/2"); | 145 entry2.url = GURL("http://google.com/2"); |
| 146 CreateStarredEntry(&entry2); | 146 CreateStarredEntry(&entry2); |
| 147 | 147 |
| 148 ASSERT_TRUE(EnsureStarredIntegrity()); | 148 ASSERT_TRUE(EnsureStarredIntegrity()); |
| 149 | 149 |
| 150 // Make sure no new entries were added. | 150 // Make sure no new entries were added. |
| 151 ASSERT_EQ(initial_count + 2, GetStarredEntryCount()); | 151 ASSERT_EQ(initial_count + 2, GetStarredEntryCount()); |
| 152 | 152 |
| 153 // Make sure the entries were moved to the bookmark bar and the visual order | 153 // Make sure the entries were moved to the bookmark bar and the visual order |
| 154 // order was updated appropriately. | 154 // order was updated appropriately. |
| 155 ASSERT_TRUE(GetStarredEntry(entry1.id, &entry1)); | 155 ASSERT_TRUE(GetStarredEntry(entry1.id, &entry1)); |
| 156 ASSERT_EQ(HistoryService::kBookmarkBarID, entry1.parent_group_id); | 156 ASSERT_EQ(HistoryService::kBookmarkBarID, entry1.parent_group_id); |
| 157 | 157 |
| 158 ASSERT_TRUE(GetStarredEntry(entry2.id, &entry2)); | 158 ASSERT_TRUE(GetStarredEntry(entry2.id, &entry2)); |
| 159 ASSERT_EQ(HistoryService::kBookmarkBarID, entry2.parent_group_id); | 159 ASSERT_EQ(HistoryService::kBookmarkBarID, entry2.parent_group_id); |
| 160 ASSERT_TRUE((entry1.visual_order == 0 && entry2.visual_order == 1) || | 160 ASSERT_TRUE((entry1.visual_order == 0 && entry2.visual_order == 1) || |
| 161 (entry1.visual_order == 1 && entry2.visual_order == 0)); | 161 (entry1.visual_order == 1 && entry2.visual_order == 0)); |
| 162 } | 162 } |
| 163 | 163 |
| 164 TEST_F(StarredURLDatabaseTest, FixGroupCycleDepth0) { | 164 TEST_F(StarredURLDatabaseTest, FixGroupCycleDepth0) { |
| 165 const size_t initial_count = GetStarredEntryCount(); | 165 const int initial_count = GetStarredEntryCount(); |
| 166 | 166 |
| 167 // Create a group that is parented to itself. | 167 // Create a group that is parented to itself. |
| 168 StarredEntry entry1; | 168 StarredEntry entry1; |
| 169 entry1.group_id = entry1.parent_group_id = 100; | 169 entry1.group_id = entry1.parent_group_id = 100; |
| 170 entry1.visual_order = 10; | 170 entry1.visual_order = 10; |
| 171 entry1.type = StarredEntry::USER_GROUP; | 171 entry1.type = StarredEntry::USER_GROUP; |
| 172 CreateStarredEntry(&entry1); | 172 CreateStarredEntry(&entry1); |
| 173 | 173 |
| 174 ASSERT_TRUE(EnsureStarredIntegrity()); | 174 ASSERT_TRUE(EnsureStarredIntegrity()); |
| 175 | 175 |
| 176 // Make sure no new entries were added. | 176 // Make sure no new entries were added. |
| 177 ASSERT_EQ(initial_count + 1, GetStarredEntryCount()); | 177 ASSERT_EQ(initial_count + 1, GetStarredEntryCount()); |
| 178 | 178 |
| 179 // Make sure the group were moved to the bookmark bar and the visual order | 179 // Make sure the group were moved to the bookmark bar and the visual order |
| 180 // order was updated appropriately. | 180 // order was updated appropriately. |
| 181 ASSERT_TRUE(GetStarredEntry(entry1.id, &entry1)); | 181 ASSERT_TRUE(GetStarredEntry(entry1.id, &entry1)); |
| 182 ASSERT_EQ(HistoryService::kBookmarkBarID, entry1.parent_group_id); | 182 ASSERT_EQ(HistoryService::kBookmarkBarID, entry1.parent_group_id); |
| 183 ASSERT_EQ(0, entry1.visual_order); | 183 ASSERT_EQ(0, entry1.visual_order); |
| 184 } | 184 } |
| 185 | 185 |
| 186 TEST_F(StarredURLDatabaseTest, FixGroupCycleDepth1) { | 186 TEST_F(StarredURLDatabaseTest, FixGroupCycleDepth1) { |
| 187 const size_t initial_count = GetStarredEntryCount(); | 187 const int initial_count = GetStarredEntryCount(); |
| 188 | 188 |
| 189 StarredEntry entry1; | 189 StarredEntry entry1; |
| 190 entry1.group_id = 100; | 190 entry1.group_id = 100; |
| 191 entry1.parent_group_id = 101; | 191 entry1.parent_group_id = 101; |
| 192 entry1.visual_order = 10; | 192 entry1.visual_order = 10; |
| 193 entry1.type = StarredEntry::USER_GROUP; | 193 entry1.type = StarredEntry::USER_GROUP; |
| 194 CreateStarredEntry(&entry1); | 194 CreateStarredEntry(&entry1); |
| 195 | 195 |
| 196 StarredEntry entry2; | 196 StarredEntry entry2; |
| 197 entry2.group_id = 101; | 197 entry2.group_id = 101; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 209 // breaks the cycle. | 209 // breaks the cycle. |
| 210 ASSERT_TRUE(GetStarredEntry(entry1.id, &entry1)); | 210 ASSERT_TRUE(GetStarredEntry(entry1.id, &entry1)); |
| 211 ASSERT_TRUE(GetStarredEntry(entry2.id, &entry2)); | 211 ASSERT_TRUE(GetStarredEntry(entry2.id, &entry2)); |
| 212 ASSERT_EQ(HistoryService::kBookmarkBarID, entry1.parent_group_id); | 212 ASSERT_EQ(HistoryService::kBookmarkBarID, entry1.parent_group_id); |
| 213 ASSERT_EQ(100, entry2.parent_group_id); | 213 ASSERT_EQ(100, entry2.parent_group_id); |
| 214 ASSERT_EQ(0, entry1.visual_order); | 214 ASSERT_EQ(0, entry1.visual_order); |
| 215 ASSERT_EQ(0, entry2.visual_order); | 215 ASSERT_EQ(0, entry2.visual_order); |
| 216 } | 216 } |
| 217 | 217 |
| 218 TEST_F(StarredURLDatabaseTest, FixVisualOrder) { | 218 TEST_F(StarredURLDatabaseTest, FixVisualOrder) { |
| 219 const size_t initial_count = GetStarredEntryCount(); | 219 const int initial_count = GetStarredEntryCount(); |
| 220 | 220 |
| 221 // Star two urls. | 221 // Star two urls. |
| 222 StarredEntry entry1; | 222 StarredEntry entry1; |
| 223 entry1.url = GURL(L"http://google.com/1"); | 223 entry1.url = GURL("http://google.com/1"); |
| 224 entry1.parent_group_id = HistoryService::kBookmarkBarID; | 224 entry1.parent_group_id = HistoryService::kBookmarkBarID; |
| 225 entry1.visual_order = 5; | 225 entry1.visual_order = 5; |
| 226 CreateStarredEntry(&entry1); | 226 CreateStarredEntry(&entry1); |
| 227 | 227 |
| 228 // Add url2 and star it. | 228 // Add url2 and star it. |
| 229 StarredEntry entry2; | 229 StarredEntry entry2; |
| 230 entry2.url = GURL(L"http://google.com/2"); | 230 entry2.url = GURL("http://google.com/2"); |
| 231 entry2.parent_group_id = HistoryService::kBookmarkBarID; | 231 entry2.parent_group_id = HistoryService::kBookmarkBarID; |
| 232 entry2.visual_order = 10; | 232 entry2.visual_order = 10; |
| 233 CreateStarredEntry(&entry2); | 233 CreateStarredEntry(&entry2); |
| 234 | 234 |
| 235 ASSERT_TRUE(EnsureStarredIntegrity()); | 235 ASSERT_TRUE(EnsureStarredIntegrity()); |
| 236 | 236 |
| 237 // Make sure no new entries were added. | 237 // Make sure no new entries were added. |
| 238 ASSERT_EQ(initial_count + 2, GetStarredEntryCount()); | 238 ASSERT_EQ(initial_count + 2, GetStarredEntryCount()); |
| 239 | 239 |
| 240 StarredEntry entry; | 240 StarredEntry entry; |
| 241 ASSERT_TRUE(GetStarredEntry(entry1.id, &entry)); | 241 ASSERT_TRUE(GetStarredEntry(entry1.id, &entry)); |
| 242 entry1.visual_order = 0; | 242 entry1.visual_order = 0; |
| 243 CompareEntryByID(entry1); | 243 CompareEntryByID(entry1); |
| 244 | 244 |
| 245 ASSERT_TRUE(GetStarredEntry(entry2.id, &entry)); | 245 ASSERT_TRUE(GetStarredEntry(entry2.id, &entry)); |
| 246 entry2.visual_order = 1; | 246 entry2.visual_order = 1; |
| 247 CompareEntryByID(entry2); | 247 CompareEntryByID(entry2); |
| 248 } | 248 } |
| 249 | 249 |
| 250 TEST_F(StarredURLDatabaseTest, FixDuplicateGroupIDs) { | 250 TEST_F(StarredURLDatabaseTest, FixDuplicateGroupIDs) { |
| 251 const size_t initial_count = GetStarredEntryCount(); | 251 const int initial_count = GetStarredEntryCount(); |
| 252 | 252 |
| 253 // Create two groups with the same group id. | 253 // Create two groups with the same group id. |
| 254 StarredEntry entry1; | 254 StarredEntry entry1; |
| 255 entry1.type = StarredEntry::USER_GROUP; | 255 entry1.type = StarredEntry::USER_GROUP; |
| 256 entry1.group_id = 10; | 256 entry1.group_id = 10; |
| 257 entry1.parent_group_id = HistoryService::kBookmarkBarID; | 257 entry1.parent_group_id = HistoryService::kBookmarkBarID; |
| 258 CreateStarredEntry(&entry1); | 258 CreateStarredEntry(&entry1); |
| 259 StarredEntry entry2 = entry1; | 259 StarredEntry entry2 = entry1; |
| 260 CreateStarredEntry(&entry2); | 260 CreateStarredEntry(&entry2); |
| 261 | 261 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 284 | 284 |
| 285 // Fix up the table. | 285 // Fix up the table. |
| 286 ASSERT_TRUE(EnsureStarredIntegrity()); | 286 ASSERT_TRUE(EnsureStarredIntegrity()); |
| 287 | 287 |
| 288 // The entry we just created should have been nuked. | 288 // The entry we just created should have been nuked. |
| 289 ASSERT_EQ(initial_count, GetStarredEntryCount()); | 289 ASSERT_EQ(initial_count, GetStarredEntryCount()); |
| 290 } | 290 } |
| 291 | 291 |
| 292 } // namespace history | 292 } // namespace history |
| 293 | 293 |
| OLD | NEW |