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 <algorithm> | 5 #include <algorithm> |
6 #include <set> | 6 #include <set> |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 1429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1440 favicon_bitmaps.clear(); | 1440 favicon_bitmaps.clear(); |
1441 EXPECT_TRUE(GetSortedFaviconBitmaps(icon_mappings[1].icon_id, | 1441 EXPECT_TRUE(GetSortedFaviconBitmaps(icon_mappings[1].icon_id, |
1442 &favicon_bitmaps)); | 1442 &favicon_bitmaps)); |
1443 | 1443 |
1444 EXPECT_EQ(2u, favicon_bitmaps.size()); | 1444 EXPECT_EQ(2u, favicon_bitmaps.size()); |
1445 EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmaps[0].bitmap_data)); | 1445 EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmaps[0].bitmap_data)); |
1446 EXPECT_EQ(kSmallSize, favicon_bitmaps[0].pixel_size); | 1446 EXPECT_EQ(kSmallSize, favicon_bitmaps[0].pixel_size); |
1447 EXPECT_TRUE(BitmapDataEqual('c', favicon_bitmaps[1].bitmap_data)); | 1447 EXPECT_TRUE(BitmapDataEqual('c', favicon_bitmaps[1].bitmap_data)); |
1448 EXPECT_EQ(kLargeSize, favicon_bitmaps[1].pixel_size); | 1448 EXPECT_EQ(kLargeSize, favicon_bitmaps[1].pixel_size); |
1449 | 1449 |
| 1450 // Notifications should have been broadcast for each call to SetFavicons(). |
| 1451 EXPECT_EQ(2, num_broadcasted_notifications()); |
| 1452 |
1450 // Change the sizes for which the favicon at icon_url1 is available at from | 1453 // Change the sizes for which the favicon at icon_url1 is available at from |
1451 // the web. Verify that all the data remains valid. | 1454 // the web. Verify that all the data remains valid. |
1452 icon_url_sizes[icon_url1] = GetSizesTinySmallAndLarge(); | 1455 icon_url_sizes[icon_url1] = GetSizesTinySmallAndLarge(); |
1453 favicon_bitmap_data.clear(); | 1456 favicon_bitmap_data.clear(); |
1454 backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data, | 1457 backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data, |
1455 icon_url_sizes); | 1458 icon_url_sizes); |
1456 | 1459 |
1457 icon_mappings.clear(); | 1460 icon_mappings.clear(); |
1458 EXPECT_TRUE(GetSortedIconMappingsForPageURL(page_url, &icon_mappings)); | 1461 EXPECT_TRUE(GetSortedIconMappingsForPageURL(page_url, &icon_mappings)); |
1459 EXPECT_EQ(2u, icon_mappings.size()); | 1462 EXPECT_EQ(2u, icon_mappings.size()); |
(...skipping 15 matching lines...) Expand all Loading... |
1475 icon_mappings[1].icon_id, &icon_url, &icon_type, &favicon_sizes)); | 1478 icon_mappings[1].icon_id, &icon_url, &icon_type, &favicon_sizes)); |
1476 EXPECT_EQ(icon_url2, icon_url); | 1479 EXPECT_EQ(icon_url2, icon_url); |
1477 EXPECT_EQ(FAVICON, icon_type); | 1480 EXPECT_EQ(FAVICON, icon_type); |
1478 EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes); | 1481 EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes); |
1479 | 1482 |
1480 favicon_bitmaps.clear(); | 1483 favicon_bitmaps.clear(); |
1481 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconBitmaps( | 1484 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconBitmaps( |
1482 icon_mappings[1].icon_id, &favicon_bitmaps)); | 1485 icon_mappings[1].icon_id, &favicon_bitmaps)); |
1483 EXPECT_EQ(2u, favicon_bitmaps.size()); | 1486 EXPECT_EQ(2u, favicon_bitmaps.size()); |
1484 | 1487 |
1485 // Notifications should have been broadcast for each call to SetFavicons(). | 1488 // No notifications should have been sent because changing the favicon sizes |
1486 EXPECT_EQ(3, num_broadcasted_notifications()); | 1489 // did not result in deleting any favicon bitmaps. |
| 1490 EXPECT_EQ(2, num_broadcasted_notifications()); |
1487 } | 1491 } |
1488 | 1492 |
1489 // Test that changing the sizes that a favicon is available at from the web | 1493 // Test that changing the sizes that a favicon is available at from the web |
1490 // deletes stale favicons and favicon bitmaps. | 1494 // deletes stale favicons and favicon bitmaps. |
1491 TEST_F(HistoryBackendTest, SetFaviconsDeleteBitmaps) { | 1495 TEST_F(HistoryBackendTest, SetFaviconsDeleteBitmaps) { |
1492 const GURL page_url("http://www.google.com/"); | 1496 const GURL page_url("http://www.google.com/"); |
1493 const GURL icon_url("http://www.google.com/icon"); | 1497 const GURL icon_url("http://www.google.com/icon"); |
1494 | 1498 |
1495 // Set |page_url| as having one favicon with two different sizes. | 1499 // Set |page_url| as having one favicon with two different sizes. |
1496 IconURLSizesMap icon_url_sizes; | 1500 IconURLSizesMap icon_url_sizes; |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1563 | 1567 |
1564 FaviconID original_favicon_id = | 1568 FaviconID original_favicon_id = |
1565 backend_->thumbnail_db_->GetFaviconIDForFaviconURL(icon_url, FAVICON, | 1569 backend_->thumbnail_db_->GetFaviconIDForFaviconURL(icon_url, FAVICON, |
1566 NULL); | 1570 NULL); |
1567 EXPECT_NE(0, original_favicon_id); | 1571 EXPECT_NE(0, original_favicon_id); |
1568 FaviconBitmap original_favicon_bitmap; | 1572 FaviconBitmap original_favicon_bitmap; |
1569 EXPECT_TRUE( | 1573 EXPECT_TRUE( |
1570 GetOnlyFaviconBitmap(original_favicon_id, &original_favicon_bitmap)); | 1574 GetOnlyFaviconBitmap(original_favicon_id, &original_favicon_bitmap)); |
1571 EXPECT_TRUE(BitmapDataEqual('a', original_favicon_bitmap.bitmap_data)); | 1575 EXPECT_TRUE(BitmapDataEqual('a', original_favicon_bitmap.bitmap_data)); |
1572 | 1576 |
1573 // SetFavicons with identical data but a different bitmap. | 1577 EXPECT_EQ(1, num_broadcasted_notifications()); |
| 1578 |
| 1579 // Call SetFavicons() with completely identical data. |
1574 std::vector<unsigned char> updated_data; | 1580 std::vector<unsigned char> updated_data; |
1575 updated_data.push_back('b'); | 1581 updated_data.push_back('a'); |
1576 favicon_bitmap_data[0].bitmap_data = | 1582 favicon_bitmap_data[0].bitmap_data = new base::RefCountedBytes(updated_data); |
1577 base::RefCountedBytes::TakeVector(&updated_data); | |
1578 backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data, | 1583 backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data, |
1579 icon_url_sizes); | 1584 icon_url_sizes); |
1580 | 1585 |
1581 FaviconID updated_favicon_id = | 1586 FaviconID updated_favicon_id = |
1582 backend_->thumbnail_db_->GetFaviconIDForFaviconURL(icon_url, FAVICON, | 1587 backend_->thumbnail_db_->GetFaviconIDForFaviconURL(icon_url, FAVICON, |
1583 NULL); | 1588 NULL); |
1584 EXPECT_NE(0, updated_favicon_id); | 1589 EXPECT_NE(0, updated_favicon_id); |
1585 FaviconBitmap updated_favicon_bitmap; | 1590 FaviconBitmap updated_favicon_bitmap; |
1586 EXPECT_TRUE( | 1591 EXPECT_TRUE( |
1587 GetOnlyFaviconBitmap(updated_favicon_id, &updated_favicon_bitmap)); | 1592 GetOnlyFaviconBitmap(updated_favicon_id, &updated_favicon_bitmap)); |
| 1593 EXPECT_TRUE(BitmapDataEqual('a', updated_favicon_bitmap.bitmap_data)); |
| 1594 |
| 1595 // Because the bitmap data is byte equivalent, no notifications should have |
| 1596 // been broadcasted. |
| 1597 EXPECT_EQ(1, num_broadcasted_notifications()); |
| 1598 |
| 1599 // Call SetFavicons() with identical data but a different bitmap. |
| 1600 updated_data[0] = 'b'; |
| 1601 favicon_bitmap_data[0].bitmap_data = new base::RefCountedBytes(updated_data); |
| 1602 backend_->SetFavicons(page_url, FAVICON, favicon_bitmap_data, |
| 1603 icon_url_sizes); |
| 1604 |
| 1605 updated_favicon_id = |
| 1606 backend_->thumbnail_db_->GetFaviconIDForFaviconURL(icon_url, FAVICON, |
| 1607 NULL); |
| 1608 EXPECT_NE(0, updated_favicon_id); |
| 1609 EXPECT_TRUE( |
| 1610 GetOnlyFaviconBitmap(updated_favicon_id, &updated_favicon_bitmap)); |
1588 EXPECT_TRUE(BitmapDataEqual('b', updated_favicon_bitmap.bitmap_data)); | 1611 EXPECT_TRUE(BitmapDataEqual('b', updated_favicon_bitmap.bitmap_data)); |
1589 | 1612 |
1590 // There should be no churn in FaviconIDs or FaviconBitmapIds. | 1613 // There should be no churn in FaviconIDs or FaviconBitmapIds even though |
| 1614 // the bitmap data changed. |
1591 EXPECT_EQ(original_favicon_bitmap.icon_id, updated_favicon_bitmap.icon_id); | 1615 EXPECT_EQ(original_favicon_bitmap.icon_id, updated_favicon_bitmap.icon_id); |
1592 EXPECT_EQ(original_favicon_bitmap.bitmap_id, | 1616 EXPECT_EQ(original_favicon_bitmap.bitmap_id, |
1593 updated_favicon_bitmap.bitmap_id); | 1617 updated_favicon_bitmap.bitmap_id); |
| 1618 |
| 1619 // A notification should have been broadcasted as the favicon bitmap data has |
| 1620 // changed. |
| 1621 EXPECT_EQ(2, num_broadcasted_notifications()); |
1594 } | 1622 } |
1595 | 1623 |
1596 // Test that if two pages share the same FaviconID, changing the favicon for | 1624 // Test that if two pages share the same FaviconID, changing the favicon for |
1597 // one page does not affect the other. | 1625 // one page does not affect the other. |
1598 TEST_F(HistoryBackendTest, SetFaviconsSameFaviconURLForTwoPages) { | 1626 TEST_F(HistoryBackendTest, SetFaviconsSameFaviconURLForTwoPages) { |
1599 GURL icon_url("http://www.google.com/favicon.ico"); | 1627 GURL icon_url("http://www.google.com/favicon.ico"); |
1600 GURL icon_url_new("http://www.google.com/favicon2.ico"); | 1628 GURL icon_url_new("http://www.google.com/favicon2.ico"); |
1601 GURL page_url1("http://www.google.com"); | 1629 GURL page_url1("http://www.google.com"); |
1602 GURL page_url2("http://www.google.ca"); | 1630 GURL page_url2("http://www.google.ca"); |
1603 | 1631 |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1785 FaviconSizes favicon_sizes; | 1813 FaviconSizes favicon_sizes; |
1786 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader( | 1814 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader( |
1787 icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes)); | 1815 icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes)); |
1788 EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes); | 1816 EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes); |
1789 | 1817 |
1790 FaviconBitmap favicon_bitmap; | 1818 FaviconBitmap favicon_bitmap; |
1791 EXPECT_TRUE(GetOnlyFaviconBitmap(icon_mappings[0].icon_id, &favicon_bitmap)); | 1819 EXPECT_TRUE(GetOnlyFaviconBitmap(icon_mappings[0].icon_id, &favicon_bitmap)); |
1792 EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmap.bitmap_data)); | 1820 EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmap.bitmap_data)); |
1793 EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size); | 1821 EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size); |
1794 | 1822 |
1795 // 1) Merge favicon of the same size. | 1823 EXPECT_EQ(1, num_broadcasted_notifications()); |
| 1824 |
| 1825 // 1) Merge identical favicon bitmap. |
1796 std::vector<unsigned char> data; | 1826 std::vector<unsigned char> data; |
1797 data.push_back('b'); | 1827 data.push_back('a'); |
1798 scoped_refptr<base::RefCountedBytes> bitmap_data( | 1828 scoped_refptr<base::RefCountedBytes> bitmap_data( |
1799 new base::RefCountedBytes(data)); | 1829 new base::RefCountedBytes(data)); |
1800 backend_->MergeFavicon(page_url, icon_url1, FAVICON, bitmap_data, kSmallSize); | 1830 backend_->MergeFavicon(page_url, icon_url1, FAVICON, bitmap_data, kSmallSize); |
1801 | 1831 |
| 1832 // All the data should stay the same and no notifications should have been |
| 1833 // sent. |
| 1834 icon_mappings.clear(); |
| 1835 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, |
| 1836 &icon_mappings)); |
| 1837 EXPECT_EQ(1u, icon_mappings.size()); |
| 1838 EXPECT_EQ(icon_url1, icon_mappings[0].icon_url); |
| 1839 |
| 1840 favicon_sizes.clear(); |
| 1841 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader( |
| 1842 icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes)); |
| 1843 EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes); |
| 1844 |
| 1845 EXPECT_TRUE(GetOnlyFaviconBitmap(icon_mappings[0].icon_id, &favicon_bitmap)); |
| 1846 EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmap.bitmap_data)); |
| 1847 EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size); |
| 1848 |
| 1849 EXPECT_EQ(1, num_broadcasted_notifications()); |
| 1850 |
| 1851 // 2) Merge favicon bitmap of the same size. |
| 1852 data[0] = 'b'; |
| 1853 bitmap_data = new base::RefCountedBytes(data); |
| 1854 backend_->MergeFavicon(page_url, icon_url1, FAVICON, bitmap_data, kSmallSize); |
| 1855 |
1802 // The small favicon bitmap at |icon_url1| should be overwritten and favicon | 1856 // The small favicon bitmap at |icon_url1| should be overwritten and favicon |
1803 // sizes should remain unchanged. | 1857 // sizes should remain unchanged. |
1804 icon_mappings.clear(); | 1858 icon_mappings.clear(); |
1805 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, | 1859 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, |
1806 &icon_mappings)); | 1860 &icon_mappings)); |
1807 EXPECT_EQ(1u, icon_mappings.size()); | 1861 EXPECT_EQ(1u, icon_mappings.size()); |
1808 EXPECT_EQ(icon_url1, icon_mappings[0].icon_url); | 1862 EXPECT_EQ(icon_url1, icon_mappings[0].icon_url); |
1809 | 1863 |
1810 favicon_sizes.clear(); | 1864 favicon_sizes.clear(); |
1811 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader( | 1865 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader( |
1812 icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes)); | 1866 icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes)); |
1813 EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes); | 1867 EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes); |
1814 | 1868 |
1815 EXPECT_TRUE(GetOnlyFaviconBitmap(icon_mappings[0].icon_id, &favicon_bitmap)); | 1869 EXPECT_TRUE(GetOnlyFaviconBitmap(icon_mappings[0].icon_id, &favicon_bitmap)); |
1816 EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmap.bitmap_data)); | 1870 EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmap.bitmap_data)); |
1817 EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size); | 1871 EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size); |
1818 | 1872 |
1819 // 2) Merge favicon for the same icon URL, but a pixel size for which there is | 1873 // 3) Merge favicon for the same icon URL, but a pixel size for which there is |
1820 // no favicon bitmap. | 1874 // no favicon bitmap. |
1821 data[0] = 'c'; | 1875 data[0] = 'c'; |
1822 bitmap_data = new base::RefCountedBytes(data); | 1876 bitmap_data = new base::RefCountedBytes(data); |
1823 backend_->MergeFavicon(page_url, icon_url1, FAVICON, bitmap_data, kTinySize); | 1877 backend_->MergeFavicon(page_url, icon_url1, FAVICON, bitmap_data, kTinySize); |
1824 | 1878 |
1825 // A new favicon bitmap should be created and favicon sizes should be set to | 1879 // A new favicon bitmap should be created and favicon sizes should be set to |
1826 // the default. | 1880 // the default. |
1827 icon_mappings.clear(); | 1881 icon_mappings.clear(); |
1828 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, | 1882 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, |
1829 &icon_mappings)); | 1883 &icon_mappings)); |
1830 EXPECT_EQ(1u, icon_mappings.size()); | 1884 EXPECT_EQ(1u, icon_mappings.size()); |
1831 EXPECT_EQ(icon_url1, icon_mappings[0].icon_url); | 1885 EXPECT_EQ(icon_url1, icon_mappings[0].icon_url); |
1832 | 1886 |
1833 favicon_sizes.clear(); | 1887 favicon_sizes.clear(); |
1834 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader( | 1888 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader( |
1835 icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes)); | 1889 icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes)); |
1836 EXPECT_EQ(GetDefaultFaviconSizes(), favicon_sizes); | 1890 EXPECT_EQ(GetDefaultFaviconSizes(), favicon_sizes); |
1837 | 1891 |
1838 std::vector<FaviconBitmap> favicon_bitmaps; | 1892 std::vector<FaviconBitmap> favicon_bitmaps; |
1839 EXPECT_TRUE(GetSortedFaviconBitmaps(icon_mappings[0].icon_id, | 1893 EXPECT_TRUE(GetSortedFaviconBitmaps(icon_mappings[0].icon_id, |
1840 &favicon_bitmaps)); | 1894 &favicon_bitmaps)); |
1841 EXPECT_TRUE(BitmapDataEqual('c', favicon_bitmaps[0].bitmap_data)); | 1895 EXPECT_TRUE(BitmapDataEqual('c', favicon_bitmaps[0].bitmap_data)); |
1842 EXPECT_EQ(kTinySize, favicon_bitmaps[0].pixel_size); | 1896 EXPECT_EQ(kTinySize, favicon_bitmaps[0].pixel_size); |
1843 EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmaps[1].bitmap_data)); | 1897 EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmaps[1].bitmap_data)); |
1844 EXPECT_EQ(kSmallSize, favicon_bitmaps[1].pixel_size); | 1898 EXPECT_EQ(kSmallSize, favicon_bitmaps[1].pixel_size); |
1845 | 1899 |
1846 // 3) Merge favicon for an icon URL different from the icon URLs already | 1900 // 4) Merge favicon for an icon URL different from the icon URLs already |
1847 // mapped to page URL. | 1901 // mapped to page URL. |
1848 data[0] = 'd'; | 1902 data[0] = 'd'; |
1849 bitmap_data = new base::RefCountedBytes(data); | 1903 bitmap_data = new base::RefCountedBytes(data); |
1850 backend_->MergeFavicon(page_url, icon_url2, FAVICON, bitmap_data, kSmallSize); | 1904 backend_->MergeFavicon(page_url, icon_url2, FAVICON, bitmap_data, kSmallSize); |
1851 | 1905 |
1852 // The existing favicon bitmaps should be copied over to the newly created | 1906 // The existing favicon bitmaps should be copied over to the newly created |
1853 // favicon at |icon_url2|. |page_url| should solely be mapped to |icon_url2|. | 1907 // favicon at |icon_url2|. |page_url| should solely be mapped to |icon_url2|. |
1854 icon_mappings.clear(); | 1908 icon_mappings.clear(); |
1855 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, | 1909 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, |
1856 &icon_mappings)); | 1910 &icon_mappings)); |
(...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2683 backend_->GetFirstRecordedTimeForTest()); | 2737 backend_->GetFirstRecordedTimeForTest()); |
2684 | 2738 |
2685 EXPECT_FALSE(backend_->GetURL(args[0].url, &row)); | 2739 EXPECT_FALSE(backend_->GetURL(args[0].url, &row)); |
2686 EXPECT_TRUE(backend_->GetURL(args[1].url, &row)); | 2740 EXPECT_TRUE(backend_->GetURL(args[1].url, &row)); |
2687 EXPECT_FALSE(backend_->GetURL(args[2].url, &row)); | 2741 EXPECT_FALSE(backend_->GetURL(args[2].url, &row)); |
2688 EXPECT_TRUE(backend_->GetURL(args[3].url, &row)); | 2742 EXPECT_TRUE(backend_->GetURL(args[3].url, &row)); |
2689 EXPECT_FALSE(backend_->GetURL(args[4].url, &row)); | 2743 EXPECT_FALSE(backend_->GetURL(args[4].url, &row)); |
2690 } | 2744 } |
2691 | 2745 |
2692 } // namespace history | 2746 } // namespace history |
OLD | NEW |