| 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 "chrome/browser/history/history_backend.h" | 5 #include "chrome/browser/history/history_backend.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 | 319 |
| 320 // Returns a gfx::Size vector with tiny, small and large sizes. | 320 // Returns a gfx::Size vector with tiny, small and large sizes. |
| 321 const std::vector<gfx::Size> GetSizesTinySmallAndLarge() { | 321 const std::vector<gfx::Size> GetSizesTinySmallAndLarge() { |
| 322 std::vector<gfx::Size> sizes_tiny_small_and_large; | 322 std::vector<gfx::Size> sizes_tiny_small_and_large; |
| 323 sizes_tiny_small_and_large.push_back(kTinySize); | 323 sizes_tiny_small_and_large.push_back(kTinySize); |
| 324 sizes_tiny_small_and_large.push_back(kSmallSize); | 324 sizes_tiny_small_and_large.push_back(kSmallSize); |
| 325 sizes_tiny_small_and_large.push_back(kLargeSize); | 325 sizes_tiny_small_and_large.push_back(kLargeSize); |
| 326 return sizes_tiny_small_and_large; | 326 return sizes_tiny_small_and_large; |
| 327 } | 327 } |
| 328 | 328 |
| 329 // Returns 1x and 2x scale factors. | 329 // Returns 1x and 2x favicons cales. |
| 330 const std::vector<ui::ScaleFactor> GetScaleFactors1x2x() { | 330 const std::vector<float> GetFaviconScales1x2x() { |
| 331 std::vector<ui::ScaleFactor> scale_factors_1x_2x; | 331 std::vector<float> scales_1x_2x; |
| 332 scale_factors_1x_2x.push_back(ui::SCALE_FACTOR_100P); | 332 scales_1x_2x.push_back(1.0f); |
| 333 scale_factors_1x_2x.push_back(ui::SCALE_FACTOR_200P); | 333 scales_1x_2x.push_back(2.0f); |
| 334 return scale_factors_1x_2x; | 334 return scales_1x_2x; |
| 335 } | 335 } |
| 336 | 336 |
| 337 // Returns the number of icon mappings of |icon_type| to |page_url|. | 337 // Returns the number of icon mappings of |icon_type| to |page_url|. |
| 338 size_t NumIconMappingsForPageURL(const GURL& page_url, | 338 size_t NumIconMappingsForPageURL(const GURL& page_url, |
| 339 favicon_base::IconType icon_type) { | 339 favicon_base::IconType icon_type) { |
| 340 std::vector<IconMapping> icon_mappings; | 340 std::vector<IconMapping> icon_mappings; |
| 341 backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, icon_type, | 341 backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, icon_type, |
| 342 &icon_mappings); | 342 &icon_mappings); |
| 343 return icon_mappings.size(); | 343 return icon_mappings.size(); |
| 344 } | 344 } |
| (...skipping 1432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1777 backend_->SetFavicons(page_url1, favicon_base::FAVICON, favicon_bitmap_data); | 1777 backend_->SetFavicons(page_url1, favicon_base::FAVICON, favicon_bitmap_data); |
| 1778 | 1778 |
| 1779 std::vector<GURL> icon_urls; | 1779 std::vector<GURL> icon_urls; |
| 1780 icon_urls.push_back(icon_url); | 1780 icon_urls.push_back(icon_url); |
| 1781 | 1781 |
| 1782 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; | 1782 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; |
| 1783 backend_->UpdateFaviconMappingsAndFetch(page_url2, | 1783 backend_->UpdateFaviconMappingsAndFetch(page_url2, |
| 1784 icon_urls, | 1784 icon_urls, |
| 1785 favicon_base::FAVICON, | 1785 favicon_base::FAVICON, |
| 1786 kSmallSize.width(), | 1786 kSmallSize.width(), |
| 1787 GetScaleFactors1x2x(), | 1787 GetFaviconScales1x2x(), |
| 1788 &bitmap_results); | 1788 &bitmap_results); |
| 1789 | 1789 |
| 1790 // Check that the same FaviconID is mapped to both page URLs. | 1790 // Check that the same FaviconID is mapped to both page URLs. |
| 1791 std::vector<IconMapping> icon_mappings; | 1791 std::vector<IconMapping> icon_mappings; |
| 1792 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( | 1792 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( |
| 1793 page_url1, &icon_mappings)); | 1793 page_url1, &icon_mappings)); |
| 1794 EXPECT_EQ(1u, icon_mappings.size()); | 1794 EXPECT_EQ(1u, icon_mappings.size()); |
| 1795 favicon_base::FaviconID favicon_id = icon_mappings[0].icon_id; | 1795 favicon_base::FaviconID favicon_id = icon_mappings[0].icon_id; |
| 1796 EXPECT_NE(0, favicon_id); | 1796 EXPECT_NE(0, favicon_id); |
| 1797 | 1797 |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1855 EXPECT_EQ(1, num_broadcasted_notifications()); | 1855 EXPECT_EQ(1, num_broadcasted_notifications()); |
| 1856 | 1856 |
| 1857 std::vector<GURL> icon_urls; | 1857 std::vector<GURL> icon_urls; |
| 1858 icon_urls.push_back(icon_url); | 1858 icon_urls.push_back(icon_url); |
| 1859 | 1859 |
| 1860 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; | 1860 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; |
| 1861 backend_->UpdateFaviconMappingsAndFetch(page_url, | 1861 backend_->UpdateFaviconMappingsAndFetch(page_url, |
| 1862 icon_urls, | 1862 icon_urls, |
| 1863 favicon_base::FAVICON, | 1863 favicon_base::FAVICON, |
| 1864 kSmallSize.width(), | 1864 kSmallSize.width(), |
| 1865 GetScaleFactors1x2x(), | 1865 GetFaviconScales1x2x(), |
| 1866 &bitmap_results); | 1866 &bitmap_results); |
| 1867 | 1867 |
| 1868 EXPECT_EQ(icon_id, | 1868 EXPECT_EQ(icon_id, |
| 1869 backend_->thumbnail_db_->GetFaviconIDForFaviconURL( | 1869 backend_->thumbnail_db_->GetFaviconIDForFaviconURL( |
| 1870 icon_url, favicon_base::FAVICON, NULL)); | 1870 icon_url, favicon_base::FAVICON, NULL)); |
| 1871 | 1871 |
| 1872 // No notification should have been broadcast as no icon mapping, favicon, | 1872 // No notification should have been broadcast as no icon mapping, favicon, |
| 1873 // or favicon bitmap was updated, added or removed. | 1873 // or favicon bitmap was updated, added or removed. |
| 1874 EXPECT_EQ(1, num_broadcasted_notifications()); | 1874 EXPECT_EQ(1, num_broadcasted_notifications()); |
| 1875 } | 1875 } |
| (...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2192 favicon_base::FAVICON, | 2192 favicon_base::FAVICON, |
| 2193 bitmap_data, | 2193 bitmap_data, |
| 2194 kSmallSize); | 2194 kSmallSize); |
| 2195 | 2195 |
| 2196 // Request favicon bitmaps for both 1x and 2x to simulate request done by | 2196 // Request favicon bitmaps for both 1x and 2x to simulate request done by |
| 2197 // BookmarkModel::GetFavicon(). | 2197 // BookmarkModel::GetFavicon(). |
| 2198 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; | 2198 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; |
| 2199 backend_->GetFaviconsForURL(page_url, | 2199 backend_->GetFaviconsForURL(page_url, |
| 2200 favicon_base::FAVICON, | 2200 favicon_base::FAVICON, |
| 2201 kSmallSize.width(), | 2201 kSmallSize.width(), |
| 2202 GetScaleFactors1x2x(), | 2202 GetFaviconScales1x2x(), |
| 2203 &bitmap_results); | 2203 &bitmap_results); |
| 2204 | 2204 |
| 2205 EXPECT_EQ(2u, bitmap_results.size()); | 2205 EXPECT_EQ(2u, bitmap_results.size()); |
| 2206 const favicon_base::FaviconRawBitmapResult& first_result = bitmap_results[0]; | 2206 const favicon_base::FaviconRawBitmapResult& first_result = bitmap_results[0]; |
| 2207 const favicon_base::FaviconRawBitmapResult& result = | 2207 const favicon_base::FaviconRawBitmapResult& result = |
| 2208 (first_result.pixel_size == kSmallSize) ? first_result | 2208 (first_result.pixel_size == kSmallSize) ? first_result |
| 2209 : bitmap_results[1]; | 2209 : bitmap_results[1]; |
| 2210 EXPECT_TRUE(BitmapDataEqual('c', result.bitmap_data)); | 2210 EXPECT_TRUE(BitmapDataEqual('c', result.bitmap_data)); |
| 2211 } | 2211 } |
| 2212 | 2212 |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2347 icon_urls.push_back(icon_urla); | 2347 icon_urls.push_back(icon_urla); |
| 2348 icon_urls.push_back(icon_urlb); | 2348 icon_urls.push_back(icon_urlb); |
| 2349 icon_urls.push_back(icon_urlc); | 2349 icon_urls.push_back(icon_urlc); |
| 2350 | 2350 |
| 2351 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; | 2351 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; |
| 2352 backend_->UpdateFaviconMappingsAndFetch( | 2352 backend_->UpdateFaviconMappingsAndFetch( |
| 2353 page_url3, | 2353 page_url3, |
| 2354 icon_urls, | 2354 icon_urls, |
| 2355 (favicon_base::TOUCH_ICON | favicon_base::TOUCH_PRECOMPOSED_ICON), | 2355 (favicon_base::TOUCH_ICON | favicon_base::TOUCH_PRECOMPOSED_ICON), |
| 2356 kSmallSize.width(), | 2356 kSmallSize.width(), |
| 2357 GetScaleFactors1x2x(), | 2357 GetFaviconScales1x2x(), |
| 2358 &bitmap_results); | 2358 &bitmap_results); |
| 2359 | 2359 |
| 2360 // |page_url1| and |page_url2| should still be mapped to the same icon URLs. | 2360 // |page_url1| and |page_url2| should still be mapped to the same icon URLs. |
| 2361 std::vector<IconMapping> icon_mappings; | 2361 std::vector<IconMapping> icon_mappings; |
| 2362 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url1, | 2362 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url1, |
| 2363 &icon_mappings)); | 2363 &icon_mappings)); |
| 2364 EXPECT_EQ(1u, icon_mappings.size()); | 2364 EXPECT_EQ(1u, icon_mappings.size()); |
| 2365 EXPECT_EQ(icon_urla, icon_mappings[0].icon_url); | 2365 EXPECT_EQ(icon_urla, icon_mappings[0].icon_url); |
| 2366 EXPECT_EQ(favicon_base::TOUCH_ICON, icon_mappings[0].icon_type); | 2366 EXPECT_EQ(favicon_base::TOUCH_ICON, icon_mappings[0].icon_type); |
| 2367 | 2367 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 2386 | 2386 |
| 2387 // Test the results of GetFaviconsFromDB() when there are no found | 2387 // Test the results of GetFaviconsFromDB() when there are no found |
| 2388 // favicons. | 2388 // favicons. |
| 2389 TEST_F(HistoryBackendTest, GetFaviconsFromDBEmpty) { | 2389 TEST_F(HistoryBackendTest, GetFaviconsFromDBEmpty) { |
| 2390 const GURL page_url("http://www.google.com/"); | 2390 const GURL page_url("http://www.google.com/"); |
| 2391 | 2391 |
| 2392 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; | 2392 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; |
| 2393 EXPECT_FALSE(backend_->GetFaviconsFromDB(page_url, | 2393 EXPECT_FALSE(backend_->GetFaviconsFromDB(page_url, |
| 2394 favicon_base::FAVICON, | 2394 favicon_base::FAVICON, |
| 2395 kSmallSize.width(), | 2395 kSmallSize.width(), |
| 2396 GetScaleFactors1x2x(), | 2396 GetFaviconScales1x2x(), |
| 2397 &bitmap_results)); | 2397 &bitmap_results)); |
| 2398 EXPECT_TRUE(bitmap_results.empty()); | 2398 EXPECT_TRUE(bitmap_results.empty()); |
| 2399 } | 2399 } |
| 2400 | 2400 |
| 2401 // Test the results of GetFaviconsFromDB() when there are matching favicons | 2401 // Test the results of GetFaviconsFromDB() when there are matching favicons |
| 2402 // but there are no associated favicon bitmaps. | 2402 // but there are no associated favicon bitmaps. |
| 2403 TEST_F(HistoryBackendTest, GetFaviconsFromDBNoFaviconBitmaps) { | 2403 TEST_F(HistoryBackendTest, GetFaviconsFromDBNoFaviconBitmaps) { |
| 2404 const GURL page_url("http://www.google.com/"); | 2404 const GURL page_url("http://www.google.com/"); |
| 2405 const GURL icon_url("http://www.google.com/icon1"); | 2405 const GURL icon_url("http://www.google.com/icon1"); |
| 2406 | 2406 |
| 2407 favicon_base::FaviconID icon_id = | 2407 favicon_base::FaviconID icon_id = |
| 2408 backend_->thumbnail_db_->AddFavicon(icon_url, favicon_base::FAVICON); | 2408 backend_->thumbnail_db_->AddFavicon(icon_url, favicon_base::FAVICON); |
| 2409 EXPECT_NE(0, icon_id); | 2409 EXPECT_NE(0, icon_id); |
| 2410 EXPECT_NE(0, backend_->thumbnail_db_->AddIconMapping(page_url, icon_id)); | 2410 EXPECT_NE(0, backend_->thumbnail_db_->AddIconMapping(page_url, icon_id)); |
| 2411 | 2411 |
| 2412 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; | 2412 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; |
| 2413 EXPECT_FALSE(backend_->GetFaviconsFromDB(page_url, | 2413 EXPECT_FALSE(backend_->GetFaviconsFromDB(page_url, |
| 2414 favicon_base::FAVICON, | 2414 favicon_base::FAVICON, |
| 2415 kSmallSize.width(), | 2415 kSmallSize.width(), |
| 2416 GetScaleFactors1x2x(), | 2416 GetFaviconScales1x2x(), |
| 2417 &bitmap_results_out)); | 2417 &bitmap_results_out)); |
| 2418 EXPECT_TRUE(bitmap_results_out.empty()); | 2418 EXPECT_TRUE(bitmap_results_out.empty()); |
| 2419 } | 2419 } |
| 2420 | 2420 |
| 2421 // Test that GetFaviconsFromDB() returns results for the bitmaps which most | 2421 // Test that GetFaviconsFromDB() returns results for the bitmaps which most |
| 2422 // closely match the passed in desired size and scale factors. | 2422 // closely match the passed in desired size and scale factors. |
| 2423 TEST_F(HistoryBackendTest, GetFaviconsFromDBSelectClosestMatch) { | 2423 TEST_F(HistoryBackendTest, GetFaviconsFromDBSelectClosestMatch) { |
| 2424 const GURL page_url("http://www.google.com/"); | 2424 const GURL page_url("http://www.google.com/"); |
| 2425 const GURL icon_url("http://www.google.com/icon1"); | 2425 const GURL icon_url("http://www.google.com/icon1"); |
| 2426 | 2426 |
| 2427 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 2427 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 2428 GenerateFaviconBitmapData(icon_url, GetSizesTinySmallAndLarge(), | 2428 GenerateFaviconBitmapData(icon_url, GetSizesTinySmallAndLarge(), |
| 2429 &favicon_bitmap_data); | 2429 &favicon_bitmap_data); |
| 2430 | 2430 |
| 2431 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); | 2431 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); |
| 2432 | 2432 |
| 2433 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; | 2433 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; |
| 2434 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, | 2434 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, |
| 2435 favicon_base::FAVICON, | 2435 favicon_base::FAVICON, |
| 2436 kSmallSize.width(), | 2436 kSmallSize.width(), |
| 2437 GetScaleFactors1x2x(), | 2437 GetFaviconScales1x2x(), |
| 2438 &bitmap_results_out)); | 2438 &bitmap_results_out)); |
| 2439 | 2439 |
| 2440 // The bitmap data for the small and large bitmaps should be returned as their | 2440 // The bitmap data for the small and large bitmaps should be returned as their |
| 2441 // sizes match exactly. | 2441 // sizes match exactly. |
| 2442 EXPECT_EQ(2u, bitmap_results_out.size()); | 2442 EXPECT_EQ(2u, bitmap_results_out.size()); |
| 2443 // No required order for results. | 2443 // No required order for results. |
| 2444 if (bitmap_results_out[0].pixel_size == kLargeSize) { | 2444 if (bitmap_results_out[0].pixel_size == kLargeSize) { |
| 2445 favicon_base::FaviconRawBitmapResult tmp_result = bitmap_results_out[0]; | 2445 favicon_base::FaviconRawBitmapResult tmp_result = bitmap_results_out[0]; |
| 2446 bitmap_results_out[0] = bitmap_results_out[1]; | 2446 bitmap_results_out[0] = bitmap_results_out[1]; |
| 2447 bitmap_results_out[1] = tmp_result; | 2447 bitmap_results_out[1] = tmp_result; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 2471 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 2471 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 2472 GenerateFaviconBitmapData(icon_url1, GetSizesSmall(), icon_url2, | 2472 GenerateFaviconBitmapData(icon_url1, GetSizesSmall(), icon_url2, |
| 2473 GetSizesLarge(), &favicon_bitmap_data); | 2473 GetSizesLarge(), &favicon_bitmap_data); |
| 2474 | 2474 |
| 2475 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); | 2475 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); |
| 2476 | 2476 |
| 2477 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; | 2477 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; |
| 2478 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, | 2478 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, |
| 2479 favicon_base::FAVICON, | 2479 favicon_base::FAVICON, |
| 2480 kSmallSize.width(), | 2480 kSmallSize.width(), |
| 2481 GetScaleFactors1x2x(), | 2481 GetFaviconScales1x2x(), |
| 2482 &bitmap_results_out)); | 2482 &bitmap_results_out)); |
| 2483 | 2483 |
| 2484 // The results should have results for the icon URL with the large bitmap as | 2484 // The results should have results for the icon URL with the large bitmap as |
| 2485 // downscaling is preferred to upscaling. | 2485 // downscaling is preferred to upscaling. |
| 2486 EXPECT_EQ(1u, bitmap_results_out.size()); | 2486 EXPECT_EQ(1u, bitmap_results_out.size()); |
| 2487 EXPECT_EQ(kLargeSize, bitmap_results_out[0].pixel_size); | 2487 EXPECT_EQ(kLargeSize, bitmap_results_out[0].pixel_size); |
| 2488 EXPECT_EQ(icon_url2, bitmap_results_out[0].icon_url); | 2488 EXPECT_EQ(icon_url2, bitmap_results_out[0].icon_url); |
| 2489 } | 2489 } |
| 2490 | 2490 |
| 2491 // Test the results of GetFaviconsFromDB() when called with different | 2491 // Test the results of GetFaviconsFromDB() when called with different |
| 2492 // |icon_types|. | 2492 // |icon_types|. |
| 2493 TEST_F(HistoryBackendTest, GetFaviconsFromDBIconType) { | 2493 TEST_F(HistoryBackendTest, GetFaviconsFromDBIconType) { |
| 2494 const GURL page_url("http://www.google.com/"); | 2494 const GURL page_url("http://www.google.com/"); |
| 2495 const GURL icon_url1("http://www.google.com/icon1.png"); | 2495 const GURL icon_url1("http://www.google.com/icon1.png"); |
| 2496 const GURL icon_url2("http://www.google.com/icon2.png"); | 2496 const GURL icon_url2("http://www.google.com/icon2.png"); |
| 2497 | 2497 |
| 2498 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 2498 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 2499 GenerateFaviconBitmapData(icon_url1, GetSizesSmall(), &favicon_bitmap_data); | 2499 GenerateFaviconBitmapData(icon_url1, GetSizesSmall(), &favicon_bitmap_data); |
| 2500 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); | 2500 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); |
| 2501 | 2501 |
| 2502 GenerateFaviconBitmapData(icon_url2, GetSizesSmall(), &favicon_bitmap_data); | 2502 GenerateFaviconBitmapData(icon_url2, GetSizesSmall(), &favicon_bitmap_data); |
| 2503 backend_->SetFavicons( | 2503 backend_->SetFavicons( |
| 2504 page_url, favicon_base::TOUCH_ICON, favicon_bitmap_data); | 2504 page_url, favicon_base::TOUCH_ICON, favicon_bitmap_data); |
| 2505 | 2505 |
| 2506 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; | 2506 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; |
| 2507 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, | 2507 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, |
| 2508 favicon_base::FAVICON, | 2508 favicon_base::FAVICON, |
| 2509 kSmallSize.width(), | 2509 kSmallSize.width(), |
| 2510 GetScaleFactors1x2x(), | 2510 GetFaviconScales1x2x(), |
| 2511 &bitmap_results_out)); | 2511 &bitmap_results_out)); |
| 2512 | 2512 |
| 2513 EXPECT_EQ(1u, bitmap_results_out.size()); | 2513 EXPECT_EQ(1u, bitmap_results_out.size()); |
| 2514 EXPECT_EQ(favicon_base::FAVICON, bitmap_results_out[0].icon_type); | 2514 EXPECT_EQ(favicon_base::FAVICON, bitmap_results_out[0].icon_type); |
| 2515 EXPECT_EQ(icon_url1, bitmap_results_out[0].icon_url); | 2515 EXPECT_EQ(icon_url1, bitmap_results_out[0].icon_url); |
| 2516 | 2516 |
| 2517 bitmap_results_out.clear(); | 2517 bitmap_results_out.clear(); |
| 2518 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, | 2518 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, |
| 2519 favicon_base::TOUCH_ICON, | 2519 favicon_base::TOUCH_ICON, |
| 2520 kSmallSize.width(), | 2520 kSmallSize.width(), |
| 2521 GetScaleFactors1x2x(), | 2521 GetFaviconScales1x2x(), |
| 2522 &bitmap_results_out)); | 2522 &bitmap_results_out)); |
| 2523 | 2523 |
| 2524 EXPECT_EQ(1u, bitmap_results_out.size()); | 2524 EXPECT_EQ(1u, bitmap_results_out.size()); |
| 2525 EXPECT_EQ(favicon_base::TOUCH_ICON, bitmap_results_out[0].icon_type); | 2525 EXPECT_EQ(favicon_base::TOUCH_ICON, bitmap_results_out[0].icon_type); |
| 2526 EXPECT_EQ(icon_url2, bitmap_results_out[0].icon_url); | 2526 EXPECT_EQ(icon_url2, bitmap_results_out[0].icon_url); |
| 2527 } | 2527 } |
| 2528 | 2528 |
| 2529 // Test that GetFaviconsFromDB() correctly sets the expired flag for bitmap | 2529 // Test that GetFaviconsFromDB() correctly sets the expired flag for bitmap |
| 2530 // reults. | 2530 // reults. |
| 2531 TEST_F(HistoryBackendTest, GetFaviconsFromDBExpired) { | 2531 TEST_F(HistoryBackendTest, GetFaviconsFromDBExpired) { |
| 2532 const GURL page_url("http://www.google.com/"); | 2532 const GURL page_url("http://www.google.com/"); |
| 2533 const GURL icon_url("http://www.google.com/icon.png"); | 2533 const GURL icon_url("http://www.google.com/icon.png"); |
| 2534 | 2534 |
| 2535 std::vector<unsigned char> data; | 2535 std::vector<unsigned char> data; |
| 2536 data.push_back('a'); | 2536 data.push_back('a'); |
| 2537 scoped_refptr<base::RefCountedBytes> bitmap_data( | 2537 scoped_refptr<base::RefCountedBytes> bitmap_data( |
| 2538 base::RefCountedBytes::TakeVector(&data)); | 2538 base::RefCountedBytes::TakeVector(&data)); |
| 2539 base::Time last_updated = base::Time::FromTimeT(0); | 2539 base::Time last_updated = base::Time::FromTimeT(0); |
| 2540 favicon_base::FaviconID icon_id = backend_->thumbnail_db_->AddFavicon( | 2540 favicon_base::FaviconID icon_id = backend_->thumbnail_db_->AddFavicon( |
| 2541 icon_url, favicon_base::FAVICON, bitmap_data, last_updated, kSmallSize); | 2541 icon_url, favicon_base::FAVICON, bitmap_data, last_updated, kSmallSize); |
| 2542 EXPECT_NE(0, icon_id); | 2542 EXPECT_NE(0, icon_id); |
| 2543 EXPECT_NE(0, backend_->thumbnail_db_->AddIconMapping(page_url, icon_id)); | 2543 EXPECT_NE(0, backend_->thumbnail_db_->AddIconMapping(page_url, icon_id)); |
| 2544 | 2544 |
| 2545 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; | 2545 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; |
| 2546 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, | 2546 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, |
| 2547 favicon_base::FAVICON, | 2547 favicon_base::FAVICON, |
| 2548 kSmallSize.width(), | 2548 kSmallSize.width(), |
| 2549 GetScaleFactors1x2x(), | 2549 GetFaviconScales1x2x(), |
| 2550 &bitmap_results_out)); | 2550 &bitmap_results_out)); |
| 2551 | 2551 |
| 2552 EXPECT_EQ(1u, bitmap_results_out.size()); | 2552 EXPECT_EQ(1u, bitmap_results_out.size()); |
| 2553 EXPECT_TRUE(bitmap_results_out[0].expired); | 2553 EXPECT_TRUE(bitmap_results_out[0].expired); |
| 2554 } | 2554 } |
| 2555 | 2555 |
| 2556 // Check that UpdateFaviconMappingsAndFetch() call back to the UI when there is | 2556 // Check that UpdateFaviconMappingsAndFetch() call back to the UI when there is |
| 2557 // no valid thumbnail database. | 2557 // no valid thumbnail database. |
| 2558 TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchNoDB) { | 2558 TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchNoDB) { |
| 2559 // Make the thumbnail database invalid. | 2559 // Make the thumbnail database invalid. |
| 2560 backend_->thumbnail_db_.reset(); | 2560 backend_->thumbnail_db_.reset(); |
| 2561 | 2561 |
| 2562 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; | 2562 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; |
| 2563 | 2563 |
| 2564 backend_->UpdateFaviconMappingsAndFetch(GURL(), | 2564 backend_->UpdateFaviconMappingsAndFetch(GURL(), |
| 2565 std::vector<GURL>(), | 2565 std::vector<GURL>(), |
| 2566 favicon_base::FAVICON, | 2566 favicon_base::FAVICON, |
| 2567 kSmallSize.width(), | 2567 kSmallSize.width(), |
| 2568 GetScaleFactors1x2x(), | 2568 GetFaviconScales1x2x(), |
| 2569 &bitmap_results); | 2569 &bitmap_results); |
| 2570 | 2570 |
| 2571 EXPECT_TRUE(bitmap_results.empty()); | 2571 EXPECT_TRUE(bitmap_results.empty()); |
| 2572 } | 2572 } |
| 2573 | 2573 |
| 2574 TEST_F(HistoryBackendTest, CloneFaviconIsRestrictedToSameDomain) { | 2574 TEST_F(HistoryBackendTest, CloneFaviconIsRestrictedToSameDomain) { |
| 2575 const GURL url("http://www.google.com/"); | 2575 const GURL url("http://www.google.com/"); |
| 2576 const GURL same_domain_url("http://www.google.com/subdir/index.html"); | 2576 const GURL same_domain_url("http://www.google.com/subdir/index.html"); |
| 2577 const GURL foreign_domain_url("http://www.not-google.com/"); | 2577 const GURL foreign_domain_url("http://www.not-google.com/"); |
| 2578 const GURL icon_url("http://www.google.com/icon.png"); | 2578 const GURL icon_url("http://www.google.com/icon.png"); |
| 2579 | 2579 |
| 2580 // Add a favicon | 2580 // Add a favicon |
| 2581 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 2581 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 2582 GenerateFaviconBitmapData(icon_url, GetSizesSmall(), &favicon_bitmap_data); | 2582 GenerateFaviconBitmapData(icon_url, GetSizesSmall(), &favicon_bitmap_data); |
| 2583 backend_->SetFavicons(url, favicon_base::FAVICON, favicon_bitmap_data); | 2583 backend_->SetFavicons(url, favicon_base::FAVICON, favicon_bitmap_data); |
| 2584 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( | 2584 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( |
| 2585 url, favicon_base::FAVICON, NULL)); | 2585 url, favicon_base::FAVICON, NULL)); |
| 2586 | 2586 |
| 2587 // Validate starting state. | 2587 // Validate starting state. |
| 2588 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; | 2588 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; |
| 2589 EXPECT_TRUE(backend_->GetFaviconsFromDB(url, | 2589 EXPECT_TRUE(backend_->GetFaviconsFromDB(url, |
| 2590 favicon_base::FAVICON, | 2590 favicon_base::FAVICON, |
| 2591 kSmallSize.width(), | 2591 kSmallSize.width(), |
| 2592 GetScaleFactors1x2x(), | 2592 GetFaviconScales1x2x(), |
| 2593 &bitmap_results_out)); | 2593 &bitmap_results_out)); |
| 2594 EXPECT_FALSE(backend_->GetFaviconsFromDB(same_domain_url, | 2594 EXPECT_FALSE(backend_->GetFaviconsFromDB(same_domain_url, |
| 2595 favicon_base::FAVICON, | 2595 favicon_base::FAVICON, |
| 2596 kSmallSize.width(), | 2596 kSmallSize.width(), |
| 2597 GetScaleFactors1x2x(), | 2597 GetFaviconScales1x2x(), |
| 2598 &bitmap_results_out)); | 2598 &bitmap_results_out)); |
| 2599 EXPECT_FALSE(backend_->GetFaviconsFromDB(foreign_domain_url, | 2599 EXPECT_FALSE(backend_->GetFaviconsFromDB(foreign_domain_url, |
| 2600 favicon_base::FAVICON, | 2600 favicon_base::FAVICON, |
| 2601 kSmallSize.width(), | 2601 kSmallSize.width(), |
| 2602 GetScaleFactors1x2x(), | 2602 GetFaviconScales1x2x(), |
| 2603 &bitmap_results_out)); | 2603 &bitmap_results_out)); |
| 2604 | 2604 |
| 2605 // Same-domain cloning should work. | 2605 // Same-domain cloning should work. |
| 2606 backend_->CloneFavicons(url, same_domain_url); | 2606 backend_->CloneFavicons(url, same_domain_url); |
| 2607 EXPECT_TRUE(backend_->GetFaviconsFromDB(same_domain_url, | 2607 EXPECT_TRUE(backend_->GetFaviconsFromDB(same_domain_url, |
| 2608 favicon_base::FAVICON, | 2608 favicon_base::FAVICON, |
| 2609 kSmallSize.width(), | 2609 kSmallSize.width(), |
| 2610 GetScaleFactors1x2x(), | 2610 GetFaviconScales1x2x(), |
| 2611 &bitmap_results_out)); | 2611 &bitmap_results_out)); |
| 2612 | 2612 |
| 2613 // Foreign-domain cloning is forbidden. | 2613 // Foreign-domain cloning is forbidden. |
| 2614 backend_->CloneFavicons(url, foreign_domain_url); | 2614 backend_->CloneFavicons(url, foreign_domain_url); |
| 2615 EXPECT_FALSE(backend_->GetFaviconsFromDB(foreign_domain_url, | 2615 EXPECT_FALSE(backend_->GetFaviconsFromDB(foreign_domain_url, |
| 2616 favicon_base::FAVICON, | 2616 favicon_base::FAVICON, |
| 2617 kSmallSize.width(), | 2617 kSmallSize.width(), |
| 2618 GetScaleFactors1x2x(), | 2618 GetFaviconScales1x2x(), |
| 2619 &bitmap_results_out)); | 2619 &bitmap_results_out)); |
| 2620 } | 2620 } |
| 2621 | 2621 |
| 2622 TEST_F(HistoryBackendTest, QueryFilteredURLs) { | 2622 TEST_F(HistoryBackendTest, QueryFilteredURLs) { |
| 2623 const char* google = "http://www.google.com/"; | 2623 const char* google = "http://www.google.com/"; |
| 2624 const char* yahoo = "http://www.yahoo.com/"; | 2624 const char* yahoo = "http://www.yahoo.com/"; |
| 2625 const char* yahoo_sports = "http://sports.yahoo.com/"; | 2625 const char* yahoo_sports = "http://sports.yahoo.com/"; |
| 2626 const char* yahoo_sports_with_article1 = | 2626 const char* yahoo_sports_with_article1 = |
| 2627 "http://sports.yahoo.com/article1.htm"; | 2627 "http://sports.yahoo.com/article1.htm"; |
| 2628 const char* yahoo_sports_with_article2 = | 2628 const char* yahoo_sports_with_article2 = |
| (...skipping 728 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3357 // Verify that the second term is no longer returned as result, and also check | 3357 // Verify that the second term is no longer returned as result, and also check |
| 3358 // at the low level that it is gone for good. The term corresponding to the | 3358 // at the low level that it is gone for good. The term corresponding to the |
| 3359 // first URLRow should not be affected. | 3359 // first URLRow should not be affected. |
| 3360 EXPECT_EQ(1u, GetNumberOfMatchingSearchTerms(kTestKeywordId, term1)); | 3360 EXPECT_EQ(1u, GetNumberOfMatchingSearchTerms(kTestKeywordId, term1)); |
| 3361 EXPECT_EQ(0u, GetNumberOfMatchingSearchTerms(kTestKeywordId, term2)); | 3361 EXPECT_EQ(0u, GetNumberOfMatchingSearchTerms(kTestKeywordId, term2)); |
| 3362 EXPECT_TRUE(mem_backend_->db()->GetKeywordSearchTermRow(row1.id(), NULL)); | 3362 EXPECT_TRUE(mem_backend_->db()->GetKeywordSearchTermRow(row1.id(), NULL)); |
| 3363 EXPECT_FALSE(mem_backend_->db()->GetKeywordSearchTermRow(row2.id(), NULL)); | 3363 EXPECT_FALSE(mem_backend_->db()->GetKeywordSearchTermRow(row2.id(), NULL)); |
| 3364 } | 3364 } |
| 3365 | 3365 |
| 3366 } // namespace history | 3366 } // namespace history |
| OLD | NEW |