| 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 30 matching lines...) Expand all Loading... |
| 41 | 41 |
| 42 using base::Time; | 42 using base::Time; |
| 43 | 43 |
| 44 // This file only tests functionality where it is most convenient to call the | 44 // This file only tests functionality where it is most convenient to call the |
| 45 // backend directly. Most of the history backend functions are tested by the | 45 // backend directly. Most of the history backend functions are tested by the |
| 46 // history unit test. Because of the elaborate callbacks involved, this is no | 46 // history unit test. Because of the elaborate callbacks involved, this is no |
| 47 // harder than calling it directly for many things. | 47 // harder than calling it directly for many things. |
| 48 | 48 |
| 49 namespace { | 49 namespace { |
| 50 | 50 |
| 51 static const gfx::Size kTinySize = gfx::Size(10, 10); | 51 const int kTinyEdgeSize = 10; |
| 52 static const gfx::Size kSmallSize = gfx::Size(16, 16); | 52 const int kSmallEdgeSize = 16; |
| 53 static const gfx::Size kLargeSize = gfx::Size(32, 32); | 53 const int kLargeEdgeSize = 32; |
| 54 |
| 55 const gfx::Size kTinySize = gfx::Size(kTinyEdgeSize, kTinyEdgeSize); |
| 56 const gfx::Size kSmallSize = gfx::Size(kSmallEdgeSize, kSmallEdgeSize); |
| 57 const gfx::Size kLargeSize = gfx::Size(kLargeEdgeSize, kLargeEdgeSize); |
| 54 | 58 |
| 55 // Comparison functions as to make it easier to check results of | 59 // Comparison functions as to make it easier to check results of |
| 56 // GetFaviconBitmaps() and GetIconMappingsForPageURL(). | 60 // GetFaviconBitmaps() and GetIconMappingsForPageURL(). |
| 57 bool IconMappingLessThan(const history::IconMapping& a, | 61 bool IconMappingLessThan(const history::IconMapping& a, |
| 58 const history::IconMapping& b) { | 62 const history::IconMapping& b) { |
| 59 return a.icon_url < b.icon_url; | 63 return a.icon_url < b.icon_url; |
| 60 } | 64 } |
| 61 | 65 |
| 62 bool FaviconBitmapLessThan(const history::FaviconBitmap& a, | 66 bool FaviconBitmapLessThan(const history::FaviconBitmap& a, |
| 63 const history::FaviconBitmap& b) { | 67 const history::FaviconBitmap& b) { |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 int GetTransition(const GURL& url) { | 292 int GetTransition(const GURL& url) { |
| 289 if (!url.is_valid()) | 293 if (!url.is_valid()) |
| 290 return 0; | 294 return 0; |
| 291 URLRow row; | 295 URLRow row; |
| 292 URLID id = backend_->db()->GetRowForURL(url, &row); | 296 URLID id = backend_->db()->GetRowForURL(url, &row); |
| 293 VisitVector visits; | 297 VisitVector visits; |
| 294 EXPECT_TRUE(backend_->db()->GetVisitsForURL(id, &visits)); | 298 EXPECT_TRUE(backend_->db()->GetVisitsForURL(id, &visits)); |
| 295 return visits[0].transition; | 299 return visits[0].transition; |
| 296 } | 300 } |
| 297 | 301 |
| 298 // Returns a gfx::Size vector with small size. | 302 // Returns a vector with the small edge size. |
| 299 const std::vector<gfx::Size> GetSizesSmall() { | 303 const std::vector<int> GetEdgeSizesSmall() { |
| 300 std::vector<gfx::Size> sizes_small; | 304 std::vector<int> sizes_small; |
| 301 sizes_small.push_back(kSmallSize); | 305 sizes_small.push_back(kSmallEdgeSize); |
| 302 return sizes_small; | 306 return sizes_small; |
| 303 } | 307 } |
| 304 | 308 |
| 305 // Returns a gfx::Size vector with large size. | 309 // Returns a vector with the large edge size. |
| 306 const std::vector<gfx::Size> GetSizesLarge() { | 310 const std::vector<int> GetEdgeSizesLarge() { |
| 307 std::vector<gfx::Size> sizes_large; | 311 std::vector<int> sizes_large; |
| 308 sizes_large.push_back(kLargeSize); | 312 sizes_large.push_back(kLargeEdgeSize); |
| 309 return sizes_large; | 313 return sizes_large; |
| 310 } | 314 } |
| 311 | 315 |
| 312 // Returns a gfx::Size vector with small and large sizes. | 316 // Returns a vector with the small and large edge sizes. |
| 313 const std::vector<gfx::Size> GetSizesSmallAndLarge() { | 317 const std::vector<int> GetEdgeSizesSmallAndLarge() { |
| 314 std::vector<gfx::Size> sizes_small_and_large; | 318 std::vector<int> sizes_small_and_large; |
| 315 sizes_small_and_large.push_back(kSmallSize); | 319 sizes_small_and_large.push_back(kSmallEdgeSize); |
| 316 sizes_small_and_large.push_back(kLargeSize); | 320 sizes_small_and_large.push_back(kLargeEdgeSize); |
| 317 return sizes_small_and_large; | 321 return sizes_small_and_large; |
| 318 } | 322 } |
| 319 | 323 |
| 320 // Returns a gfx::Size vector with tiny, small and large sizes. | 324 // Returns a vector with the tiny, small, and large edge sizes. |
| 321 const std::vector<gfx::Size> GetSizesTinySmallAndLarge() { | 325 const std::vector<int> GetEdgeSizesTinySmallAndLarge() { |
| 322 std::vector<gfx::Size> sizes_tiny_small_and_large; | 326 std::vector<int> sizes_tiny_small_and_large; |
| 323 sizes_tiny_small_and_large.push_back(kTinySize); | 327 sizes_tiny_small_and_large.push_back(kTinyEdgeSize); |
| 324 sizes_tiny_small_and_large.push_back(kSmallSize); | 328 sizes_tiny_small_and_large.push_back(kSmallEdgeSize); |
| 325 sizes_tiny_small_and_large.push_back(kLargeSize); | 329 sizes_tiny_small_and_large.push_back(kLargeEdgeSize); |
| 326 return sizes_tiny_small_and_large; | 330 return sizes_tiny_small_and_large; |
| 327 } | 331 } |
| 328 | 332 |
| 329 // Returns 1x and 2x scale factors. | |
| 330 const std::vector<ui::ScaleFactor> GetScaleFactors1x2x() { | |
| 331 std::vector<ui::ScaleFactor> scale_factors_1x_2x; | |
| 332 scale_factors_1x_2x.push_back(ui::SCALE_FACTOR_100P); | |
| 333 scale_factors_1x_2x.push_back(ui::SCALE_FACTOR_200P); | |
| 334 return scale_factors_1x_2x; | |
| 335 } | |
| 336 | |
| 337 // Returns the number of icon mappings of |icon_type| to |page_url|. | 333 // Returns the number of icon mappings of |icon_type| to |page_url|. |
| 338 size_t NumIconMappingsForPageURL(const GURL& page_url, | 334 size_t NumIconMappingsForPageURL(const GURL& page_url, |
| 339 favicon_base::IconType icon_type) { | 335 favicon_base::IconType icon_type) { |
| 340 std::vector<IconMapping> icon_mappings; | 336 std::vector<IconMapping> icon_mappings; |
| 341 backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, icon_type, | 337 backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, icon_type, |
| 342 &icon_mappings); | 338 &icon_mappings); |
| 343 return icon_mappings.size(); | 339 return icon_mappings.size(); |
| 344 } | 340 } |
| 345 | 341 |
| 346 // Returns the icon mappings for |page_url| sorted alphabetically by icon | 342 // Returns the icon mappings for |page_url| sorted alphabetically by icon |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 return false; | 376 return false; |
| 381 *favicon_bitmap = favicon_bitmaps[0]; | 377 *favicon_bitmap = favicon_bitmaps[0]; |
| 382 return true; | 378 return true; |
| 383 } | 379 } |
| 384 | 380 |
| 385 // Generates |favicon_bitmap_data| with entries for the icon_urls and sizes | 381 // Generates |favicon_bitmap_data| with entries for the icon_urls and sizes |
| 386 // specified. The bitmap_data for entries are lowercase letters of the | 382 // specified. The bitmap_data for entries are lowercase letters of the |
| 387 // alphabet starting at 'a' for the entry at index 0. | 383 // alphabet starting at 'a' for the entry at index 0. |
| 388 void GenerateFaviconBitmapData( | 384 void GenerateFaviconBitmapData( |
| 389 const GURL& icon_url1, | 385 const GURL& icon_url1, |
| 390 const std::vector<gfx::Size>& icon_url1_sizes, | 386 const std::vector<int>& icon_url1_sizes, |
| 391 std::vector<favicon_base::FaviconRawBitmapData>* favicon_bitmap_data) { | 387 std::vector<favicon_base::FaviconRawBitmapData>* favicon_bitmap_data) { |
| 392 GenerateFaviconBitmapData(icon_url1, icon_url1_sizes, GURL(), | 388 GenerateFaviconBitmapData(icon_url1, icon_url1_sizes, GURL(), |
| 393 std::vector<gfx::Size>(), favicon_bitmap_data); | 389 std::vector<int>(), favicon_bitmap_data); |
| 394 } | 390 } |
| 395 | 391 |
| 396 void GenerateFaviconBitmapData( | 392 void GenerateFaviconBitmapData( |
| 397 const GURL& icon_url1, | 393 const GURL& icon_url1, |
| 398 const std::vector<gfx::Size>& icon_url1_sizes, | 394 const std::vector<int>& icon_url1_sizes, |
| 399 const GURL& icon_url2, | 395 const GURL& icon_url2, |
| 400 const std::vector<gfx::Size>& icon_url2_sizes, | 396 const std::vector<int>& icon_url2_sizes, |
| 401 std::vector<favicon_base::FaviconRawBitmapData>* favicon_bitmap_data) { | 397 std::vector<favicon_base::FaviconRawBitmapData>* favicon_bitmap_data) { |
| 402 favicon_bitmap_data->clear(); | 398 favicon_bitmap_data->clear(); |
| 403 | 399 |
| 404 char bitmap_char = 'a'; | 400 char bitmap_char = 'a'; |
| 405 for (size_t i = 0; i < icon_url1_sizes.size(); ++i) { | 401 for (size_t i = 0; i < icon_url1_sizes.size(); ++i) { |
| 406 std::vector<unsigned char> data; | 402 std::vector<unsigned char> data; |
| 407 data.push_back(bitmap_char); | 403 data.push_back(bitmap_char); |
| 408 favicon_base::FaviconRawBitmapData bitmap_data_element; | 404 favicon_base::FaviconRawBitmapData bitmap_data_element; |
| 409 bitmap_data_element.bitmap_data = | 405 bitmap_data_element.bitmap_data = |
| 410 base::RefCountedBytes::TakeVector(&data); | 406 base::RefCountedBytes::TakeVector(&data); |
| 411 bitmap_data_element.pixel_size = icon_url1_sizes[i]; | 407 bitmap_data_element.pixel_size = |
| 408 gfx::Size(icon_url1_sizes[i], icon_url1_sizes[i]); |
| 412 bitmap_data_element.icon_url = icon_url1; | 409 bitmap_data_element.icon_url = icon_url1; |
| 413 favicon_bitmap_data->push_back(bitmap_data_element); | 410 favicon_bitmap_data->push_back(bitmap_data_element); |
| 414 | 411 |
| 415 ++bitmap_char; | 412 ++bitmap_char; |
| 416 } | 413 } |
| 417 | 414 |
| 418 for (size_t i = 0; i < icon_url2_sizes.size(); ++i) { | 415 for (size_t i = 0; i < icon_url2_sizes.size(); ++i) { |
| 419 std::vector<unsigned char> data; | 416 std::vector<unsigned char> data; |
| 420 data.push_back(bitmap_char); | 417 data.push_back(bitmap_char); |
| 421 favicon_base::FaviconRawBitmapData bitmap_data_element; | 418 favicon_base::FaviconRawBitmapData bitmap_data_element; |
| 422 bitmap_data_element.bitmap_data = | 419 bitmap_data_element.bitmap_data = |
| 423 base::RefCountedBytes::TakeVector(&data); | 420 base::RefCountedBytes::TakeVector(&data); |
| 424 bitmap_data_element.pixel_size = icon_url2_sizes[i]; | 421 bitmap_data_element.pixel_size = |
| 422 gfx::Size(icon_url2_sizes[i], icon_url2_sizes[i]); |
| 425 bitmap_data_element.icon_url = icon_url2; | 423 bitmap_data_element.icon_url = icon_url2; |
| 426 favicon_bitmap_data->push_back(bitmap_data_element); | 424 favicon_bitmap_data->push_back(bitmap_data_element); |
| 427 | 425 |
| 428 ++bitmap_char; | 426 ++bitmap_char; |
| 429 } | 427 } |
| 430 } | 428 } |
| 431 | 429 |
| 432 // Returns true if |bitmap_data| is equal to |expected_data|. | 430 // Returns true if |bitmap_data| is equal to |expected_data|. |
| 433 bool BitmapDataEqual(char expected_data, | 431 bool BitmapDataEqual(char expected_data, |
| 434 scoped_refptr<base::RefCountedMemory> bitmap_data) { | 432 scoped_refptr<base::RefCountedMemory> bitmap_data) { |
| (...skipping 1096 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1531 history::RedirectList redirects; | 1529 history::RedirectList redirects; |
| 1532 redirects.push_back(url2); | 1530 redirects.push_back(url2); |
| 1533 redirects.push_back(url1); | 1531 redirects.push_back(url1); |
| 1534 backend_->recent_redirects_.Put(url1, redirects); | 1532 backend_->recent_redirects_.Put(url1, redirects); |
| 1535 | 1533 |
| 1536 const GURL icon_url1("http://www.google.com/icon"); | 1534 const GURL icon_url1("http://www.google.com/icon"); |
| 1537 const GURL icon_url2("http://www.google.com/icon2"); | 1535 const GURL icon_url2("http://www.google.com/icon2"); |
| 1538 | 1536 |
| 1539 // Generate bitmap data for a page with two favicons. | 1537 // Generate bitmap data for a page with two favicons. |
| 1540 std::vector<favicon_base::FaviconRawBitmapData> two_favicon_bitmap_data; | 1538 std::vector<favicon_base::FaviconRawBitmapData> two_favicon_bitmap_data; |
| 1541 GenerateFaviconBitmapData(icon_url1, GetSizesSmallAndLarge(), | 1539 GenerateFaviconBitmapData(icon_url1, GetEdgeSizesSmallAndLarge(), |
| 1542 icon_url2, GetSizesSmallAndLarge(), &two_favicon_bitmap_data); | 1540 icon_url2, GetEdgeSizesSmallAndLarge(), &two_favicon_bitmap_data); |
| 1543 | 1541 |
| 1544 // Generate bitmap data for a page with a single favicon. | 1542 // Generate bitmap data for a page with a single favicon. |
| 1545 std::vector<favicon_base::FaviconRawBitmapData> one_favicon_bitmap_data; | 1543 std::vector<favicon_base::FaviconRawBitmapData> one_favicon_bitmap_data; |
| 1546 GenerateFaviconBitmapData(icon_url1, GetSizesSmallAndLarge(), | 1544 GenerateFaviconBitmapData(icon_url1, GetEdgeSizesSmallAndLarge(), |
| 1547 &one_favicon_bitmap_data); | 1545 &one_favicon_bitmap_data); |
| 1548 | 1546 |
| 1549 // Add two favicons | 1547 // Add two favicons |
| 1550 backend_->SetFavicons(url1, favicon_base::FAVICON, two_favicon_bitmap_data); | 1548 backend_->SetFavicons(url1, favicon_base::FAVICON, two_favicon_bitmap_data); |
| 1551 EXPECT_EQ(2u, NumIconMappingsForPageURL(url1, favicon_base::FAVICON)); | 1549 EXPECT_EQ(2u, NumIconMappingsForPageURL(url1, favicon_base::FAVICON)); |
| 1552 EXPECT_EQ(2u, NumIconMappingsForPageURL(url2, favicon_base::FAVICON)); | 1550 EXPECT_EQ(2u, NumIconMappingsForPageURL(url2, favicon_base::FAVICON)); |
| 1553 | 1551 |
| 1554 // Add one touch_icon | 1552 // Add one touch_icon |
| 1555 backend_->SetFavicons( | 1553 backend_->SetFavicons( |
| 1556 url1, favicon_base::TOUCH_ICON, one_favicon_bitmap_data); | 1554 url1, favicon_base::TOUCH_ICON, one_favicon_bitmap_data); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1593 EXPECT_EQ(2u, NumIconMappingsForPageURL(url1, favicon_base::FAVICON)); | 1591 EXPECT_EQ(2u, NumIconMappingsForPageURL(url1, favicon_base::FAVICON)); |
| 1594 } | 1592 } |
| 1595 | 1593 |
| 1596 // Test that there is no churn in icon mappings from calling | 1594 // Test that there is no churn in icon mappings from calling |
| 1597 // SetFavicons() twice with the same |favicon_bitmap_data| parameter. | 1595 // SetFavicons() twice with the same |favicon_bitmap_data| parameter. |
| 1598 TEST_F(HistoryBackendTest, SetFaviconMappingsForPageDuplicates) { | 1596 TEST_F(HistoryBackendTest, SetFaviconMappingsForPageDuplicates) { |
| 1599 const GURL url("http://www.google.com/"); | 1597 const GURL url("http://www.google.com/"); |
| 1600 const GURL icon_url("http://www.google.com/icon"); | 1598 const GURL icon_url("http://www.google.com/icon"); |
| 1601 | 1599 |
| 1602 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 1600 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 1603 GenerateFaviconBitmapData(icon_url, GetSizesSmallAndLarge(), | 1601 GenerateFaviconBitmapData(icon_url, GetEdgeSizesSmallAndLarge(), |
| 1604 &favicon_bitmap_data); | 1602 &favicon_bitmap_data); |
| 1605 | 1603 |
| 1606 backend_->SetFavicons(url, favicon_base::FAVICON, favicon_bitmap_data); | 1604 backend_->SetFavicons(url, favicon_base::FAVICON, favicon_bitmap_data); |
| 1607 | 1605 |
| 1608 std::vector<IconMapping> icon_mappings; | 1606 std::vector<IconMapping> icon_mappings; |
| 1609 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( | 1607 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( |
| 1610 url, favicon_base::FAVICON, &icon_mappings)); | 1608 url, favicon_base::FAVICON, &icon_mappings)); |
| 1611 EXPECT_EQ(1u, icon_mappings.size()); | 1609 EXPECT_EQ(1u, icon_mappings.size()); |
| 1612 IconMappingID mapping_id = icon_mappings[0].mapping_id; | 1610 IconMappingID mapping_id = icon_mappings[0].mapping_id; |
| 1613 | 1611 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 1624 } | 1622 } |
| 1625 | 1623 |
| 1626 // Test that calling SetFavicons() with FaviconBitmapData of different pixel | 1624 // Test that calling SetFavicons() with FaviconBitmapData of different pixel |
| 1627 // sizes than the initially passed in FaviconBitmapData deletes the no longer | 1625 // sizes than the initially passed in FaviconBitmapData deletes the no longer |
| 1628 // used favicon bitmaps. | 1626 // used favicon bitmaps. |
| 1629 TEST_F(HistoryBackendTest, SetFaviconsDeleteBitmaps) { | 1627 TEST_F(HistoryBackendTest, SetFaviconsDeleteBitmaps) { |
| 1630 const GURL page_url("http://www.google.com/"); | 1628 const GURL page_url("http://www.google.com/"); |
| 1631 const GURL icon_url("http://www.google.com/icon"); | 1629 const GURL icon_url("http://www.google.com/icon"); |
| 1632 | 1630 |
| 1633 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 1631 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 1634 GenerateFaviconBitmapData(icon_url, GetSizesSmallAndLarge(), | 1632 GenerateFaviconBitmapData(icon_url, GetEdgeSizesSmallAndLarge(), |
| 1635 &favicon_bitmap_data); | 1633 &favicon_bitmap_data); |
| 1636 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); | 1634 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); |
| 1637 | 1635 |
| 1638 // Test initial state. | 1636 // Test initial state. |
| 1639 std::vector<IconMapping> icon_mappings; | 1637 std::vector<IconMapping> icon_mappings; |
| 1640 EXPECT_TRUE(GetSortedIconMappingsForPageURL(page_url, &icon_mappings)); | 1638 EXPECT_TRUE(GetSortedIconMappingsForPageURL(page_url, &icon_mappings)); |
| 1641 EXPECT_EQ(1u, icon_mappings.size()); | 1639 EXPECT_EQ(1u, icon_mappings.size()); |
| 1642 EXPECT_EQ(icon_url, icon_mappings[0].icon_url); | 1640 EXPECT_EQ(icon_url, icon_mappings[0].icon_url); |
| 1643 EXPECT_EQ(favicon_base::FAVICON, icon_mappings[0].icon_type); | 1641 EXPECT_EQ(favicon_base::FAVICON, icon_mappings[0].icon_type); |
| 1644 favicon_base::FaviconID favicon_id = icon_mappings[0].icon_id; | 1642 favicon_base::FaviconID favicon_id = icon_mappings[0].icon_id; |
| 1645 | 1643 |
| 1646 std::vector<FaviconBitmap> favicon_bitmaps; | 1644 std::vector<FaviconBitmap> favicon_bitmaps; |
| 1647 EXPECT_TRUE(GetSortedFaviconBitmaps(favicon_id, &favicon_bitmaps)); | 1645 EXPECT_TRUE(GetSortedFaviconBitmaps(favicon_id, &favicon_bitmaps)); |
| 1648 EXPECT_EQ(2u, favicon_bitmaps.size()); | 1646 EXPECT_EQ(2u, favicon_bitmaps.size()); |
| 1649 FaviconBitmapID small_bitmap_id = favicon_bitmaps[0].bitmap_id; | 1647 FaviconBitmapID small_bitmap_id = favicon_bitmaps[0].bitmap_id; |
| 1650 EXPECT_NE(0, small_bitmap_id); | 1648 EXPECT_NE(0, small_bitmap_id); |
| 1651 EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmaps[0].bitmap_data)); | 1649 EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmaps[0].bitmap_data)); |
| 1652 EXPECT_EQ(kSmallSize, favicon_bitmaps[0].pixel_size); | 1650 EXPECT_EQ(kSmallSize, favicon_bitmaps[0].pixel_size); |
| 1653 FaviconBitmapID large_bitmap_id = favicon_bitmaps[1].bitmap_id; | 1651 FaviconBitmapID large_bitmap_id = favicon_bitmaps[1].bitmap_id; |
| 1654 EXPECT_NE(0, large_bitmap_id); | 1652 EXPECT_NE(0, large_bitmap_id); |
| 1655 EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmaps[1].bitmap_data)); | 1653 EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmaps[1].bitmap_data)); |
| 1656 EXPECT_EQ(kLargeSize, favicon_bitmaps[1].pixel_size); | 1654 EXPECT_EQ(kLargeSize, favicon_bitmaps[1].pixel_size); |
| 1657 | 1655 |
| 1658 // Call SetFavicons() with bitmap data for only the large bitmap. Check that | 1656 // Call SetFavicons() with bitmap data for only the large bitmap. Check that |
| 1659 // the small bitmap is in fact deleted. | 1657 // the small bitmap is in fact deleted. |
| 1660 GenerateFaviconBitmapData(icon_url, GetSizesLarge(), &favicon_bitmap_data); | 1658 GenerateFaviconBitmapData(icon_url, GetEdgeSizesLarge(), |
| 1659 &favicon_bitmap_data); |
| 1661 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); | 1660 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); |
| 1662 | 1661 |
| 1663 scoped_refptr<base::RefCountedMemory> bitmap_data_out; | 1662 scoped_refptr<base::RefCountedMemory> bitmap_data_out; |
| 1664 gfx::Size pixel_size_out; | 1663 gfx::Size pixel_size_out; |
| 1665 EXPECT_FALSE(backend_->thumbnail_db_->GetFaviconBitmap(small_bitmap_id, | 1664 EXPECT_FALSE(backend_->thumbnail_db_->GetFaviconBitmap(small_bitmap_id, |
| 1666 NULL, &bitmap_data_out, &pixel_size_out)); | 1665 NULL, &bitmap_data_out, &pixel_size_out)); |
| 1667 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconBitmap(large_bitmap_id, | 1666 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconBitmap(large_bitmap_id, |
| 1668 NULL, &bitmap_data_out, &pixel_size_out)); | 1667 NULL, &bitmap_data_out, &pixel_size_out)); |
| 1669 EXPECT_TRUE(BitmapDataEqual('a', bitmap_data_out)); | 1668 EXPECT_TRUE(BitmapDataEqual('a', bitmap_data_out)); |
| 1670 EXPECT_EQ(kLargeSize, pixel_size_out); | 1669 EXPECT_EQ(kLargeSize, pixel_size_out); |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1764 | 1763 |
| 1765 // Test that if two pages share the same FaviconID, changing the favicon for | 1764 // Test that if two pages share the same FaviconID, changing the favicon for |
| 1766 // one page does not affect the other. | 1765 // one page does not affect the other. |
| 1767 TEST_F(HistoryBackendTest, SetFaviconsSameFaviconURLForTwoPages) { | 1766 TEST_F(HistoryBackendTest, SetFaviconsSameFaviconURLForTwoPages) { |
| 1768 GURL icon_url("http://www.google.com/favicon.ico"); | 1767 GURL icon_url("http://www.google.com/favicon.ico"); |
| 1769 GURL icon_url_new("http://www.google.com/favicon2.ico"); | 1768 GURL icon_url_new("http://www.google.com/favicon2.ico"); |
| 1770 GURL page_url1("http://www.google.com"); | 1769 GURL page_url1("http://www.google.com"); |
| 1771 GURL page_url2("http://www.google.ca"); | 1770 GURL page_url2("http://www.google.ca"); |
| 1772 | 1771 |
| 1773 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 1772 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 1774 GenerateFaviconBitmapData(icon_url, GetSizesSmallAndLarge(), | 1773 GenerateFaviconBitmapData(icon_url, GetEdgeSizesSmallAndLarge(), |
| 1775 &favicon_bitmap_data); | 1774 &favicon_bitmap_data); |
| 1776 | 1775 |
| 1777 backend_->SetFavicons(page_url1, favicon_base::FAVICON, favicon_bitmap_data); | 1776 backend_->SetFavicons(page_url1, favicon_base::FAVICON, favicon_bitmap_data); |
| 1778 | 1777 |
| 1779 std::vector<GURL> icon_urls; | 1778 std::vector<GURL> icon_urls; |
| 1780 icon_urls.push_back(icon_url); | 1779 icon_urls.push_back(icon_url); |
| 1781 | 1780 |
| 1782 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; | 1781 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; |
| 1783 backend_->UpdateFaviconMappingsAndFetch(page_url2, | 1782 backend_->UpdateFaviconMappingsAndFetch(page_url2, |
| 1784 icon_urls, | 1783 icon_urls, |
| 1785 favicon_base::FAVICON, | 1784 favicon_base::FAVICON, |
| 1786 kSmallSize.width(), | 1785 GetEdgeSizesSmallAndLarge(), |
| 1787 GetScaleFactors1x2x(), | |
| 1788 &bitmap_results); | 1786 &bitmap_results); |
| 1789 | 1787 |
| 1790 // Check that the same FaviconID is mapped to both page URLs. | 1788 // Check that the same FaviconID is mapped to both page URLs. |
| 1791 std::vector<IconMapping> icon_mappings; | 1789 std::vector<IconMapping> icon_mappings; |
| 1792 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( | 1790 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( |
| 1793 page_url1, &icon_mappings)); | 1791 page_url1, &icon_mappings)); |
| 1794 EXPECT_EQ(1u, icon_mappings.size()); | 1792 EXPECT_EQ(1u, icon_mappings.size()); |
| 1795 favicon_base::FaviconID favicon_id = icon_mappings[0].icon_id; | 1793 favicon_base::FaviconID favicon_id = icon_mappings[0].icon_id; |
| 1796 EXPECT_NE(0, favicon_id); | 1794 EXPECT_NE(0, favicon_id); |
| 1797 | 1795 |
| 1798 icon_mappings.clear(); | 1796 icon_mappings.clear(); |
| 1799 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( | 1797 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( |
| 1800 page_url2, &icon_mappings)); | 1798 page_url2, &icon_mappings)); |
| 1801 EXPECT_EQ(1u, icon_mappings.size()); | 1799 EXPECT_EQ(1u, icon_mappings.size()); |
| 1802 EXPECT_EQ(favicon_id, icon_mappings[0].icon_id); | 1800 EXPECT_EQ(favicon_id, icon_mappings[0].icon_id); |
| 1803 | 1801 |
| 1804 // Change the icon URL that |page_url1| is mapped to. | 1802 // Change the icon URL that |page_url1| is mapped to. |
| 1805 GenerateFaviconBitmapData(icon_url_new, GetSizesSmall(), | 1803 GenerateFaviconBitmapData(icon_url_new, GetEdgeSizesSmall(), |
| 1806 &favicon_bitmap_data); | 1804 &favicon_bitmap_data); |
| 1807 backend_->SetFavicons(page_url1, favicon_base::FAVICON, favicon_bitmap_data); | 1805 backend_->SetFavicons(page_url1, favicon_base::FAVICON, favicon_bitmap_data); |
| 1808 | 1806 |
| 1809 // |page_url1| should map to a new FaviconID and have valid bitmap data. | 1807 // |page_url1| should map to a new FaviconID and have valid bitmap data. |
| 1810 icon_mappings.clear(); | 1808 icon_mappings.clear(); |
| 1811 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( | 1809 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( |
| 1812 page_url1, &icon_mappings)); | 1810 page_url1, &icon_mappings)); |
| 1813 EXPECT_EQ(1u, icon_mappings.size()); | 1811 EXPECT_EQ(1u, icon_mappings.size()); |
| 1814 EXPECT_EQ(icon_url_new, icon_mappings[0].icon_url); | 1812 EXPECT_EQ(icon_url_new, icon_mappings[0].icon_url); |
| 1815 EXPECT_NE(favicon_id, icon_mappings[0].icon_id); | 1813 EXPECT_NE(favicon_id, icon_mappings[0].icon_id); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 1837 EXPECT_EQ(3, num_broadcasted_notifications()); | 1835 EXPECT_EQ(3, num_broadcasted_notifications()); |
| 1838 } | 1836 } |
| 1839 | 1837 |
| 1840 // Test that no notifications are broadcast as a result of calling | 1838 // Test that no notifications are broadcast as a result of calling |
| 1841 // UpdateFaviconMappingsAndFetch() for an icon URL which is already | 1839 // UpdateFaviconMappingsAndFetch() for an icon URL which is already |
| 1842 // mapped to the passed in page URL. | 1840 // mapped to the passed in page URL. |
| 1843 TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchNoChange) { | 1841 TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchNoChange) { |
| 1844 GURL page_url("http://www.google.com"); | 1842 GURL page_url("http://www.google.com"); |
| 1845 GURL icon_url("http://www.google.com/favicon.ico"); | 1843 GURL icon_url("http://www.google.com/favicon.ico"); |
| 1846 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 1844 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 1847 GenerateFaviconBitmapData(icon_url, GetSizesSmall(), &favicon_bitmap_data); | 1845 GenerateFaviconBitmapData(icon_url, GetEdgeSizesSmall(), |
| 1846 &favicon_bitmap_data); |
| 1848 | 1847 |
| 1849 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); | 1848 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); |
| 1850 | 1849 |
| 1851 favicon_base::FaviconID icon_id = | 1850 favicon_base::FaviconID icon_id = |
| 1852 backend_->thumbnail_db_->GetFaviconIDForFaviconURL( | 1851 backend_->thumbnail_db_->GetFaviconIDForFaviconURL( |
| 1853 icon_url, favicon_base::FAVICON, NULL); | 1852 icon_url, favicon_base::FAVICON, NULL); |
| 1854 EXPECT_NE(0, icon_id); | 1853 EXPECT_NE(0, icon_id); |
| 1855 EXPECT_EQ(1, num_broadcasted_notifications()); | 1854 EXPECT_EQ(1, num_broadcasted_notifications()); |
| 1856 | 1855 |
| 1857 std::vector<GURL> icon_urls; | 1856 std::vector<GURL> icon_urls; |
| 1858 icon_urls.push_back(icon_url); | 1857 icon_urls.push_back(icon_url); |
| 1859 | 1858 |
| 1860 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; | 1859 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; |
| 1861 backend_->UpdateFaviconMappingsAndFetch(page_url, | 1860 backend_->UpdateFaviconMappingsAndFetch(page_url, |
| 1862 icon_urls, | 1861 icon_urls, |
| 1863 favicon_base::FAVICON, | 1862 favicon_base::FAVICON, |
| 1864 kSmallSize.width(), | 1863 GetEdgeSizesSmallAndLarge(), |
| 1865 GetScaleFactors1x2x(), | |
| 1866 &bitmap_results); | 1864 &bitmap_results); |
| 1867 | 1865 |
| 1868 EXPECT_EQ(icon_id, | 1866 EXPECT_EQ(icon_id, |
| 1869 backend_->thumbnail_db_->GetFaviconIDForFaviconURL( | 1867 backend_->thumbnail_db_->GetFaviconIDForFaviconURL( |
| 1870 icon_url, favicon_base::FAVICON, NULL)); | 1868 icon_url, favicon_base::FAVICON, NULL)); |
| 1871 | 1869 |
| 1872 // No notification should have been broadcast as no icon mapping, favicon, | 1870 // No notification should have been broadcast as no icon mapping, favicon, |
| 1873 // or favicon bitmap was updated, added or removed. | 1871 // or favicon bitmap was updated, added or removed. |
| 1874 EXPECT_EQ(1, num_broadcasted_notifications()); | 1872 EXPECT_EQ(1, num_broadcasted_notifications()); |
| 1875 } | 1873 } |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1921 EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size); | 1919 EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size); |
| 1922 } | 1920 } |
| 1923 | 1921 |
| 1924 // Test calling MergeFavicon() when |page_url| is known to the database. | 1922 // Test calling MergeFavicon() when |page_url| is known to the database. |
| 1925 TEST_F(HistoryBackendTest, MergeFaviconPageURLInDB) { | 1923 TEST_F(HistoryBackendTest, MergeFaviconPageURLInDB) { |
| 1926 GURL page_url("http://www.google.com"); | 1924 GURL page_url("http://www.google.com"); |
| 1927 GURL icon_url1("http:/www.google.com/favicon.ico"); | 1925 GURL icon_url1("http:/www.google.com/favicon.ico"); |
| 1928 GURL icon_url2("http://www.google.com/favicon2.ico"); | 1926 GURL icon_url2("http://www.google.com/favicon2.ico"); |
| 1929 | 1927 |
| 1930 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 1928 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 1931 GenerateFaviconBitmapData(icon_url1, GetSizesSmall(), | 1929 GenerateFaviconBitmapData(icon_url1, GetEdgeSizesSmall(), |
| 1932 &favicon_bitmap_data); | 1930 &favicon_bitmap_data); |
| 1933 | 1931 |
| 1934 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); | 1932 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); |
| 1935 | 1933 |
| 1936 // Test initial state. | 1934 // Test initial state. |
| 1937 std::vector<IconMapping> icon_mappings; | 1935 std::vector<IconMapping> icon_mappings; |
| 1938 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, | 1936 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, |
| 1939 &icon_mappings)); | 1937 &icon_mappings)); |
| 1940 EXPECT_EQ(1u, icon_mappings.size()); | 1938 EXPECT_EQ(1u, icon_mappings.size()); |
| 1941 EXPECT_EQ(icon_url1, icon_mappings[0].icon_url); | 1939 EXPECT_EQ(icon_url1, icon_mappings[0].icon_url); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2048 | 2046 |
| 2049 // Test calling MergeFavicon() when |icon_url| is known to the database but not | 2047 // Test calling MergeFavicon() when |icon_url| is known to the database but not |
| 2050 // mapped to |page_url|. | 2048 // mapped to |page_url|. |
| 2051 TEST_F(HistoryBackendTest, MergeFaviconIconURLMappedToDifferentPageURL) { | 2049 TEST_F(HistoryBackendTest, MergeFaviconIconURLMappedToDifferentPageURL) { |
| 2052 GURL page_url1("http://www.google.com"); | 2050 GURL page_url1("http://www.google.com"); |
| 2053 GURL page_url2("http://news.google.com"); | 2051 GURL page_url2("http://news.google.com"); |
| 2054 GURL page_url3("http://maps.google.com"); | 2052 GURL page_url3("http://maps.google.com"); |
| 2055 GURL icon_url("http:/www.google.com/favicon.ico"); | 2053 GURL icon_url("http:/www.google.com/favicon.ico"); |
| 2056 | 2054 |
| 2057 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 2055 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 2058 GenerateFaviconBitmapData(icon_url, GetSizesSmall(), | 2056 GenerateFaviconBitmapData(icon_url, GetEdgeSizesSmall(), |
| 2059 &favicon_bitmap_data); | 2057 &favicon_bitmap_data); |
| 2060 | 2058 |
| 2061 backend_->SetFavicons(page_url1, favicon_base::FAVICON, favicon_bitmap_data); | 2059 backend_->SetFavicons(page_url1, favicon_base::FAVICON, favicon_bitmap_data); |
| 2062 | 2060 |
| 2063 // Test initial state. | 2061 // Test initial state. |
| 2064 std::vector<IconMapping> icon_mappings; | 2062 std::vector<IconMapping> icon_mappings; |
| 2065 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url1, | 2063 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url1, |
| 2066 &icon_mappings)); | 2064 &icon_mappings)); |
| 2067 EXPECT_EQ(1u, icon_mappings.size()); | 2065 EXPECT_EQ(1u, icon_mappings.size()); |
| 2068 EXPECT_EQ(icon_url, icon_mappings[0].icon_url); | 2066 EXPECT_EQ(icon_url, icon_mappings[0].icon_url); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2169 } | 2167 } |
| 2170 | 2168 |
| 2171 // Tests that the favicon set by MergeFavicon() shows up in the result of | 2169 // Tests that the favicon set by MergeFavicon() shows up in the result of |
| 2172 // GetFaviconsForURL(). | 2170 // GetFaviconsForURL(). |
| 2173 TEST_F(HistoryBackendTest, MergeFaviconShowsUpInGetFaviconsForURLResult) { | 2171 TEST_F(HistoryBackendTest, MergeFaviconShowsUpInGetFaviconsForURLResult) { |
| 2174 GURL page_url("http://www.google.com"); | 2172 GURL page_url("http://www.google.com"); |
| 2175 GURL icon_url("http://www.google.com/favicon.ico"); | 2173 GURL icon_url("http://www.google.com/favicon.ico"); |
| 2176 GURL merged_icon_url("http://wwww.google.com/favicon2.ico"); | 2174 GURL merged_icon_url("http://wwww.google.com/favicon2.ico"); |
| 2177 | 2175 |
| 2178 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 2176 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 2179 GenerateFaviconBitmapData(icon_url, GetSizesSmallAndLarge(), | 2177 GenerateFaviconBitmapData(icon_url, GetEdgeSizesSmallAndLarge(), |
| 2180 &favicon_bitmap_data); | 2178 &favicon_bitmap_data); |
| 2181 | 2179 |
| 2182 // Set some preexisting favicons for |page_url|. | 2180 // Set some preexisting favicons for |page_url|. |
| 2183 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); | 2181 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); |
| 2184 | 2182 |
| 2185 // Merge small favicon. | 2183 // Merge small favicon. |
| 2186 std::vector<unsigned char> data; | 2184 std::vector<unsigned char> data; |
| 2187 data.push_back('c'); | 2185 data.push_back('c'); |
| 2188 scoped_refptr<base::RefCountedBytes> bitmap_data( | 2186 scoped_refptr<base::RefCountedBytes> bitmap_data( |
| 2189 new base::RefCountedBytes(data)); | 2187 new base::RefCountedBytes(data)); |
| 2190 backend_->MergeFavicon(page_url, | 2188 backend_->MergeFavicon(page_url, |
| 2191 merged_icon_url, | 2189 merged_icon_url, |
| 2192 favicon_base::FAVICON, | 2190 favicon_base::FAVICON, |
| 2193 bitmap_data, | 2191 bitmap_data, |
| 2194 kSmallSize); | 2192 kSmallSize); |
| 2195 | 2193 |
| 2196 // Request favicon bitmaps for both 1x and 2x to simulate request done by | 2194 // Request favicon bitmaps for both 1x and 2x to simulate request done by |
| 2197 // BookmarkModel::GetFavicon(). | 2195 // BookmarkModel::GetFavicon(). |
| 2198 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; | 2196 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; |
| 2199 backend_->GetFaviconsForURL(page_url, | 2197 backend_->GetFaviconsForURL(page_url, |
| 2200 favicon_base::FAVICON, | 2198 favicon_base::FAVICON, |
| 2201 kSmallSize.width(), | 2199 GetEdgeSizesSmallAndLarge(), |
| 2202 GetScaleFactors1x2x(), | |
| 2203 &bitmap_results); | 2200 &bitmap_results); |
| 2204 | 2201 |
| 2205 EXPECT_EQ(2u, bitmap_results.size()); | 2202 EXPECT_EQ(2u, bitmap_results.size()); |
| 2206 const favicon_base::FaviconRawBitmapResult& first_result = bitmap_results[0]; | 2203 const favicon_base::FaviconRawBitmapResult& first_result = bitmap_results[0]; |
| 2207 const favicon_base::FaviconRawBitmapResult& result = | 2204 const favicon_base::FaviconRawBitmapResult& result = |
| 2208 (first_result.pixel_size == kSmallSize) ? first_result | 2205 (first_result.pixel_size == kSmallSize) ? first_result |
| 2209 : bitmap_results[1]; | 2206 : bitmap_results[1]; |
| 2210 EXPECT_TRUE(BitmapDataEqual('c', result.bitmap_data)); | 2207 EXPECT_TRUE(BitmapDataEqual('c', result.bitmap_data)); |
| 2211 } | 2208 } |
| 2212 | 2209 |
| 2213 // Tests GetFaviconsForURL with icon_types priority, | 2210 // Tests GetFaviconsForURL with icon_types priority, |
| 2214 TEST_F(HistoryBackendTest, TestGetFaviconsForURLWithIconTypesPriority) { | 2211 TEST_F(HistoryBackendTest, TestGetFaviconsForURLWithIconTypesPriority) { |
| 2215 GURL page_url("http://www.google.com"); | 2212 GURL page_url("http://www.google.com"); |
| 2216 GURL icon_url("http://www.google.com/favicon.ico"); | 2213 GURL icon_url("http://www.google.com/favicon.ico"); |
| 2217 GURL touch_icon_url("http://wwww.google.com/touch_icon.ico"); | 2214 GURL touch_icon_url("http://wwww.google.com/touch_icon.ico"); |
| 2218 | 2215 |
| 2219 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 2216 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 2220 std::vector<gfx::Size> favicon_size; | 2217 std::vector<int> favicon_size; |
| 2221 favicon_size.push_back(gfx::Size(16, 16)); | 2218 favicon_size.push_back(16); |
| 2222 favicon_size.push_back(gfx::Size(32, 32)); | 2219 favicon_size.push_back(32); |
| 2223 GenerateFaviconBitmapData(icon_url, favicon_size, &favicon_bitmap_data); | 2220 GenerateFaviconBitmapData(icon_url, favicon_size, &favicon_bitmap_data); |
| 2224 ASSERT_EQ(2u, favicon_bitmap_data.size()); | 2221 ASSERT_EQ(2u, favicon_bitmap_data.size()); |
| 2225 | 2222 |
| 2226 std::vector<favicon_base::FaviconRawBitmapData> touch_icon_bitmap_data; | 2223 std::vector<favicon_base::FaviconRawBitmapData> touch_icon_bitmap_data; |
| 2227 std::vector<gfx::Size> touch_icon_size; | 2224 std::vector<int> touch_icon_size; |
| 2228 touch_icon_size.push_back(gfx::Size(64, 64)); | 2225 touch_icon_size.push_back(64); |
| 2229 GenerateFaviconBitmapData(icon_url, touch_icon_size, &touch_icon_bitmap_data); | 2226 GenerateFaviconBitmapData(icon_url, touch_icon_size, &touch_icon_bitmap_data); |
| 2230 ASSERT_EQ(1u, touch_icon_bitmap_data.size()); | 2227 ASSERT_EQ(1u, touch_icon_bitmap_data.size()); |
| 2231 | 2228 |
| 2232 // Set some preexisting favicons for |page_url|. | 2229 // Set some preexisting favicons for |page_url|. |
| 2233 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); | 2230 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); |
| 2234 backend_->SetFavicons( | 2231 backend_->SetFavicons( |
| 2235 page_url, favicon_base::TOUCH_ICON, touch_icon_bitmap_data); | 2232 page_url, favicon_base::TOUCH_ICON, touch_icon_bitmap_data); |
| 2236 | 2233 |
| 2237 favicon_base::FaviconRawBitmapResult result; | 2234 favicon_base::FaviconRawBitmapResult result; |
| 2238 std::vector<int> icon_types; | 2235 std::vector<int> icon_types; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 2252 } | 2249 } |
| 2253 | 2250 |
| 2254 // Test the the first types of icon is returned if its size equal to the | 2251 // Test the the first types of icon is returned if its size equal to the |
| 2255 // second types icon. | 2252 // second types icon. |
| 2256 TEST_F(HistoryBackendTest, TestGetFaviconsForURLReturnFavicon) { | 2253 TEST_F(HistoryBackendTest, TestGetFaviconsForURLReturnFavicon) { |
| 2257 GURL page_url("http://www.google.com"); | 2254 GURL page_url("http://www.google.com"); |
| 2258 GURL icon_url("http://www.google.com/favicon.ico"); | 2255 GURL icon_url("http://www.google.com/favicon.ico"); |
| 2259 GURL touch_icon_url("http://wwww.google.com/touch_icon.ico"); | 2256 GURL touch_icon_url("http://wwww.google.com/touch_icon.ico"); |
| 2260 | 2257 |
| 2261 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 2258 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 2262 std::vector<gfx::Size> favicon_size; | 2259 std::vector<int> favicon_size; |
| 2263 favicon_size.push_back(gfx::Size(16, 16)); | 2260 favicon_size.push_back(16); |
| 2264 favicon_size.push_back(gfx::Size(32, 32)); | 2261 favicon_size.push_back(32); |
| 2265 GenerateFaviconBitmapData(icon_url, favicon_size, &favicon_bitmap_data); | 2262 GenerateFaviconBitmapData(icon_url, favicon_size, &favicon_bitmap_data); |
| 2266 ASSERT_EQ(2u, favicon_bitmap_data.size()); | 2263 ASSERT_EQ(2u, favicon_bitmap_data.size()); |
| 2267 | 2264 |
| 2268 std::vector<favicon_base::FaviconRawBitmapData> touch_icon_bitmap_data; | 2265 std::vector<favicon_base::FaviconRawBitmapData> touch_icon_bitmap_data; |
| 2269 std::vector<gfx::Size> touch_icon_size; | 2266 std::vector<int> touch_icon_size; |
| 2270 touch_icon_size.push_back(gfx::Size(32, 32)); | 2267 touch_icon_size.push_back(32); |
| 2271 GenerateFaviconBitmapData(icon_url, touch_icon_size, &touch_icon_bitmap_data); | 2268 GenerateFaviconBitmapData(icon_url, touch_icon_size, &touch_icon_bitmap_data); |
| 2272 ASSERT_EQ(1u, touch_icon_bitmap_data.size()); | 2269 ASSERT_EQ(1u, touch_icon_bitmap_data.size()); |
| 2273 | 2270 |
| 2274 // Set some preexisting favicons for |page_url|. | 2271 // Set some preexisting favicons for |page_url|. |
| 2275 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); | 2272 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); |
| 2276 backend_->SetFavicons( | 2273 backend_->SetFavicons( |
| 2277 page_url, favicon_base::TOUCH_ICON, touch_icon_bitmap_data); | 2274 page_url, favicon_base::TOUCH_ICON, touch_icon_bitmap_data); |
| 2278 | 2275 |
| 2279 favicon_base::FaviconRawBitmapResult result; | 2276 favicon_base::FaviconRawBitmapResult result; |
| 2280 std::vector<int> icon_types; | 2277 std::vector<int> icon_types; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 2294 EXPECT_EQ(favicon_base::FAVICON, result1.icon_type); | 2291 EXPECT_EQ(favicon_base::FAVICON, result1.icon_type); |
| 2295 } | 2292 } |
| 2296 | 2293 |
| 2297 // Test the favicon is returned if its size is smaller than minimal size, | 2294 // Test the favicon is returned if its size is smaller than minimal size, |
| 2298 // because it is only one available. | 2295 // because it is only one available. |
| 2299 TEST_F(HistoryBackendTest, TestGetFaviconsForURLReturnFaviconEvenItSmaller) { | 2296 TEST_F(HistoryBackendTest, TestGetFaviconsForURLReturnFaviconEvenItSmaller) { |
| 2300 GURL page_url("http://www.google.com"); | 2297 GURL page_url("http://www.google.com"); |
| 2301 GURL icon_url("http://www.google.com/favicon.ico"); | 2298 GURL icon_url("http://www.google.com/favicon.ico"); |
| 2302 | 2299 |
| 2303 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 2300 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 2304 std::vector<gfx::Size> favicon_size; | 2301 std::vector<int> favicon_size; |
| 2305 favicon_size.push_back(gfx::Size(16, 16)); | 2302 favicon_size.push_back(16); |
| 2306 GenerateFaviconBitmapData(icon_url, favicon_size, &favicon_bitmap_data); | 2303 GenerateFaviconBitmapData(icon_url, favicon_size, &favicon_bitmap_data); |
| 2307 ASSERT_EQ(1u, favicon_bitmap_data.size()); | 2304 ASSERT_EQ(1u, favicon_bitmap_data.size()); |
| 2308 | 2305 |
| 2309 // Set preexisting favicons for |page_url|. | 2306 // Set preexisting favicons for |page_url|. |
| 2310 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); | 2307 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); |
| 2311 | 2308 |
| 2312 favicon_base::FaviconRawBitmapResult result; | 2309 favicon_base::FaviconRawBitmapResult result; |
| 2313 std::vector<int> icon_types; | 2310 std::vector<int> icon_types; |
| 2314 icon_types.push_back(favicon_base::FAVICON); | 2311 icon_types.push_back(favicon_base::FAVICON); |
| 2315 icon_types.push_back(favicon_base::TOUCH_ICON); | 2312 icon_types.push_back(favicon_base::TOUCH_ICON); |
| 2316 | 2313 |
| 2317 backend_->GetLargestFaviconForURL(page_url, icon_types, 32, &result); | 2314 backend_->GetLargestFaviconForURL(page_url, icon_types, 32, &result); |
| 2318 | 2315 |
| 2319 // Verify 16x16 icon is returned, even it small than minimal_size. | 2316 // Verify 16x16 icon is returned, even it small than minimal_size. |
| 2320 EXPECT_EQ(gfx::Size(16, 16), result.pixel_size); | 2317 EXPECT_EQ(gfx::Size(16, 16), result.pixel_size); |
| 2321 EXPECT_EQ(favicon_base::FAVICON, result.icon_type); | 2318 EXPECT_EQ(favicon_base::FAVICON, result.icon_type); |
| 2322 } | 2319 } |
| 2323 | 2320 |
| 2324 // Test UpdateFaviconMapingsAndFetch() when multiple icon types are passed in. | 2321 // Test UpdateFaviconMapingsAndFetch() when multiple icon types are passed in. |
| 2325 TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchMultipleIconTypes) { | 2322 TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchMultipleIconTypes) { |
| 2326 GURL page_url1("http://www.google.com"); | 2323 GURL page_url1("http://www.google.com"); |
| 2327 GURL page_url2("http://news.google.com"); | 2324 GURL page_url2("http://news.google.com"); |
| 2328 GURL page_url3("http://mail.google.com"); | 2325 GURL page_url3("http://mail.google.com"); |
| 2329 GURL icon_urla("http://www.google.com/favicon1.ico"); | 2326 GURL icon_urla("http://www.google.com/favicon1.ico"); |
| 2330 GURL icon_urlb("http://www.google.com/favicon2.ico"); | 2327 GURL icon_urlb("http://www.google.com/favicon2.ico"); |
| 2331 GURL icon_urlc("http://www.google.com/favicon3.ico"); | 2328 GURL icon_urlc("http://www.google.com/favicon3.ico"); |
| 2332 | 2329 |
| 2333 // |page_url1| is mapped to |icon_urla| which if of type TOUCH_ICON. | 2330 // |page_url1| is mapped to |icon_urla| which if of type TOUCH_ICON. |
| 2334 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 2331 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 2335 GenerateFaviconBitmapData(icon_urla, GetSizesSmall(), &favicon_bitmap_data); | 2332 GenerateFaviconBitmapData(icon_urla, GetEdgeSizesSmall(), |
| 2333 &favicon_bitmap_data); |
| 2336 backend_->SetFavicons( | 2334 backend_->SetFavicons( |
| 2337 page_url1, favicon_base::TOUCH_ICON, favicon_bitmap_data); | 2335 page_url1, favicon_base::TOUCH_ICON, favicon_bitmap_data); |
| 2338 | 2336 |
| 2339 // |page_url2| is mapped to |icon_urlb| and |icon_urlc| which are of type | 2337 // |page_url2| is mapped to |icon_urlb| and |icon_urlc| which are of type |
| 2340 // TOUCH_PRECOMPOSED_ICON. | 2338 // TOUCH_PRECOMPOSED_ICON. |
| 2341 GenerateFaviconBitmapData(icon_urlb, GetSizesSmall(), icon_urlc, | 2339 GenerateFaviconBitmapData(icon_urlb, GetEdgeSizesSmall(), icon_urlc, |
| 2342 GetSizesSmall(), &favicon_bitmap_data); | 2340 GetEdgeSizesSmall(), &favicon_bitmap_data); |
| 2343 backend_->SetFavicons( | 2341 backend_->SetFavicons( |
| 2344 page_url2, favicon_base::TOUCH_PRECOMPOSED_ICON, favicon_bitmap_data); | 2342 page_url2, favicon_base::TOUCH_PRECOMPOSED_ICON, favicon_bitmap_data); |
| 2345 | 2343 |
| 2346 std::vector<GURL> icon_urls; | 2344 std::vector<GURL> icon_urls; |
| 2347 icon_urls.push_back(icon_urla); | 2345 icon_urls.push_back(icon_urla); |
| 2348 icon_urls.push_back(icon_urlb); | 2346 icon_urls.push_back(icon_urlb); |
| 2349 icon_urls.push_back(icon_urlc); | 2347 icon_urls.push_back(icon_urlc); |
| 2350 | 2348 |
| 2351 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; | 2349 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; |
| 2352 backend_->UpdateFaviconMappingsAndFetch( | 2350 backend_->UpdateFaviconMappingsAndFetch( |
| 2353 page_url3, | 2351 page_url3, |
| 2354 icon_urls, | 2352 icon_urls, |
| 2355 (favicon_base::TOUCH_ICON | favicon_base::TOUCH_PRECOMPOSED_ICON), | 2353 (favicon_base::TOUCH_ICON | favicon_base::TOUCH_PRECOMPOSED_ICON), |
| 2356 kSmallSize.width(), | 2354 GetEdgeSizesSmallAndLarge(), |
| 2357 GetScaleFactors1x2x(), | |
| 2358 &bitmap_results); | 2355 &bitmap_results); |
| 2359 | 2356 |
| 2360 // |page_url1| and |page_url2| should still be mapped to the same icon URLs. | 2357 // |page_url1| and |page_url2| should still be mapped to the same icon URLs. |
| 2361 std::vector<IconMapping> icon_mappings; | 2358 std::vector<IconMapping> icon_mappings; |
| 2362 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url1, | 2359 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url1, |
| 2363 &icon_mappings)); | 2360 &icon_mappings)); |
| 2364 EXPECT_EQ(1u, icon_mappings.size()); | 2361 EXPECT_EQ(1u, icon_mappings.size()); |
| 2365 EXPECT_EQ(icon_urla, icon_mappings[0].icon_url); | 2362 EXPECT_EQ(icon_urla, icon_mappings[0].icon_url); |
| 2366 EXPECT_EQ(favicon_base::TOUCH_ICON, icon_mappings[0].icon_type); | 2363 EXPECT_EQ(favicon_base::TOUCH_ICON, icon_mappings[0].icon_type); |
| 2367 | 2364 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 2385 } | 2382 } |
| 2386 | 2383 |
| 2387 // Test the results of GetFaviconsFromDB() when there are no found | 2384 // Test the results of GetFaviconsFromDB() when there are no found |
| 2388 // favicons. | 2385 // favicons. |
| 2389 TEST_F(HistoryBackendTest, GetFaviconsFromDBEmpty) { | 2386 TEST_F(HistoryBackendTest, GetFaviconsFromDBEmpty) { |
| 2390 const GURL page_url("http://www.google.com/"); | 2387 const GURL page_url("http://www.google.com/"); |
| 2391 | 2388 |
| 2392 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; | 2389 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; |
| 2393 EXPECT_FALSE(backend_->GetFaviconsFromDB(page_url, | 2390 EXPECT_FALSE(backend_->GetFaviconsFromDB(page_url, |
| 2394 favicon_base::FAVICON, | 2391 favicon_base::FAVICON, |
| 2395 kSmallSize.width(), | 2392 GetEdgeSizesSmallAndLarge(), |
| 2396 GetScaleFactors1x2x(), | |
| 2397 &bitmap_results)); | 2393 &bitmap_results)); |
| 2398 EXPECT_TRUE(bitmap_results.empty()); | 2394 EXPECT_TRUE(bitmap_results.empty()); |
| 2399 } | 2395 } |
| 2400 | 2396 |
| 2401 // Test the results of GetFaviconsFromDB() when there are matching favicons | 2397 // Test the results of GetFaviconsFromDB() when there are matching favicons |
| 2402 // but there are no associated favicon bitmaps. | 2398 // but there are no associated favicon bitmaps. |
| 2403 TEST_F(HistoryBackendTest, GetFaviconsFromDBNoFaviconBitmaps) { | 2399 TEST_F(HistoryBackendTest, GetFaviconsFromDBNoFaviconBitmaps) { |
| 2404 const GURL page_url("http://www.google.com/"); | 2400 const GURL page_url("http://www.google.com/"); |
| 2405 const GURL icon_url("http://www.google.com/icon1"); | 2401 const GURL icon_url("http://www.google.com/icon1"); |
| 2406 | 2402 |
| 2407 favicon_base::FaviconID icon_id = | 2403 favicon_base::FaviconID icon_id = |
| 2408 backend_->thumbnail_db_->AddFavicon(icon_url, favicon_base::FAVICON); | 2404 backend_->thumbnail_db_->AddFavicon(icon_url, favicon_base::FAVICON); |
| 2409 EXPECT_NE(0, icon_id); | 2405 EXPECT_NE(0, icon_id); |
| 2410 EXPECT_NE(0, backend_->thumbnail_db_->AddIconMapping(page_url, icon_id)); | 2406 EXPECT_NE(0, backend_->thumbnail_db_->AddIconMapping(page_url, icon_id)); |
| 2411 | 2407 |
| 2412 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; | 2408 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; |
| 2413 EXPECT_FALSE(backend_->GetFaviconsFromDB(page_url, | 2409 EXPECT_FALSE(backend_->GetFaviconsFromDB(page_url, |
| 2414 favicon_base::FAVICON, | 2410 favicon_base::FAVICON, |
| 2415 kSmallSize.width(), | 2411 GetEdgeSizesSmallAndLarge(), |
| 2416 GetScaleFactors1x2x(), | |
| 2417 &bitmap_results_out)); | 2412 &bitmap_results_out)); |
| 2418 EXPECT_TRUE(bitmap_results_out.empty()); | 2413 EXPECT_TRUE(bitmap_results_out.empty()); |
| 2419 } | 2414 } |
| 2420 | 2415 |
| 2421 // Test that GetFaviconsFromDB() returns results for the bitmaps which most | 2416 // Test that GetFaviconsFromDB() returns results for the bitmaps which most |
| 2422 // closely match the passed in desired size and scale factors. | 2417 // closely match the passed in the desired pixel sizes. |
| 2423 TEST_F(HistoryBackendTest, GetFaviconsFromDBSelectClosestMatch) { | 2418 TEST_F(HistoryBackendTest, GetFaviconsFromDBSelectClosestMatch) { |
| 2424 const GURL page_url("http://www.google.com/"); | 2419 const GURL page_url("http://www.google.com/"); |
| 2425 const GURL icon_url("http://www.google.com/icon1"); | 2420 const GURL icon_url("http://www.google.com/icon1"); |
| 2426 | 2421 |
| 2427 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 2422 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 2428 GenerateFaviconBitmapData(icon_url, GetSizesTinySmallAndLarge(), | 2423 GenerateFaviconBitmapData(icon_url, GetEdgeSizesTinySmallAndLarge(), |
| 2429 &favicon_bitmap_data); | 2424 &favicon_bitmap_data); |
| 2430 | 2425 |
| 2431 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); | 2426 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); |
| 2432 | 2427 |
| 2433 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; | 2428 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; |
| 2434 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, | 2429 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, |
| 2435 favicon_base::FAVICON, | 2430 favicon_base::FAVICON, |
| 2436 kSmallSize.width(), | 2431 GetEdgeSizesSmallAndLarge(), |
| 2437 GetScaleFactors1x2x(), | |
| 2438 &bitmap_results_out)); | 2432 &bitmap_results_out)); |
| 2439 | 2433 |
| 2440 // The bitmap data for the small and large bitmaps should be returned as their | 2434 // The bitmap data for the small and large bitmaps should be returned as their |
| 2441 // sizes match exactly. | 2435 // sizes match exactly. |
| 2442 EXPECT_EQ(2u, bitmap_results_out.size()); | 2436 EXPECT_EQ(2u, bitmap_results_out.size()); |
| 2443 // No required order for results. | 2437 // No required order for results. |
| 2444 if (bitmap_results_out[0].pixel_size == kLargeSize) { | 2438 if (bitmap_results_out[0].pixel_size == kLargeSize) { |
| 2445 favicon_base::FaviconRawBitmapResult tmp_result = bitmap_results_out[0]; | 2439 favicon_base::FaviconRawBitmapResult tmp_result = bitmap_results_out[0]; |
| 2446 bitmap_results_out[0] = bitmap_results_out[1]; | 2440 bitmap_results_out[0] = bitmap_results_out[1]; |
| 2447 bitmap_results_out[1] = tmp_result; | 2441 bitmap_results_out[1] = tmp_result; |
| 2448 } | 2442 } |
| 2449 | 2443 |
| 2450 EXPECT_FALSE(bitmap_results_out[0].expired); | 2444 EXPECT_FALSE(bitmap_results_out[0].expired); |
| 2451 EXPECT_TRUE(BitmapDataEqual('b', bitmap_results_out[0].bitmap_data)); | 2445 EXPECT_TRUE(BitmapDataEqual('b', bitmap_results_out[0].bitmap_data)); |
| 2452 EXPECT_EQ(kSmallSize, bitmap_results_out[0].pixel_size); | 2446 EXPECT_EQ(kSmallSize, bitmap_results_out[0].pixel_size); |
| 2453 EXPECT_EQ(icon_url, bitmap_results_out[0].icon_url); | 2447 EXPECT_EQ(icon_url, bitmap_results_out[0].icon_url); |
| 2454 EXPECT_EQ(favicon_base::FAVICON, bitmap_results_out[0].icon_type); | 2448 EXPECT_EQ(favicon_base::FAVICON, bitmap_results_out[0].icon_type); |
| 2455 | 2449 |
| 2456 EXPECT_FALSE(bitmap_results_out[1].expired); | 2450 EXPECT_FALSE(bitmap_results_out[1].expired); |
| 2457 EXPECT_TRUE(BitmapDataEqual('c', bitmap_results_out[1].bitmap_data)); | 2451 EXPECT_TRUE(BitmapDataEqual('c', bitmap_results_out[1].bitmap_data)); |
| 2458 EXPECT_EQ(kLargeSize, bitmap_results_out[1].pixel_size); | 2452 EXPECT_EQ(kLargeSize, bitmap_results_out[1].pixel_size); |
| 2459 EXPECT_EQ(icon_url, bitmap_results_out[1].icon_url); | 2453 EXPECT_EQ(icon_url, bitmap_results_out[1].icon_url); |
| 2460 EXPECT_EQ(favicon_base::FAVICON, bitmap_results_out[1].icon_type); | 2454 EXPECT_EQ(favicon_base::FAVICON, bitmap_results_out[1].icon_type); |
| 2461 } | 2455 } |
| 2462 | 2456 |
| 2463 // Test that GetFaviconsFromDB() returns results from the icon URL whose | 2457 // Test that GetFaviconsFromDB() returns results from the icon URL whose |
| 2464 // bitmaps most closely match the passed in desired size and scale factors. | 2458 // bitmaps most closely match the passed in desired sizes. |
| 2465 TEST_F(HistoryBackendTest, GetFaviconsFromDBSingleIconURL) { | 2459 TEST_F(HistoryBackendTest, GetFaviconsFromDBSingleIconURL) { |
| 2466 const GURL page_url("http://www.google.com/"); | 2460 const GURL page_url("http://www.google.com/"); |
| 2467 | 2461 |
| 2468 const GURL icon_url1("http://www.google.com/icon1"); | 2462 const GURL icon_url1("http://www.google.com/icon1"); |
| 2469 const GURL icon_url2("http://www.google.com/icon2"); | 2463 const GURL icon_url2("http://www.google.com/icon2"); |
| 2470 | 2464 |
| 2471 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 2465 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 2472 GenerateFaviconBitmapData(icon_url1, GetSizesSmall(), icon_url2, | 2466 GenerateFaviconBitmapData(icon_url1, GetEdgeSizesSmall(), icon_url2, |
| 2473 GetSizesLarge(), &favicon_bitmap_data); | 2467 GetEdgeSizesLarge(), &favicon_bitmap_data); |
| 2474 | 2468 |
| 2475 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); | 2469 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); |
| 2476 | 2470 |
| 2477 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; | 2471 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; |
| 2478 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, | 2472 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, |
| 2479 favicon_base::FAVICON, | 2473 favicon_base::FAVICON, |
| 2480 kSmallSize.width(), | 2474 GetEdgeSizesSmallAndLarge(), |
| 2481 GetScaleFactors1x2x(), | |
| 2482 &bitmap_results_out)); | 2475 &bitmap_results_out)); |
| 2483 | 2476 |
| 2484 // The results should have results for the icon URL with the large bitmap as | 2477 // The results should have results for the icon URL with the large bitmap as |
| 2485 // downscaling is preferred to upscaling. | 2478 // downscaling is preferred to upscaling. |
| 2486 EXPECT_EQ(1u, bitmap_results_out.size()); | 2479 EXPECT_EQ(1u, bitmap_results_out.size()); |
| 2487 EXPECT_EQ(kLargeSize, bitmap_results_out[0].pixel_size); | 2480 EXPECT_EQ(kLargeSize, bitmap_results_out[0].pixel_size); |
| 2488 EXPECT_EQ(icon_url2, bitmap_results_out[0].icon_url); | 2481 EXPECT_EQ(icon_url2, bitmap_results_out[0].icon_url); |
| 2489 } | 2482 } |
| 2490 | 2483 |
| 2491 // Test the results of GetFaviconsFromDB() when called with different | 2484 // Test the results of GetFaviconsFromDB() when called with different |
| 2492 // |icon_types|. | 2485 // |icon_types|. |
| 2493 TEST_F(HistoryBackendTest, GetFaviconsFromDBIconType) { | 2486 TEST_F(HistoryBackendTest, GetFaviconsFromDBIconType) { |
| 2494 const GURL page_url("http://www.google.com/"); | 2487 const GURL page_url("http://www.google.com/"); |
| 2495 const GURL icon_url1("http://www.google.com/icon1.png"); | 2488 const GURL icon_url1("http://www.google.com/icon1.png"); |
| 2496 const GURL icon_url2("http://www.google.com/icon2.png"); | 2489 const GURL icon_url2("http://www.google.com/icon2.png"); |
| 2497 | 2490 |
| 2498 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 2491 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 2499 GenerateFaviconBitmapData(icon_url1, GetSizesSmall(), &favicon_bitmap_data); | 2492 GenerateFaviconBitmapData(icon_url1, GetEdgeSizesSmall(), |
| 2493 &favicon_bitmap_data); |
| 2500 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); | 2494 backend_->SetFavicons(page_url, favicon_base::FAVICON, favicon_bitmap_data); |
| 2501 | 2495 |
| 2502 GenerateFaviconBitmapData(icon_url2, GetSizesSmall(), &favicon_bitmap_data); | 2496 GenerateFaviconBitmapData( |
| 2497 icon_url2, GetEdgeSizesSmall(), &favicon_bitmap_data); |
| 2503 backend_->SetFavicons( | 2498 backend_->SetFavicons( |
| 2504 page_url, favicon_base::TOUCH_ICON, favicon_bitmap_data); | 2499 page_url, favicon_base::TOUCH_ICON, favicon_bitmap_data); |
| 2505 | 2500 |
| 2506 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; | 2501 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; |
| 2507 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, | 2502 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, |
| 2508 favicon_base::FAVICON, | 2503 favicon_base::FAVICON, |
| 2509 kSmallSize.width(), | 2504 GetEdgeSizesSmallAndLarge(), |
| 2510 GetScaleFactors1x2x(), | |
| 2511 &bitmap_results_out)); | 2505 &bitmap_results_out)); |
| 2512 | 2506 |
| 2513 EXPECT_EQ(1u, bitmap_results_out.size()); | 2507 EXPECT_EQ(1u, bitmap_results_out.size()); |
| 2514 EXPECT_EQ(favicon_base::FAVICON, bitmap_results_out[0].icon_type); | 2508 EXPECT_EQ(favicon_base::FAVICON, bitmap_results_out[0].icon_type); |
| 2515 EXPECT_EQ(icon_url1, bitmap_results_out[0].icon_url); | 2509 EXPECT_EQ(icon_url1, bitmap_results_out[0].icon_url); |
| 2516 | 2510 |
| 2517 bitmap_results_out.clear(); | 2511 bitmap_results_out.clear(); |
| 2518 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, | 2512 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, |
| 2519 favicon_base::TOUCH_ICON, | 2513 favicon_base::TOUCH_ICON, |
| 2520 kSmallSize.width(), | 2514 GetEdgeSizesSmallAndLarge(), |
| 2521 GetScaleFactors1x2x(), | |
| 2522 &bitmap_results_out)); | 2515 &bitmap_results_out)); |
| 2523 | 2516 |
| 2524 EXPECT_EQ(1u, bitmap_results_out.size()); | 2517 EXPECT_EQ(1u, bitmap_results_out.size()); |
| 2525 EXPECT_EQ(favicon_base::TOUCH_ICON, bitmap_results_out[0].icon_type); | 2518 EXPECT_EQ(favicon_base::TOUCH_ICON, bitmap_results_out[0].icon_type); |
| 2526 EXPECT_EQ(icon_url2, bitmap_results_out[0].icon_url); | 2519 EXPECT_EQ(icon_url2, bitmap_results_out[0].icon_url); |
| 2527 } | 2520 } |
| 2528 | 2521 |
| 2529 // Test that GetFaviconsFromDB() correctly sets the expired flag for bitmap | 2522 // Test that GetFaviconsFromDB() correctly sets the expired flag for bitmap |
| 2530 // reults. | 2523 // reults. |
| 2531 TEST_F(HistoryBackendTest, GetFaviconsFromDBExpired) { | 2524 TEST_F(HistoryBackendTest, GetFaviconsFromDBExpired) { |
| 2532 const GURL page_url("http://www.google.com/"); | 2525 const GURL page_url("http://www.google.com/"); |
| 2533 const GURL icon_url("http://www.google.com/icon.png"); | 2526 const GURL icon_url("http://www.google.com/icon.png"); |
| 2534 | 2527 |
| 2535 std::vector<unsigned char> data; | 2528 std::vector<unsigned char> data; |
| 2536 data.push_back('a'); | 2529 data.push_back('a'); |
| 2537 scoped_refptr<base::RefCountedBytes> bitmap_data( | 2530 scoped_refptr<base::RefCountedBytes> bitmap_data( |
| 2538 base::RefCountedBytes::TakeVector(&data)); | 2531 base::RefCountedBytes::TakeVector(&data)); |
| 2539 base::Time last_updated = base::Time::FromTimeT(0); | 2532 base::Time last_updated = base::Time::FromTimeT(0); |
| 2540 favicon_base::FaviconID icon_id = backend_->thumbnail_db_->AddFavicon( | 2533 favicon_base::FaviconID icon_id = backend_->thumbnail_db_->AddFavicon( |
| 2541 icon_url, favicon_base::FAVICON, bitmap_data, last_updated, kSmallSize); | 2534 icon_url, favicon_base::FAVICON, bitmap_data, last_updated, kSmallSize); |
| 2542 EXPECT_NE(0, icon_id); | 2535 EXPECT_NE(0, icon_id); |
| 2543 EXPECT_NE(0, backend_->thumbnail_db_->AddIconMapping(page_url, icon_id)); | 2536 EXPECT_NE(0, backend_->thumbnail_db_->AddIconMapping(page_url, icon_id)); |
| 2544 | 2537 |
| 2545 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; | 2538 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; |
| 2546 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, | 2539 EXPECT_TRUE(backend_->GetFaviconsFromDB(page_url, |
| 2547 favicon_base::FAVICON, | 2540 favicon_base::FAVICON, |
| 2548 kSmallSize.width(), | 2541 GetEdgeSizesSmallAndLarge(), |
| 2549 GetScaleFactors1x2x(), | |
| 2550 &bitmap_results_out)); | 2542 &bitmap_results_out)); |
| 2551 | 2543 |
| 2552 EXPECT_EQ(1u, bitmap_results_out.size()); | 2544 EXPECT_EQ(1u, bitmap_results_out.size()); |
| 2553 EXPECT_TRUE(bitmap_results_out[0].expired); | 2545 EXPECT_TRUE(bitmap_results_out[0].expired); |
| 2554 } | 2546 } |
| 2555 | 2547 |
| 2556 // Check that UpdateFaviconMappingsAndFetch() call back to the UI when there is | 2548 // Check that UpdateFaviconMappingsAndFetch() call back to the UI when there is |
| 2557 // no valid thumbnail database. | 2549 // no valid thumbnail database. |
| 2558 TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchNoDB) { | 2550 TEST_F(HistoryBackendTest, UpdateFaviconMappingsAndFetchNoDB) { |
| 2559 // Make the thumbnail database invalid. | 2551 // Make the thumbnail database invalid. |
| 2560 backend_->thumbnail_db_.reset(); | 2552 backend_->thumbnail_db_.reset(); |
| 2561 | 2553 |
| 2562 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; | 2554 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results; |
| 2563 | 2555 |
| 2564 backend_->UpdateFaviconMappingsAndFetch(GURL(), | 2556 backend_->UpdateFaviconMappingsAndFetch(GURL(), |
| 2565 std::vector<GURL>(), | 2557 std::vector<GURL>(), |
| 2566 favicon_base::FAVICON, | 2558 favicon_base::FAVICON, |
| 2567 kSmallSize.width(), | 2559 GetEdgeSizesSmallAndLarge(), |
| 2568 GetScaleFactors1x2x(), | |
| 2569 &bitmap_results); | 2560 &bitmap_results); |
| 2570 | 2561 |
| 2571 EXPECT_TRUE(bitmap_results.empty()); | 2562 EXPECT_TRUE(bitmap_results.empty()); |
| 2572 } | 2563 } |
| 2573 | 2564 |
| 2574 TEST_F(HistoryBackendTest, CloneFaviconIsRestrictedToSameDomain) { | 2565 TEST_F(HistoryBackendTest, CloneFaviconIsRestrictedToSameDomain) { |
| 2575 const GURL url("http://www.google.com/"); | 2566 const GURL url("http://www.google.com/"); |
| 2576 const GURL same_domain_url("http://www.google.com/subdir/index.html"); | 2567 const GURL same_domain_url("http://www.google.com/subdir/index.html"); |
| 2577 const GURL foreign_domain_url("http://www.not-google.com/"); | 2568 const GURL foreign_domain_url("http://www.not-google.com/"); |
| 2578 const GURL icon_url("http://www.google.com/icon.png"); | 2569 const GURL icon_url("http://www.google.com/icon.png"); |
| 2579 | 2570 |
| 2580 // Add a favicon | 2571 // Add a favicon |
| 2581 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | 2572 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; |
| 2582 GenerateFaviconBitmapData(icon_url, GetSizesSmall(), &favicon_bitmap_data); | 2573 GenerateFaviconBitmapData(icon_url, GetEdgeSizesSmall(), |
| 2574 &favicon_bitmap_data); |
| 2583 backend_->SetFavicons(url, favicon_base::FAVICON, favicon_bitmap_data); | 2575 backend_->SetFavicons(url, favicon_base::FAVICON, favicon_bitmap_data); |
| 2584 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( | 2576 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( |
| 2585 url, favicon_base::FAVICON, NULL)); | 2577 url, favicon_base::FAVICON, NULL)); |
| 2586 | 2578 |
| 2587 // Validate starting state. | 2579 // Validate starting state. |
| 2588 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; | 2580 std::vector<favicon_base::FaviconRawBitmapResult> bitmap_results_out; |
| 2589 EXPECT_TRUE(backend_->GetFaviconsFromDB(url, | 2581 EXPECT_TRUE(backend_->GetFaviconsFromDB(url, |
| 2590 favicon_base::FAVICON, | 2582 favicon_base::FAVICON, |
| 2591 kSmallSize.width(), | 2583 GetEdgeSizesSmallAndLarge(), |
| 2592 GetScaleFactors1x2x(), | |
| 2593 &bitmap_results_out)); | 2584 &bitmap_results_out)); |
| 2594 EXPECT_FALSE(backend_->GetFaviconsFromDB(same_domain_url, | 2585 EXPECT_FALSE(backend_->GetFaviconsFromDB(same_domain_url, |
| 2595 favicon_base::FAVICON, | 2586 favicon_base::FAVICON, |
| 2596 kSmallSize.width(), | 2587 GetEdgeSizesSmallAndLarge(), |
| 2597 GetScaleFactors1x2x(), | |
| 2598 &bitmap_results_out)); | 2588 &bitmap_results_out)); |
| 2599 EXPECT_FALSE(backend_->GetFaviconsFromDB(foreign_domain_url, | 2589 EXPECT_FALSE(backend_->GetFaviconsFromDB(foreign_domain_url, |
| 2600 favicon_base::FAVICON, | 2590 favicon_base::FAVICON, |
| 2601 kSmallSize.width(), | 2591 GetEdgeSizesSmallAndLarge(), |
| 2602 GetScaleFactors1x2x(), | |
| 2603 &bitmap_results_out)); | 2592 &bitmap_results_out)); |
| 2604 | 2593 |
| 2605 // Same-domain cloning should work. | 2594 // Same-domain cloning should work. |
| 2606 backend_->CloneFavicons(url, same_domain_url); | 2595 backend_->CloneFavicons(url, same_domain_url); |
| 2607 EXPECT_TRUE(backend_->GetFaviconsFromDB(same_domain_url, | 2596 EXPECT_TRUE(backend_->GetFaviconsFromDB(same_domain_url, |
| 2608 favicon_base::FAVICON, | 2597 favicon_base::FAVICON, |
| 2609 kSmallSize.width(), | 2598 GetEdgeSizesSmallAndLarge(), |
| 2610 GetScaleFactors1x2x(), | |
| 2611 &bitmap_results_out)); | 2599 &bitmap_results_out)); |
| 2612 | 2600 |
| 2613 // Foreign-domain cloning is forbidden. | 2601 // Foreign-domain cloning is forbidden. |
| 2614 backend_->CloneFavicons(url, foreign_domain_url); | 2602 backend_->CloneFavicons(url, foreign_domain_url); |
| 2615 EXPECT_FALSE(backend_->GetFaviconsFromDB(foreign_domain_url, | 2603 EXPECT_FALSE(backend_->GetFaviconsFromDB(foreign_domain_url, |
| 2616 favicon_base::FAVICON, | 2604 favicon_base::FAVICON, |
| 2617 kSmallSize.width(), | 2605 GetEdgeSizesSmallAndLarge(), |
| 2618 GetScaleFactors1x2x(), | |
| 2619 &bitmap_results_out)); | 2606 &bitmap_results_out)); |
| 2620 } | 2607 } |
| 2621 | 2608 |
| 2622 TEST_F(HistoryBackendTest, QueryFilteredURLs) { | 2609 TEST_F(HistoryBackendTest, QueryFilteredURLs) { |
| 2623 const char* google = "http://www.google.com/"; | 2610 const char* google = "http://www.google.com/"; |
| 2624 const char* yahoo = "http://www.yahoo.com/"; | 2611 const char* yahoo = "http://www.yahoo.com/"; |
| 2625 const char* yahoo_sports = "http://sports.yahoo.com/"; | 2612 const char* yahoo_sports = "http://sports.yahoo.com/"; |
| 2626 const char* yahoo_sports_with_article1 = | 2613 const char* yahoo_sports_with_article1 = |
| 2627 "http://sports.yahoo.com/article1.htm"; | 2614 "http://sports.yahoo.com/article1.htm"; |
| 2628 const char* yahoo_sports_with_article2 = | 2615 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 | 3344 // 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 | 3345 // at the low level that it is gone for good. The term corresponding to the |
| 3359 // first URLRow should not be affected. | 3346 // first URLRow should not be affected. |
| 3360 EXPECT_EQ(1u, GetNumberOfMatchingSearchTerms(kTestKeywordId, term1)); | 3347 EXPECT_EQ(1u, GetNumberOfMatchingSearchTerms(kTestKeywordId, term1)); |
| 3361 EXPECT_EQ(0u, GetNumberOfMatchingSearchTerms(kTestKeywordId, term2)); | 3348 EXPECT_EQ(0u, GetNumberOfMatchingSearchTerms(kTestKeywordId, term2)); |
| 3362 EXPECT_TRUE(mem_backend_->db()->GetKeywordSearchTermRow(row1.id(), NULL)); | 3349 EXPECT_TRUE(mem_backend_->db()->GetKeywordSearchTermRow(row1.id(), NULL)); |
| 3363 EXPECT_FALSE(mem_backend_->db()->GetKeywordSearchTermRow(row2.id(), NULL)); | 3350 EXPECT_FALSE(mem_backend_->db()->GetKeywordSearchTermRow(row2.id(), NULL)); |
| 3364 } | 3351 } |
| 3365 | 3352 |
| 3366 } // namespace history | 3353 } // namespace history |
| OLD | NEW |