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

Unified Diff: chrome/browser/history/top_sites_impl_unittest.cc

Issue 59903010: Ensure using chrome://thumb2/... adds the URL as a forced URL in TopSites so that a thumbnail is ca… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Take 2. Created 7 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/history/top_sites_impl.cc ('k') | chrome/browser/thumbnails/thumbnail_service.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « chrome/browser/history/top_sites_impl.cc ('k') | chrome/browser/thumbnails/thumbnail_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698