Index: chrome/browser/history/top_sites_impl_unittest.cc |
diff --git a/chrome/browser/history/top_sites_impl_unittest.cc b/chrome/browser/history/top_sites_impl_unittest.cc |
index a3dff478191fe569199b28a4b6bf6744e0051354..dac6efe6a0cae335586484b84d625123ada25938 100644 |
--- a/chrome/browser/history/top_sites_impl_unittest.cc |
+++ b/chrome/browser/history/top_sites_impl_unittest.cc |
@@ -296,6 +296,10 @@ class TopSitesImplTest : public HistoryUnitTestBase { |
top_sites()->SetTopSites(new_top_sites); |
} |
+ bool AddForcedURL(const GURL& url, base::Time time) { |
+ return top_sites()->AddForcedURL(url, time); |
+ } |
+ |
void StartQueryForMostVisited() { |
top_sites()->StartQueryForMostVisited(); |
} |
@@ -1248,74 +1252,49 @@ TEST_F(TopSitesImplTest, AddPrepopulatedPages) { |
// Ensure calling SetTopSites with forced sites already in the DB works. |
// This test both eviction and |
TEST_F(TopSitesImplTest, SetForcedTopSites) { |
- |
- const double old_last_forced_time[] = { |
- 1000, |
- 4000, |
- 7000, |
- 10000, |
- 11000, |
- 12000, |
- 13000, |
- 18000, |
- 21000 |
- }; |
- size_t num_old_forced = arraysize(old_last_forced_time); |
- |
- const double new_last_forced_time[] = { |
- 2000, |
- 3000, |
- 5000, |
- 6000, |
- 8000, |
- 9000, |
- 14000, |
- 15000, |
- 16000, |
- 17000, |
- 19000, |
- 20000, |
- 22000 |
- }; |
- size_t num_new_forced = arraysize(new_last_forced_time); |
- |
- const size_t kNumNonForcedURLs = 20; // Maximum number of non-forced URLs. |
- |
+ // Create forced elements in old URL list. |
MostVisitedURLList old_url_list; |
+ AppendForcedMostVisitedURL(&old_url_list, GURL("http://oldforced/0"), 1000); |
+ AppendForcedMostVisitedURL(&old_url_list, GURL("http://oldforced/1"), 4000); |
+ AppendForcedMostVisitedURL(&old_url_list, GURL("http://oldforced/2"), 7000); |
+ AppendForcedMostVisitedURL(&old_url_list, GURL("http://oldforced/3"), 10000); |
+ AppendForcedMostVisitedURL(&old_url_list, GURL("http://oldforced/4"), 11000); |
+ AppendForcedMostVisitedURL(&old_url_list, GURL("http://oldforced/5"), 12000); |
+ AppendForcedMostVisitedURL(&old_url_list, GURL("http://oldforced/6"), 13000); |
+ AppendForcedMostVisitedURL(&old_url_list, GURL("http://oldforced/7"), 18000); |
+ AppendForcedMostVisitedURL(&old_url_list, GURL("http://oldforced/8"), 21000); |
+ const size_t kNumOldForcedURLs = 9; |
+ |
+ // Create forced elements in new URL list. |
MostVisitedURLList new_url_list; |
- |
- old_url_list.resize(num_old_forced + kNumNonForcedURLs); |
- new_url_list.resize(num_new_forced + kNumNonForcedURLs); |
- |
- // Setup a number of forced and non-forced URLs. |
- for (size_t i = 0; i < num_old_forced; ++i) { |
- std::ostringstream url; |
- url << "http://oldforced/" << i; |
- old_url_list[i].url = GURL(url.str()); |
- old_url_list[i].last_forced_time = |
- base::Time::FromJsTime(old_last_forced_time[i]); |
- } |
- for (size_t i = num_old_forced; i < old_url_list.size(); ++i) { |
- std::ostringstream url; |
- url << "http://oldnonforced/" << (i - num_old_forced); |
- old_url_list[i].url = GURL(url.str()); |
- } |
- for (size_t i = 0; i < num_new_forced; ++i) { |
- std::ostringstream url; |
- url << "http://newforced/" << i; |
- new_url_list[i].url = GURL(url.str()); |
- new_url_list[i].last_forced_time = |
- base::Time::FromJsTime(new_last_forced_time[i]); |
- } |
- for (size_t i = num_new_forced; i < new_url_list.size(); ++i) { |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://newforced/0"), 2000); |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://newforced/1"), 3000); |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://newforced/2"), 5000); |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://newforced/3"), 6000); |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://newforced/4"), 8000); |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://newforced/5"), 9000); |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://newforced/6"), 14000); |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://newforced/7"), 15000); |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://newforced/8"), 16000); |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://newforced/9"), 17000); |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://newforced/10"), 19000); |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://newforced/11"), 20000); |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://newforced/12"), 22000); |
+ |
+ // Setup a number non-forced URLs in both old and new list. |
+ const size_t kNumNonForcedURLs = 20; // Maximum number of non-forced URLs. |
+ for (size_t i = 0; i < kNumNonForcedURLs; ++i) { |
std::ostringstream url; |
- url << "http://newnonforced/" << (i - num_new_forced); |
- new_url_list[i].url = GURL(url.str()); |
+ url << "http://oldnonforced/" << i; |
+ AppendMostVisitedURL(&old_url_list, GURL(url.str())); |
+ url.str(""); |
+ url << "http://newnonforced/" << i; |
+ AppendMostVisitedURL(&new_url_list, GURL(url.str())); |
} |
// Set the initial list of URLs. |
SetTopSites(old_url_list); |
- EXPECT_EQ(num_old_forced + kNumNonForcedURLs, last_num_urls_changed()); |
+ EXPECT_EQ(kNumOldForcedURLs + kNumNonForcedURLs, last_num_urls_changed()); |
TopSitesQuerier querier; |
// Query only non-forced URLs first. |
@@ -1327,11 +1306,12 @@ TEST_F(TopSitesImplTest, SetForcedTopSites) { |
// Query all URLs. |
querier.QueryAllTopSites(top_sites(), false, true); |
- EXPECT_EQ(num_old_forced + kNumNonForcedURLs, querier.urls().size()); |
+ EXPECT_EQ(kNumOldForcedURLs + kNumNonForcedURLs, querier.urls().size()); |
// Check first URLs. |
EXPECT_EQ("http://oldforced/0", querier.urls()[0].url.spec()); |
- EXPECT_EQ("http://oldnonforced/0", querier.urls()[num_old_forced].url.spec()); |
+ EXPECT_EQ("http://oldnonforced/0", |
+ querier.urls()[kNumOldForcedURLs].url.spec()); |
// Set the new list of URLs. |
SetTopSites(new_url_list); |
@@ -1344,65 +1324,77 @@ TEST_F(TopSitesImplTest, SetForcedTopSites) { |
// Check forced URLs. They follow the order of timestamps above, smaller |
// timestamps since they were evicted. |
- EXPECT_EQ("http://newforced/1", querier.urls()[0].url.spec()); // 3000 |
- EXPECT_EQ("http://oldforced/1", querier.urls()[1].url.spec()); // 4000 |
- EXPECT_EQ("http://newforced/2", querier.urls()[2].url.spec()); // 5000 |
- EXPECT_EQ("http://newforced/3", querier.urls()[3].url.spec()); // 6000 |
- EXPECT_EQ("http://oldforced/2", querier.urls()[4].url.spec()); // 7000 |
- EXPECT_EQ("http://newforced/4", querier.urls()[5].url.spec()); // 8000 |
- EXPECT_EQ("http://newforced/5", querier.urls()[6].url.spec()); // 9000 |
- EXPECT_EQ("http://oldforced/3", querier.urls()[7].url.spec()); // 10000 |
- EXPECT_EQ("http://oldforced/4", querier.urls()[8].url.spec()); // 11000 |
- EXPECT_EQ("http://oldforced/5", querier.urls()[9].url.spec()); // 12000 |
- EXPECT_EQ("http://oldforced/6", querier.urls()[10].url.spec()); // 13000 |
- EXPECT_EQ("http://newforced/6", querier.urls()[11].url.spec()); // 14000 |
- EXPECT_EQ("http://newforced/7", querier.urls()[12].url.spec()); // 15000 |
- EXPECT_EQ("http://newforced/8", querier.urls()[13].url.spec()); // 16000 |
- EXPECT_EQ("http://newforced/9", querier.urls()[14].url.spec()); // 17000 |
- EXPECT_EQ("http://oldforced/7", querier.urls()[15].url.spec()); // 18000 |
- EXPECT_EQ("http://newforced/10", querier.urls()[16].url.spec()); // 19000 |
- EXPECT_EQ("http://newforced/11", querier.urls()[17].url.spec()); // 20000 |
- EXPECT_EQ("http://oldforced/8", querier.urls()[18].url.spec()); // 21000 |
- EXPECT_EQ("http://newforced/12", querier.urls()[19].url.spec()); // 22000 |
+ EXPECT_EQ("http://newforced/1", querier.urls()[0].url.spec()); |
+ EXPECT_EQ(3000, querier.urls()[0].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://oldforced/1", querier.urls()[1].url.spec()); |
+ EXPECT_EQ(4000, querier.urls()[1].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://newforced/2", querier.urls()[2].url.spec()); |
+ EXPECT_EQ(5000, querier.urls()[2].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://newforced/3", querier.urls()[3].url.spec()); |
+ EXPECT_EQ(6000, querier.urls()[3].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://oldforced/2", querier.urls()[4].url.spec()); |
+ EXPECT_EQ(7000, querier.urls()[4].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://newforced/4", querier.urls()[5].url.spec()); |
+ EXPECT_EQ(8000, querier.urls()[5].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://newforced/5", querier.urls()[6].url.spec()); |
+ EXPECT_EQ(9000, querier.urls()[6].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://oldforced/3", querier.urls()[7].url.spec()); |
+ EXPECT_EQ(10000, querier.urls()[7].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://oldforced/4", querier.urls()[8].url.spec()); |
+ EXPECT_EQ(11000, querier.urls()[8].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://oldforced/5", querier.urls()[9].url.spec()); |
+ EXPECT_EQ(12000, querier.urls()[9].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://oldforced/6", querier.urls()[10].url.spec()); |
+ EXPECT_EQ(13000, querier.urls()[10].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://newforced/6", querier.urls()[11].url.spec()); |
+ EXPECT_EQ(14000, querier.urls()[11].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://newforced/7", querier.urls()[12].url.spec()); |
+ EXPECT_EQ(15000, querier.urls()[12].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://newforced/8", querier.urls()[13].url.spec()); |
+ EXPECT_EQ(16000, querier.urls()[13].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://newforced/9", querier.urls()[14].url.spec()); |
+ EXPECT_EQ(17000, querier.urls()[14].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://oldforced/7", querier.urls()[15].url.spec()); |
+ EXPECT_EQ(18000, querier.urls()[15].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://newforced/10", querier.urls()[16].url.spec()); |
+ EXPECT_EQ(19000, querier.urls()[16].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://newforced/11", querier.urls()[17].url.spec()); |
+ EXPECT_EQ(20000, querier.urls()[17].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://oldforced/8", querier.urls()[18].url.spec()); |
+ EXPECT_EQ(21000, querier.urls()[18].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://newforced/12", querier.urls()[19].url.spec()); |
+ EXPECT_EQ(22000, querier.urls()[19].last_forced_time.ToJsTime()); |
// Check first and last non-forced URLs. |
EXPECT_EQ("http://newnonforced/0", querier.urls()[20].url.spec()); |
+ EXPECT_TRUE(querier.urls()[20].last_forced_time.is_null()); |
EXPECT_EQ("http://newnonforced/19", querier.urls()[39].url.spec()); |
+ EXPECT_TRUE(querier.urls()[39].last_forced_time.is_null()); |
} |
TEST_F(TopSitesImplTest, SetForcedTopSitesWithCollisions) { |
- MostVisitedURLList old_url_list; |
- MostVisitedURLList new_url_list; |
- old_url_list.resize(5); |
- old_url_list[0].url = GURL("http://url/0"); |
- old_url_list[0].last_forced_time = base::Time::FromJsTime(1000); |
- old_url_list[1].url = GURL("http://collision/0"); // Evicted |
- old_url_list[1].last_forced_time = base::Time::FromJsTime(4000); |
- old_url_list[2].url = GURL("http://collision/1"); // Evicted |
- old_url_list[2].last_forced_time = base::Time::FromJsTime(6000); |
- old_url_list[3].url = GURL("http://collision/2"); // Evicted |
- old_url_list[3].last_forced_time = base::Time::FromJsTime(7000); |
+ // Setup an old URL list in order to generate some collisions. |
+ MostVisitedURLList old_url_list; |
+ AppendForcedMostVisitedURL(&old_url_list, GURL("http://url/0"), 1000); |
+ // The following three will be evicted. |
+ AppendForcedMostVisitedURL(&old_url_list, GURL("http://collision/0"), 4000); |
+ AppendForcedMostVisitedURL(&old_url_list, GURL("http://collision/1"), 6000); |
+ AppendForcedMostVisitedURL(&old_url_list, GURL("http://collision/2"), 7000); |
// The following is evicted since all non-forced URLs are, therefore it |
// doesn't cause a collision. |
- old_url_list[4].url = GURL("http://noncollision/0"); |
- |
- new_url_list.resize(6); |
- new_url_list[0].url = GURL("http://collision/1"); |
- new_url_list[0].last_forced_time = base::Time::FromJsTime(2000); |
- new_url_list[1].url = GURL("http://url/2"); |
- new_url_list[1].last_forced_time = base::Time::FromJsTime(3000); |
- new_url_list[2].url = GURL("http://collision/0"); |
- new_url_list[2].last_forced_time = base::Time::FromJsTime(5000); |
- new_url_list[3].url = GURL("http://noncollision/0"); |
- new_url_list[3].last_forced_time = base::Time::FromJsTime(9000); |
- new_url_list[4].url = GURL("http://collision/2"); |
- new_url_list[5].url = GURL("http://url/3"); |
- |
- // Set the initial list of URLs. |
+ AppendMostVisitedURL(&old_url_list, GURL("http://noncollision/0")); |
SetTopSites(old_url_list); |
- // Set the new list of URLs. |
+ // Setup a new URL list that will cause collisions. |
+ MostVisitedURLList new_url_list; |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://collision/1"), 2000); |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://url/2"), 3000); |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://collision/0"), 5000); |
+ AppendForcedMostVisitedURL(&new_url_list, GURL("http://noncollision/0"), |
+ 9000); |
+ AppendMostVisitedURL(&new_url_list, GURL("http://collision/2")); |
+ AppendMostVisitedURL(&new_url_list, GURL("http://url/3")); |
SetTopSites(new_url_list); |
// Query all URLs. |
@@ -1428,19 +1420,15 @@ TEST_F(TopSitesImplTest, SetForcedTopSitesWithCollisions) { |
ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 7)); |
} |
- |
TEST_F(TopSitesImplTest, SetTopSitesIdentical) { |
- MostVisitedURLList url_list; |
- url_list.resize(3); |
- url_list[0].url = GURL("http://url/0"); |
- url_list[0].last_forced_time = base::Time::FromJsTime(1000); |
- url_list[1].url = GURL("http://url/1"); // Evicted |
- url_list[2].url = GURL("http://url/2"); // Evicted |
- |
// Set the initial list of URLs. |
+ MostVisitedURLList url_list; |
+ AppendForcedMostVisitedURL(&url_list, GURL("http://url/0"), 1000); |
+ AppendMostVisitedURL(&url_list, GURL("http://url/1")); |
+ AppendMostVisitedURL(&url_list, GURL("http://url/2")); |
SetTopSites(url_list); |
- // Set the new list of URLs. |
+ // Set the new list of URLs to be exactly the same. |
SetTopSites(MostVisitedURLList(url_list)); |
// Query all URLs. |
@@ -1456,4 +1444,105 @@ TEST_F(TopSitesImplTest, SetTopSitesIdentical) { |
ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 3)); |
} |
+TEST_F(TopSitesImplTest, AddForcedURL) { |
+ // Set the initial list of URLs. |
+ MostVisitedURLList url_list; |
+ AppendForcedMostVisitedURL(&url_list, GURL("http://forced/0"), 2000); |
+ AppendForcedMostVisitedURL(&url_list, GURL("http://forced/1"), 4000); |
+ AppendMostVisitedURL(&url_list, GURL("http://nonforced/0")); |
+ AppendMostVisitedURL(&url_list, GURL("http://nonforced/1")); |
+ AppendMostVisitedURL(&url_list, GURL("http://nonforced/2")); |
+ SetTopSites(url_list); |
+ |
+ // Add forced sites here and there to exercise a couple of cases. |
+ EXPECT_TRUE(AddForcedURL(GURL("http://forced/2"), |
+ base::Time::FromJsTime(5000))); |
+ EXPECT_TRUE(AddForcedURL(GURL("http://forced/3"), |
+ base::Time::FromJsTime(1000))); |
+ EXPECT_TRUE(AddForcedURL(GURL("http://forced/4"), |
+ base::Time::FromJsTime(3000))); |
+ |
+ // Check URLs. |
+ TopSitesQuerier querier; |
+ querier.QueryAllTopSites(top_sites(), false, true); |
+ ASSERT_EQ(8u + GetPrepopulatePages().size(), querier.urls().size()); |
+ EXPECT_EQ("http://forced/3", querier.urls()[0].url.spec()); |
+ EXPECT_EQ(1000u, querier.urls()[0].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://forced/0", querier.urls()[1].url.spec()); |
+ EXPECT_EQ(2000u, querier.urls()[1].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://forced/4", querier.urls()[2].url.spec()); |
+ EXPECT_EQ(3000u, querier.urls()[2].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://forced/1", querier.urls()[3].url.spec()); |
+ EXPECT_EQ(4000u, querier.urls()[3].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://forced/2", querier.urls()[4].url.spec()); |
+ EXPECT_EQ(5000u, querier.urls()[4].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://nonforced/0", querier.urls()[5].url.spec()); |
+ EXPECT_TRUE(querier.urls()[5].last_forced_time.is_null()); |
+ EXPECT_EQ("http://nonforced/1", querier.urls()[6].url.spec()); |
+ EXPECT_TRUE(querier.urls()[6].last_forced_time.is_null()); |
+ EXPECT_EQ("http://nonforced/2", querier.urls()[7].url.spec()); |
+ EXPECT_TRUE(querier.urls()[7].last_forced_time.is_null()); |
+ ASSERT_NO_FATAL_FAILURE(ContainsPrepopulatePages(querier, 8)); |
+ |
+ // Add some collisions with forced and non-forced. Non-forced URLs are never |
+ // expected to move. |
+ EXPECT_TRUE(AddForcedURL(GURL("http://forced/3"), |
+ base::Time::FromJsTime(4000))); |
+ EXPECT_TRUE(AddForcedURL(GURL("http://forced/1"), |
+ base::Time::FromJsTime(1000))); |
+ EXPECT_FALSE(AddForcedURL(GURL("http://nonforced/0"), |
+ base::Time::FromJsTime(6000))); |
+ |
+ // Check relevant URLs. |
+ querier.QueryAllTopSites(top_sites(), false, true); |
+ ASSERT_EQ(8u + GetPrepopulatePages().size(), querier.urls().size()); |
+ EXPECT_EQ("http://forced/1", querier.urls()[0].url.spec()); |
+ EXPECT_EQ(1000u, querier.urls()[0].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://forced/3", querier.urls()[3].url.spec()); |
+ EXPECT_EQ(4000u, querier.urls()[3].last_forced_time.ToJsTime()); |
+ EXPECT_EQ("http://nonforced/0", querier.urls()[5].url.spec()); |
+ EXPECT_TRUE(querier.urls()[5].last_forced_time.is_null()); |
+ |
+ // Add a timestamp collision and make sure things don't break. |
+ EXPECT_TRUE(AddForcedURL(GURL("http://forced/5"), |
+ base::Time::FromJsTime(4000))); |
+ querier.QueryAllTopSites(top_sites(), false, true); |
+ ASSERT_EQ(9u + GetPrepopulatePages().size(), querier.urls().size()); |
+ EXPECT_EQ(4000u, querier.urls()[3].last_forced_time.ToJsTime()); |
+ EXPECT_EQ(4000u, querier.urls()[4].last_forced_time.ToJsTime()); |
+ // We don't care which order they get sorted in. |
+ if (querier.urls()[3].url.spec() == "http://forced/3") { |
+ EXPECT_EQ("http://forced/3", querier.urls()[3].url.spec()); |
+ EXPECT_EQ("http://forced/5", querier.urls()[4].url.spec()); |
+ } else { |
+ EXPECT_EQ("http://forced/5", querier.urls()[3].url.spec()); |
+ EXPECT_EQ("http://forced/3", querier.urls()[4].url.spec()); |
+ } |
+ |
+ // Make sure the thumbnail is not lost when the timestamp is updated. |
+ gfx::Image red_thumbnail(CreateBitmap(SK_ColorRED)); |
+ ASSERT_TRUE(top_sites()->SetPageThumbnail( |
+ GURL("http://forced/5"), red_thumbnail, ThumbnailScore())); |
+ |
+ // Get the original thumbnail for later comparison. Some compression can |
+ // happen in |top_sites| and we don't want to depend on that. |
+ SkBitmap orig_thumbnail = GetThumbnail(GURL("http://forced/5")); |
+ |
+ EXPECT_TRUE(AddForcedURL(GURL("http://forced/5"), |
+ base::Time::FromJsTime(6000))); |
+ |
+ // Ensure the thumbnail is still there even if the timestamp changed. |
+ querier.QueryAllTopSites(top_sites(), false, true); |
+ EXPECT_EQ("http://forced/5", querier.urls()[5].url.spec()); |
+ EXPECT_EQ(6000u, querier.urls()[5].last_forced_time.ToJsTime()); |
+ SkBitmap thumbnail = GetThumbnail(GURL("http://forced/5")); |
+ ASSERT_EQ(orig_thumbnail.getSize(), thumbnail.getSize()); |
+ orig_thumbnail.lockPixels(); |
+ thumbnail.lockPixels(); |
+ EXPECT_EQ(0, memcmp(orig_thumbnail.getPixels(), thumbnail.getPixels(), |
+ orig_thumbnail.getSize())); |
+ thumbnail.unlockPixels(); |
+ orig_thumbnail.unlockPixels(); |
+} |
+ |
} // namespace history |