Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Side by Side Diff: chrome/browser/history/history_backend_unittest.cc

Issue 11830007: Avoid sending notifications when the bitmap data in history has not changed (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Split the changes to MergeFavicon() and SetFavicons() into two CLs as only the changes to MergeFavi… Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/history/history_backend.cc ('k') | chrome/browser/history/thumbnail_database.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 1774 matching lines...) Expand 10 before | Expand all | Expand 10 after
1785 FaviconSizes favicon_sizes; 1785 FaviconSizes favicon_sizes;
1786 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader( 1786 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader(
1787 icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes)); 1787 icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes));
1788 EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes); 1788 EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes);
1789 1789
1790 FaviconBitmap favicon_bitmap; 1790 FaviconBitmap favicon_bitmap;
1791 EXPECT_TRUE(GetOnlyFaviconBitmap(icon_mappings[0].icon_id, &favicon_bitmap)); 1791 EXPECT_TRUE(GetOnlyFaviconBitmap(icon_mappings[0].icon_id, &favicon_bitmap));
1792 EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmap.bitmap_data)); 1792 EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmap.bitmap_data));
1793 EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size); 1793 EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size);
1794 1794
1795 // 1) Merge favicon of the same size. 1795 EXPECT_EQ(1, num_broadcasted_notifications());
1796
1797 // 1) Merge identical favicon bitmap.
1796 std::vector<unsigned char> data; 1798 std::vector<unsigned char> data;
1797 data.push_back('b'); 1799 data.push_back('a');
1798 scoped_refptr<base::RefCountedBytes> bitmap_data( 1800 scoped_refptr<base::RefCountedBytes> bitmap_data(
1799 new base::RefCountedBytes(data)); 1801 new base::RefCountedBytes(data));
1800 backend_->MergeFavicon(page_url, icon_url1, FAVICON, bitmap_data, kSmallSize); 1802 backend_->MergeFavicon(page_url, icon_url1, FAVICON, bitmap_data, kSmallSize);
1801 1803
1804 // All the data should stay the same and no notifications should have been
1805 // sent.
1806 icon_mappings.clear();
1807 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url,
1808 &icon_mappings));
1809 EXPECT_EQ(1u, icon_mappings.size());
1810 EXPECT_EQ(icon_url1, icon_mappings[0].icon_url);
1811
1812 favicon_sizes.clear();
1813 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader(
1814 icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes));
1815 EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes);
1816
1817 EXPECT_TRUE(GetOnlyFaviconBitmap(icon_mappings[0].icon_id, &favicon_bitmap));
1818 EXPECT_TRUE(BitmapDataEqual('a', favicon_bitmap.bitmap_data));
1819 EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size);
1820
1821 EXPECT_EQ(1, num_broadcasted_notifications());
1822
1823 // 2) Merge favicon bitmap of the same size.
1824 data[0] = 'b';
1825 bitmap_data = new base::RefCountedBytes(data);
1826 backend_->MergeFavicon(page_url, icon_url1, FAVICON, bitmap_data, kSmallSize);
1827
1802 // The small favicon bitmap at |icon_url1| should be overwritten and favicon 1828 // The small favicon bitmap at |icon_url1| should be overwritten and favicon
1803 // sizes should remain unchanged. 1829 // sizes should remain unchanged.
1804 icon_mappings.clear(); 1830 icon_mappings.clear();
1805 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, 1831 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url,
1806 &icon_mappings)); 1832 &icon_mappings));
1807 EXPECT_EQ(1u, icon_mappings.size()); 1833 EXPECT_EQ(1u, icon_mappings.size());
1808 EXPECT_EQ(icon_url1, icon_mappings[0].icon_url); 1834 EXPECT_EQ(icon_url1, icon_mappings[0].icon_url);
1809 1835
1810 favicon_sizes.clear(); 1836 favicon_sizes.clear();
1811 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader( 1837 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader(
1812 icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes)); 1838 icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes));
1813 EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes); 1839 EXPECT_EQ(GetSizesSmallAndLarge(), favicon_sizes);
1814 1840
1815 EXPECT_TRUE(GetOnlyFaviconBitmap(icon_mappings[0].icon_id, &favicon_bitmap)); 1841 EXPECT_TRUE(GetOnlyFaviconBitmap(icon_mappings[0].icon_id, &favicon_bitmap));
1816 EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmap.bitmap_data)); 1842 EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmap.bitmap_data));
1817 EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size); 1843 EXPECT_EQ(kSmallSize, favicon_bitmap.pixel_size);
1818 1844
1819 // 2) Merge favicon for the same icon URL, but a pixel size for which there is 1845 // 3) Merge favicon for the same icon URL, but a pixel size for which there is
1820 // no favicon bitmap. 1846 // no favicon bitmap.
1821 data[0] = 'c'; 1847 data[0] = 'c';
1822 bitmap_data = new base::RefCountedBytes(data); 1848 bitmap_data = new base::RefCountedBytes(data);
1823 backend_->MergeFavicon(page_url, icon_url1, FAVICON, bitmap_data, kTinySize); 1849 backend_->MergeFavicon(page_url, icon_url1, FAVICON, bitmap_data, kTinySize);
1824 1850
1825 // A new favicon bitmap should be created and favicon sizes should be set to 1851 // A new favicon bitmap should be created and favicon sizes should be set to
1826 // the default. 1852 // the default.
1827 icon_mappings.clear(); 1853 icon_mappings.clear();
1828 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, 1854 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url,
1829 &icon_mappings)); 1855 &icon_mappings));
1830 EXPECT_EQ(1u, icon_mappings.size()); 1856 EXPECT_EQ(1u, icon_mappings.size());
1831 EXPECT_EQ(icon_url1, icon_mappings[0].icon_url); 1857 EXPECT_EQ(icon_url1, icon_mappings[0].icon_url);
1832 1858
1833 favicon_sizes.clear(); 1859 favicon_sizes.clear();
1834 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader( 1860 EXPECT_TRUE(backend_->thumbnail_db_->GetFaviconHeader(
1835 icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes)); 1861 icon_mappings[0].icon_id, NULL, NULL, &favicon_sizes));
1836 EXPECT_EQ(GetDefaultFaviconSizes(), favicon_sizes); 1862 EXPECT_EQ(GetDefaultFaviconSizes(), favicon_sizes);
1837 1863
1838 std::vector<FaviconBitmap> favicon_bitmaps; 1864 std::vector<FaviconBitmap> favicon_bitmaps;
1839 EXPECT_TRUE(GetSortedFaviconBitmaps(icon_mappings[0].icon_id, 1865 EXPECT_TRUE(GetSortedFaviconBitmaps(icon_mappings[0].icon_id,
1840 &favicon_bitmaps)); 1866 &favicon_bitmaps));
1841 EXPECT_TRUE(BitmapDataEqual('c', favicon_bitmaps[0].bitmap_data)); 1867 EXPECT_TRUE(BitmapDataEqual('c', favicon_bitmaps[0].bitmap_data));
1842 EXPECT_EQ(kTinySize, favicon_bitmaps[0].pixel_size); 1868 EXPECT_EQ(kTinySize, favicon_bitmaps[0].pixel_size);
1843 EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmaps[1].bitmap_data)); 1869 EXPECT_TRUE(BitmapDataEqual('b', favicon_bitmaps[1].bitmap_data));
1844 EXPECT_EQ(kSmallSize, favicon_bitmaps[1].pixel_size); 1870 EXPECT_EQ(kSmallSize, favicon_bitmaps[1].pixel_size);
1845 1871
1846 // 3) Merge favicon for an icon URL different from the icon URLs already 1872 // 4) Merge favicon for an icon URL different from the icon URLs already
1847 // mapped to page URL. 1873 // mapped to page URL.
1848 data[0] = 'd'; 1874 data[0] = 'd';
1849 bitmap_data = new base::RefCountedBytes(data); 1875 bitmap_data = new base::RefCountedBytes(data);
1850 backend_->MergeFavicon(page_url, icon_url2, FAVICON, bitmap_data, kSmallSize); 1876 backend_->MergeFavicon(page_url, icon_url2, FAVICON, bitmap_data, kSmallSize);
1851 1877
1852 // The existing favicon bitmaps should be copied over to the newly created 1878 // 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|. 1879 // favicon at |icon_url2|. |page_url| should solely be mapped to |icon_url2|.
1854 icon_mappings.clear(); 1880 icon_mappings.clear();
1855 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url, 1881 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(page_url,
1856 &icon_mappings)); 1882 &icon_mappings));
(...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after
2683 backend_->GetFirstRecordedTimeForTest()); 2709 backend_->GetFirstRecordedTimeForTest());
2684 2710
2685 EXPECT_FALSE(backend_->GetURL(args[0].url, &row)); 2711 EXPECT_FALSE(backend_->GetURL(args[0].url, &row));
2686 EXPECT_TRUE(backend_->GetURL(args[1].url, &row)); 2712 EXPECT_TRUE(backend_->GetURL(args[1].url, &row));
2687 EXPECT_FALSE(backend_->GetURL(args[2].url, &row)); 2713 EXPECT_FALSE(backend_->GetURL(args[2].url, &row));
2688 EXPECT_TRUE(backend_->GetURL(args[3].url, &row)); 2714 EXPECT_TRUE(backend_->GetURL(args[3].url, &row));
2689 EXPECT_FALSE(backend_->GetURL(args[4].url, &row)); 2715 EXPECT_FALSE(backend_->GetURL(args[4].url, &row));
2690 } 2716 }
2691 2717
2692 } // namespace history 2718 } // namespace history
OLDNEW
« no previous file with comments | « chrome/browser/history/history_backend.cc ('k') | chrome/browser/history/thumbnail_database.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698