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 |