OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 <set> | 5 #include <set> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/file_path.h" | 9 #include "base/file_path.h" |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 URLID id = backend_->db()->GetRowForURL(url, &row); | 123 URLID id = backend_->db()->GetRowForURL(url, &row); |
124 VisitVector visits; | 124 VisitVector visits; |
125 EXPECT_TRUE(backend_->db()->GetVisitsForURL(id, &visits)); | 125 EXPECT_TRUE(backend_->db()->GetVisitsForURL(id, &visits)); |
126 return visits[0].transition; | 126 return visits[0].transition; |
127 } | 127 } |
128 | 128 |
129 FilePath getTestDir() { | 129 FilePath getTestDir() { |
130 return test_dir_; | 130 return test_dir_; |
131 } | 131 } |
132 | 132 |
133 FavIconID GetFavicon(const GURL& url, IconType icon_type) { | 133 FaviconID GetFavicon(const GURL& url, IconType icon_type) { |
134 IconMapping icon_mapping; | 134 IconMapping icon_mapping; |
135 if (backend_->thumbnail_db_->GetIconMappingForPageURL(url, icon_type, | 135 if (backend_->thumbnail_db_->GetIconMappingForPageURL(url, icon_type, |
136 &icon_mapping)) | 136 &icon_mapping)) |
137 return icon_mapping.icon_id; | 137 return icon_mapping.icon_id; |
138 else | 138 else |
139 return 0; | 139 return 0; |
140 } | 140 } |
141 | 141 |
142 BookmarkModel bookmark_model_; | 142 BookmarkModel bookmark_model_; |
143 | 143 |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 | 209 |
210 TEST_F(HistoryBackendTest, DeleteAll) { | 210 TEST_F(HistoryBackendTest, DeleteAll) { |
211 ASSERT_TRUE(backend_.get()); | 211 ASSERT_TRUE(backend_.get()); |
212 | 212 |
213 // Add two favicons, use the characters '1' and '2' for the image data. Note | 213 // Add two favicons, use the characters '1' and '2' for the image data. Note |
214 // that we do these in the opposite order. This is so the first one gets ID | 214 // that we do these in the opposite order. This is so the first one gets ID |
215 // 2 autoassigned to the database, which will change when the other one is | 215 // 2 autoassigned to the database, which will change when the other one is |
216 // deleted. This way we can test that updating works properly. | 216 // deleted. This way we can test that updating works properly. |
217 GURL favicon_url1("http://www.google.com/favicon.ico"); | 217 GURL favicon_url1("http://www.google.com/favicon.ico"); |
218 GURL favicon_url2("http://news.google.com/favicon.ico"); | 218 GURL favicon_url2("http://news.google.com/favicon.ico"); |
219 FavIconID favicon2 = backend_->thumbnail_db_->AddFavIcon(favicon_url2, | 219 FaviconID favicon2 = backend_->thumbnail_db_->AddFavIcon(favicon_url2, |
220 FAV_ICON); | 220 FAV_ICON); |
221 FavIconID favicon1 = backend_->thumbnail_db_->AddFavIcon(favicon_url1, | 221 FaviconID favicon1 = backend_->thumbnail_db_->AddFavIcon(favicon_url1, |
222 FAV_ICON); | 222 FAV_ICON); |
223 | 223 |
224 std::vector<unsigned char> data; | 224 std::vector<unsigned char> data; |
225 data.push_back('1'); | 225 data.push_back('1'); |
226 EXPECT_TRUE(backend_->thumbnail_db_->SetFavicon(favicon1, | 226 EXPECT_TRUE(backend_->thumbnail_db_->SetFavicon(favicon1, |
227 new RefCountedBytes(data), Time::Now())); | 227 new RefCountedBytes(data), Time::Now())); |
228 | 228 |
229 data[0] = '2'; | 229 data[0] = '2'; |
230 EXPECT_TRUE(backend_->thumbnail_db_->SetFavicon( | 230 EXPECT_TRUE(backend_->thumbnail_db_->SetFavicon( |
231 favicon2, new RefCountedBytes(data), Time::Now())); | 231 favicon2, new RefCountedBytes(data), Time::Now())); |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
315 ASSERT_EQ(0U, all_visits.size()); | 315 ASSERT_EQ(0U, all_visits.size()); |
316 | 316 |
317 // All thumbnails should be deleted. | 317 // All thumbnails should be deleted. |
318 std::vector<unsigned char> out_data; | 318 std::vector<unsigned char> out_data; |
319 EXPECT_FALSE(backend_->thumbnail_db_->GetPageThumbnail(outrow1.id(), | 319 EXPECT_FALSE(backend_->thumbnail_db_->GetPageThumbnail(outrow1.id(), |
320 &out_data)); | 320 &out_data)); |
321 EXPECT_FALSE(backend_->thumbnail_db_->GetPageThumbnail(row2_id, &out_data)); | 321 EXPECT_FALSE(backend_->thumbnail_db_->GetPageThumbnail(row2_id, &out_data)); |
322 | 322 |
323 // We should have a favicon for the first URL only. We look them up by favicon | 323 // We should have a favicon for the first URL only. We look them up by favicon |
324 // URL since the IDs may hav changed. | 324 // URL since the IDs may hav changed. |
325 FavIconID out_favicon1 = backend_->thumbnail_db_-> | 325 FaviconID out_favicon1 = backend_->thumbnail_db_-> |
326 GetFavIconIDForFavIconURL(favicon_url1, FAV_ICON, NULL); | 326 GetFaviconIDForFavIconURL(favicon_url1, FAV_ICON, NULL); |
327 EXPECT_TRUE(out_favicon1); | 327 EXPECT_TRUE(out_favicon1); |
328 FavIconID out_favicon2 = backend_->thumbnail_db_-> | 328 FaviconID out_favicon2 = backend_->thumbnail_db_-> |
329 GetFavIconIDForFavIconURL(favicon_url2, FAV_ICON, NULL); | 329 GetFaviconIDForFavIconURL(favicon_url2, FAV_ICON, NULL); |
330 EXPECT_FALSE(out_favicon2) << "Favicon not deleted"; | 330 EXPECT_FALSE(out_favicon2) << "Favicon not deleted"; |
331 | 331 |
332 // The remaining URL should still reference the same favicon, even if its | 332 // The remaining URL should still reference the same favicon, even if its |
333 // ID has changed. | 333 // ID has changed. |
334 EXPECT_EQ(out_favicon1, GetFavicon(outrow1.url(), FAV_ICON)); | 334 EXPECT_EQ(out_favicon1, GetFavicon(outrow1.url(), FAV_ICON)); |
335 | 335 |
336 // The first URL should still be bookmarked. | 336 // The first URL should still be bookmarked. |
337 EXPECT_TRUE(bookmark_model_.IsBookmarked(row1.url())); | 337 EXPECT_TRUE(bookmark_model_.IsBookmarked(row1.url())); |
338 | 338 |
339 // The full text database should have no data. | 339 // The full text database should have no data. |
340 std::vector<TextDatabase::Match> text_matches; | 340 std::vector<TextDatabase::Match> text_matches; |
341 Time first_time_searched; | 341 Time first_time_searched; |
342 backend_->text_database_->GetTextMatches(UTF8ToUTF16("Body"), | 342 backend_->text_database_->GetTextMatches(UTF8ToUTF16("Body"), |
343 QueryOptions(), | 343 QueryOptions(), |
344 &text_matches, | 344 &text_matches, |
345 &first_time_searched); | 345 &first_time_searched); |
346 EXPECT_EQ(0U, text_matches.size()); | 346 EXPECT_EQ(0U, text_matches.size()); |
347 } | 347 } |
348 | 348 |
349 TEST_F(HistoryBackendTest, URLsNoLongerBookmarked) { | 349 TEST_F(HistoryBackendTest, URLsNoLongerBookmarked) { |
350 GURL favicon_url1("http://www.google.com/favicon.ico"); | 350 GURL favicon_url1("http://www.google.com/favicon.ico"); |
351 GURL favicon_url2("http://news.google.com/favicon.ico"); | 351 GURL favicon_url2("http://news.google.com/favicon.ico"); |
352 FavIconID favicon2 = backend_->thumbnail_db_->AddFavIcon(favicon_url2, | 352 FaviconID favicon2 = backend_->thumbnail_db_->AddFavIcon(favicon_url2, |
353 FAV_ICON); | 353 FAV_ICON); |
354 FavIconID favicon1 = backend_->thumbnail_db_->AddFavIcon(favicon_url1, | 354 FaviconID favicon1 = backend_->thumbnail_db_->AddFavIcon(favicon_url1, |
355 FAV_ICON); | 355 FAV_ICON); |
356 | 356 |
357 std::vector<unsigned char> data; | 357 std::vector<unsigned char> data; |
358 data.push_back('1'); | 358 data.push_back('1'); |
359 EXPECT_TRUE(backend_->thumbnail_db_->SetFavicon( | 359 EXPECT_TRUE(backend_->thumbnail_db_->SetFavicon( |
360 favicon1, new RefCountedBytes(data), Time::Now())); | 360 favicon1, new RefCountedBytes(data), Time::Now())); |
361 | 361 |
362 data[0] = '2'; | 362 data[0] = '2'; |
363 EXPECT_TRUE(backend_->thumbnail_db_->SetFavicon( | 363 EXPECT_TRUE(backend_->thumbnail_db_->SetFavicon( |
364 favicon2, new RefCountedBytes(data), Time::Now())); | 364 favicon2, new RefCountedBytes(data), Time::Now())); |
(...skipping 27 matching lines...) Expand all Loading... |
392 backend_->expirer_.DeleteURL(row2.url()); | 392 backend_->expirer_.DeleteURL(row2.url()); |
393 | 393 |
394 // Make sure url 2 is still valid, but has no visits. | 394 // Make sure url 2 is still valid, but has no visits. |
395 URLRow tmp_url_row; | 395 URLRow tmp_url_row; |
396 EXPECT_EQ(row2_id, backend_->db_->GetRowForURL(row2.url(), NULL)); | 396 EXPECT_EQ(row2_id, backend_->db_->GetRowForURL(row2.url(), NULL)); |
397 VisitVector visits; | 397 VisitVector visits; |
398 backend_->db_->GetVisitsForURL(row2_id, &visits); | 398 backend_->db_->GetVisitsForURL(row2_id, &visits); |
399 EXPECT_EQ(0U, visits.size()); | 399 EXPECT_EQ(0U, visits.size()); |
400 // The favicon should still be valid. | 400 // The favicon should still be valid. |
401 EXPECT_EQ(favicon2, | 401 EXPECT_EQ(favicon2, |
402 backend_->thumbnail_db_->GetFavIconIDForFavIconURL(favicon_url2, | 402 backend_->thumbnail_db_->GetFaviconIDForFavIconURL(favicon_url2, |
403 FAV_ICON, | 403 FAV_ICON, |
404 NULL)); | 404 NULL)); |
405 | 405 |
406 // Unstar row2. | 406 // Unstar row2. |
407 bookmark_model_.SetURLStarred(row2.url(), string16(), false); | 407 bookmark_model_.SetURLStarred(row2.url(), string16(), false); |
408 // Tell the backend it was unstarred. We have to explicitly do this as | 408 // Tell the backend it was unstarred. We have to explicitly do this as |
409 // BookmarkModel isn't wired up to the backend during testing. | 409 // BookmarkModel isn't wired up to the backend during testing. |
410 std::set<GURL> unstarred_urls; | 410 std::set<GURL> unstarred_urls; |
411 unstarred_urls.insert(row2.url()); | 411 unstarred_urls.insert(row2.url()); |
412 backend_->URLsNoLongerBookmarked(unstarred_urls); | 412 backend_->URLsNoLongerBookmarked(unstarred_urls); |
413 | 413 |
414 // The URL should no longer exist. | 414 // The URL should no longer exist. |
415 EXPECT_FALSE(backend_->db_->GetRowForURL(row2.url(), &tmp_url_row)); | 415 EXPECT_FALSE(backend_->db_->GetRowForURL(row2.url(), &tmp_url_row)); |
416 // And the favicon should be deleted. | 416 // And the favicon should be deleted. |
417 EXPECT_EQ(0, | 417 EXPECT_EQ(0, |
418 backend_->thumbnail_db_->GetFavIconIDForFavIconURL(favicon_url2, | 418 backend_->thumbnail_db_->GetFaviconIDForFavIconURL(favicon_url2, |
419 FAV_ICON, | 419 FAV_ICON, |
420 NULL)); | 420 NULL)); |
421 | 421 |
422 // Unstar row 1. | 422 // Unstar row 1. |
423 bookmark_model_.SetURLStarred(row1.url(), string16(), false); | 423 bookmark_model_.SetURLStarred(row1.url(), string16(), false); |
424 // Tell the backend it was unstarred. We have to explicitly do this as | 424 // Tell the backend it was unstarred. We have to explicitly do this as |
425 // BookmarkModel isn't wired up to the backend during testing. | 425 // BookmarkModel isn't wired up to the backend during testing. |
426 unstarred_urls.clear(); | 426 unstarred_urls.clear(); |
427 unstarred_urls.insert(row1.url()); | 427 unstarred_urls.insert(row1.url()); |
428 backend_->URLsNoLongerBookmarked(unstarred_urls); | 428 backend_->URLsNoLongerBookmarked(unstarred_urls); |
429 | 429 |
430 // The URL should still exist (because there were visits). | 430 // The URL should still exist (because there were visits). |
431 EXPECT_EQ(row1_id, backend_->db_->GetRowForURL(row1.url(), NULL)); | 431 EXPECT_EQ(row1_id, backend_->db_->GetRowForURL(row1.url(), NULL)); |
432 | 432 |
433 // There should still be visits. | 433 // There should still be visits. |
434 visits.clear(); | 434 visits.clear(); |
435 backend_->db_->GetVisitsForURL(row1_id, &visits); | 435 backend_->db_->GetVisitsForURL(row1_id, &visits); |
436 EXPECT_EQ(1U, visits.size()); | 436 EXPECT_EQ(1U, visits.size()); |
437 | 437 |
438 // The favicon should still be valid. | 438 // The favicon should still be valid. |
439 EXPECT_EQ(favicon1, | 439 EXPECT_EQ(favicon1, |
440 backend_->thumbnail_db_->GetFavIconIDForFavIconURL(favicon_url1, | 440 backend_->thumbnail_db_->GetFaviconIDForFavIconURL(favicon_url1, |
441 FAV_ICON, | 441 FAV_ICON, |
442 NULL)); | 442 NULL)); |
443 } | 443 } |
444 | 444 |
445 // Tests a handful of assertions for a navigation with a type of | 445 // Tests a handful of assertions for a navigation with a type of |
446 // KEYWORD_GENERATED. | 446 // KEYWORD_GENERATED. |
447 TEST_F(HistoryBackendTest, KeywordGenerated) { | 447 TEST_F(HistoryBackendTest, KeywordGenerated) { |
448 ASSERT_TRUE(backend_.get()); | 448 ASSERT_TRUE(backend_.get()); |
449 | 449 |
450 GURL url("http://google.com"); | 450 GURL url("http://google.com"); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 GURL url_c("http://google.com/c"); | 515 GURL url_c("http://google.com/c"); |
516 AddClientRedirect(url_b, url_c, true, &transition1, &transition2); | 516 AddClientRedirect(url_b, url_c, true, &transition1, &transition2); |
517 EXPECT_FALSE(transition1 & PageTransition::CHAIN_END); | 517 EXPECT_FALSE(transition1 & PageTransition::CHAIN_END); |
518 EXPECT_TRUE(transition2 & PageTransition::CHAIN_END); | 518 EXPECT_TRUE(transition2 & PageTransition::CHAIN_END); |
519 } | 519 } |
520 | 520 |
521 TEST_F(HistoryBackendTest, ImportedFaviconsTest) { | 521 TEST_F(HistoryBackendTest, ImportedFaviconsTest) { |
522 // Setup test data - two Urls in the history, one with favicon assigned and | 522 // Setup test data - two Urls in the history, one with favicon assigned and |
523 // one without. | 523 // one without. |
524 GURL favicon_url1("http://www.google.com/favicon.ico"); | 524 GURL favicon_url1("http://www.google.com/favicon.ico"); |
525 FavIconID favicon1 = backend_->thumbnail_db_->AddFavIcon(favicon_url1, | 525 FaviconID favicon1 = backend_->thumbnail_db_->AddFavIcon(favicon_url1, |
526 FAV_ICON); | 526 FAV_ICON); |
527 std::vector<unsigned char> data; | 527 std::vector<unsigned char> data; |
528 data.push_back('1'); | 528 data.push_back('1'); |
529 EXPECT_TRUE(backend_->thumbnail_db_->SetFavicon(favicon1, | 529 EXPECT_TRUE(backend_->thumbnail_db_->SetFavicon(favicon1, |
530 RefCountedBytes::TakeVector(&data), Time::Now())); | 530 RefCountedBytes::TakeVector(&data), Time::Now())); |
531 URLRow row1(GURL("http://www.google.com/")); | 531 URLRow row1(GURL("http://www.google.com/")); |
532 row1.set_visit_count(1); | 532 row1.set_visit_count(1); |
533 row1.set_last_visit(Time::Now()); | 533 row1.set_last_visit(Time::Now()); |
534 EXPECT_TRUE(backend_->thumbnail_db_->AddIconMapping(row1.url(), favicon1)); | 534 EXPECT_TRUE(backend_->thumbnail_db_->AddIconMapping(row1.url(), favicon1)); |
535 | 535 |
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
886 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( | 886 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
887 url1, FAV_ICON, NULL)); | 887 url1, FAV_ICON, NULL)); |
888 // The TOUCH_PRECOMPOSED_ICON was replaced. | 888 // The TOUCH_PRECOMPOSED_ICON was replaced. |
889 EXPECT_FALSE(backend_->thumbnail_db_->GetIconMappingForPageURL( | 889 EXPECT_FALSE(backend_->thumbnail_db_->GetIconMappingForPageURL( |
890 url1, TOUCH_PRECOMPOSED_ICON, NULL)); | 890 url1, TOUCH_PRECOMPOSED_ICON, NULL)); |
891 | 891 |
892 // Add a fav_icon | 892 // Add a fav_icon |
893 const GURL icon_url2("http://www.google.com/icon2"); | 893 const GURL icon_url2("http://www.google.com/icon2"); |
894 backend_->SetFavicon( | 894 backend_->SetFavicon( |
895 url1, icon_url2, RefCountedBytes::TakeVector(&data), FAV_ICON); | 895 url1, icon_url2, RefCountedBytes::TakeVector(&data), FAV_ICON); |
896 FavIconID icon_id = backend_->thumbnail_db_->GetFavIconIDForFavIconURL( | 896 FaviconID icon_id = backend_->thumbnail_db_->GetFaviconIDForFavIconURL( |
897 icon_url2, FAV_ICON, NULL); | 897 icon_url2, FAV_ICON, NULL); |
898 EXPECT_NE(0, icon_id); | 898 EXPECT_NE(0, icon_id); |
899 std::vector<IconMapping> icon_mapping; | 899 std::vector<IconMapping> icon_mapping; |
900 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( | 900 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( |
901 url1, &icon_mapping)); | 901 url1, &icon_mapping)); |
902 // The old icon was replaced. | 902 // The old icon was replaced. |
903 EXPECT_TRUE(icon_mapping.size() > 1); | 903 EXPECT_TRUE(icon_mapping.size() > 1); |
904 EXPECT_EQ(icon_id, icon_mapping[1].icon_id); | 904 EXPECT_EQ(icon_id, icon_mapping[1].icon_id); |
905 } | 905 } |
906 | 906 |
907 TEST_F(HistoryBackendTest, AddOrUpdateIconMapping) { | 907 TEST_F(HistoryBackendTest, AddOrUpdateIconMapping) { |
908 // Test the same icon and page mapping will not be added twice. other case | 908 // Test the same icon and page mapping will not be added twice. other case |
909 // should be covered in TEST_F(HistoryBackendTest, SetFaviconMapping) | 909 // should be covered in TEST_F(HistoryBackendTest, SetFaviconMapping) |
910 const GURL url("http://www.google.com/"); | 910 const GURL url("http://www.google.com/"); |
911 const GURL icon_url("http://www.google.com/icon"); | 911 const GURL icon_url("http://www.google.com/icon"); |
912 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 912 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
913 | 913 |
914 backend_->SetFavicon( | 914 backend_->SetFavicon( |
915 url, icon_url, RefCountedBytes::TakeVector(&data), FAV_ICON); | 915 url, icon_url, RefCountedBytes::TakeVector(&data), FAV_ICON); |
916 FavIconID icon_id = backend_->thumbnail_db_->GetFavIconIDForFavIconURL( | 916 FaviconID icon_id = backend_->thumbnail_db_->GetFaviconIDForFavIconURL( |
917 icon_url, FAV_ICON, NULL); | 917 icon_url, FAV_ICON, NULL); |
918 | 918 |
919 // Add the same mapping | 919 // Add the same mapping |
920 FavIconID replaced; | 920 FaviconID replaced; |
921 EXPECT_FALSE(backend_->AddOrUpdateIconMapping( | 921 EXPECT_FALSE(backend_->AddOrUpdateIconMapping( |
922 url, icon_id, FAV_ICON, &replaced)); | 922 url, icon_id, FAV_ICON, &replaced)); |
923 EXPECT_EQ(0, replaced); | 923 EXPECT_EQ(0, replaced); |
924 | 924 |
925 std::vector<IconMapping> icon_mapping; | 925 std::vector<IconMapping> icon_mapping; |
926 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( | 926 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( |
927 url, &icon_mapping)); | 927 url, &icon_mapping)); |
928 EXPECT_EQ(1u, icon_mapping.size()); | 928 EXPECT_EQ(1u, icon_mapping.size()); |
929 } | 929 } |
930 | 930 |
931 } // namespace history | 931 } // namespace history |
OLD | NEW |