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

Unified Diff: components/history/core/browser/thumbnail_database_unittest.cc

Issue 2823093002: Make FaviconService::GetRawFaviconForPageURL() select the best candidate among all the icon types (Closed)
Patch Set: Merge branch 'icon_type0' into icon_type Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: components/history/core/browser/thumbnail_database_unittest.cc
diff --git a/components/history/core/browser/thumbnail_database_unittest.cc b/components/history/core/browser/thumbnail_database_unittest.cc
index cd1c83fafcc3d9e84992705ca98c55521be199e4..98f971150de75e12c7fa1dcae064e26a18a18b0b 100644
--- a/components/history/core/browser/thumbnail_database_unittest.cc
+++ b/components/history/core/browser/thumbnail_database_unittest.cc
@@ -41,10 +41,11 @@ const GURL kPageUrl3 = GURL("http://www.google.com/");
const GURL kPageUrl4 = GURL("http://www.google.com/blank.html");
const GURL kPageUrl5 = GURL("http://www.bing.com/");
-const GURL kIconUrl1 = GURL("http://www.google.com/favicon.ico");
-const GURL kIconUrl2 = GURL("http://www.yahoo.com/favicon.ico");
-const GURL kIconUrl3 = GURL("http://www.google.com/touch.ico");
-const GURL kIconUrl5 = GURL("http://www.bing.com/favicon.ico");
+const GURL kIconUrl1 = GURL("http://www.bing.com/favicon.ico");
+const GURL kIconUrl2 = GURL("http://www.duckduckgo.com/favicon.ico");
+const GURL kIconUrl3 = GURL("http://www.google.com/favicon.ico");
+const GURL kIconUrl4 = GURL("http://www.google.com/touch.ico");
+const GURL kIconUrl5 = GURL("http://www.yahoo.com/favicon.ico");
const gfx::Size kSmallSize = gfx::Size(16, 16);
const gfx::Size kLargeSize = gfx::Size(32, 32);
@@ -76,6 +77,19 @@ void VerifyTablesAndColumns(sql::Connection* db) {
EXPECT_EQ(3u, sql::test::CountTableColumns(db, "icon_mapping"));
}
+// Adds a favicon at |icon_url| with |icon_type| with default bitmap data and
+// maps |page_url| to |icon_url|.
+void AddFaviconAndMapSimple(ThumbnailDatabase* db,
mastiz 2017/04/20 08:55:59 Nit: s/Map/Mapping/? 'Map' can otherwise interpre
pkotwicz 2017/04/30 03:49:56 Done.
+ const GURL& page_url,
+ const GURL& icon_url,
+ favicon_base::IconType icon_type) {
+ scoped_refptr<base::RefCountedStaticMemory> data(
+ new base::RefCountedStaticMemory(kBlob1, sizeof(kBlob1)));
+ favicon_base::FaviconID favicon_id =
+ db->AddFavicon(icon_url, icon_type, data, base::Time::Now(), gfx::Size());
+ db->AddIconMapping(page_url, favicon_id);
+}
+
void VerifyDatabaseEmpty(sql::Connection* db) {
size_t rows = 0;
EXPECT_TRUE(sql::test::CountTableRows(db, "favicons", &rows));
@@ -147,6 +161,14 @@ WARN_UNUSED_RESULT bool CheckPageHasIcon(
return true;
}
+bool CompareIconMappingIconUrl(const IconMapping& a, const IconMapping& b) {
+ return a.icon_url < b.icon_url;
+}
+
+void SortMappingsByIconUrl(std::vector<IconMapping>* mappings) {
+ std::sort(mappings->begin(), mappings->end(), &CompareIconMappingIconUrl);
+}
+
} // namespace
class ThumbnailDatabaseTest : public testing::Test {
@@ -490,61 +512,31 @@ TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLForReturnOrder) {
EXPECT_EQ(icon_url, icon_mappings.front().icon_url);
}
-// Test result of GetIconMappingsForPageURL when an icon type is passed in.
-TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLWithIconType) {
+// Test that when multiple icon types are passed to GetIconMappingsForPageURL()
+// that the results are filtered according to the passed in types.
+TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLWithIconTypes) {
ThumbnailDatabase db(NULL);
ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
db.BeginTransaction();
- GURL url("http://google.com");
- std::vector<unsigned char> data(kBlob1, kBlob1 + sizeof(kBlob1));
- scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
- base::Time time = base::Time::Now();
-
- favicon_base::FaviconID id1 =
- db.AddFavicon(url, favicon_base::FAVICON, favicon, time, gfx::Size());
- EXPECT_NE(0, db.AddIconMapping(url, id1));
-
- favicon_base::FaviconID id2 =
- db.AddFavicon(url, favicon_base::TOUCH_ICON, favicon, time, gfx::Size());
- EXPECT_NE(0, db.AddIconMapping(url, id2));
-
- favicon_base::FaviconID id3 =
- db.AddFavicon(url, favicon_base::TOUCH_ICON, favicon, time, gfx::Size());
- EXPECT_NE(0, db.AddIconMapping(url, id3));
+ GURL page_url("http://www.google.com");
+ AddFaviconAndMapSimple(&db, page_url, kIconUrl1, favicon_base::FAVICON);
+ AddFaviconAndMapSimple(&db, page_url, kIconUrl2, favicon_base::TOUCH_ICON);
+ AddFaviconAndMapSimple(&db, page_url, kIconUrl3, favicon_base::TOUCH_ICON);
+ AddFaviconAndMapSimple(&db, page_url, kIconUrl4,
+ favicon_base::TOUCH_PRECOMPOSED_ICON);
- // Only the mappings for favicons of type TOUCH_ICON should be returned as
- // TOUCH_ICON is a larger icon type than FAVICON.
+ // Only the mappings for FAVICON and TOUCH_ICON should be returned.
std::vector<IconMapping> icon_mappings;
EXPECT_TRUE(db.GetIconMappingsForPageURL(
- url,
- favicon_base::FAVICON | favicon_base::TOUCH_ICON |
- favicon_base::TOUCH_PRECOMPOSED_ICON,
+ page_url, favicon_base::FAVICON | favicon_base::TOUCH_ICON,
&icon_mappings));
+ SortMappingsByIconUrl(&icon_mappings);
- EXPECT_EQ(2u, icon_mappings.size());
- if (id2 == icon_mappings[0].icon_id) {
- EXPECT_EQ(id3, icon_mappings[1].icon_id);
- } else {
- EXPECT_EQ(id3, icon_mappings[0].icon_id);
- EXPECT_EQ(id2, icon_mappings[1].icon_id);
- }
-
- icon_mappings.clear();
- EXPECT_TRUE(db.GetIconMappingsForPageURL(
- url, favicon_base::TOUCH_ICON, &icon_mappings));
- if (id2 == icon_mappings[0].icon_id) {
- EXPECT_EQ(id3, icon_mappings[1].icon_id);
- } else {
- EXPECT_EQ(id3, icon_mappings[0].icon_id);
- EXPECT_EQ(id2, icon_mappings[1].icon_id);
- }
-
- icon_mappings.clear();
- EXPECT_TRUE(
- db.GetIconMappingsForPageURL(url, favicon_base::FAVICON, &icon_mappings));
- EXPECT_EQ(1u, icon_mappings.size());
- EXPECT_EQ(id1, icon_mappings[0].icon_id);
+ EXPECT_EQ(3u, icon_mappings.size());
+ EXPECT_EQ(kIconUrl1, icon_mappings[0].icon_url);
+ EXPECT_EQ(kIconUrl2, icon_mappings[1].icon_url);
+ EXPECT_EQ(kIconUrl3, icon_mappings[2].icon_url);
mastiz 2017/04/20 08:55:59 A more natural way to do this would be to get rid
pkotwicz 2017/04/30 03:49:56 I chose to not add a GMock dependency to this test
}
TEST_F(ThumbnailDatabaseTest, HasMappingFor) {
@@ -646,34 +638,14 @@ TEST_F(ThumbnailDatabaseTest, Version7) {
ASSERT_TRUE(db.get() != NULL);
VerifyTablesAndColumns(&db->db_);
- EXPECT_TRUE(CheckPageHasIcon(db.get(),
- kPageUrl1,
- favicon_base::FAVICON,
- kIconUrl1,
- kLargeSize,
- sizeof(kBlob1),
- kBlob1));
- EXPECT_TRUE(CheckPageHasIcon(db.get(),
- kPageUrl2,
- favicon_base::FAVICON,
- kIconUrl2,
- kLargeSize,
- sizeof(kBlob2),
- kBlob2));
- EXPECT_TRUE(CheckPageHasIcon(db.get(),
- kPageUrl3,
- favicon_base::FAVICON,
- kIconUrl1,
- kLargeSize,
- sizeof(kBlob1),
- kBlob1));
- EXPECT_TRUE(CheckPageHasIcon(db.get(),
- kPageUrl3,
- favicon_base::TOUCH_ICON,
- kIconUrl3,
- kLargeSize,
- sizeof(kBlob2),
- kBlob2));
+ EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl1, favicon_base::FAVICON,
+ kIconUrl3, kLargeSize, sizeof(kBlob1), kBlob1));
+ EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl2, favicon_base::FAVICON,
+ kIconUrl5, kLargeSize, sizeof(kBlob2), kBlob2));
+ EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl3, favicon_base::FAVICON,
+ kIconUrl3, kLargeSize, sizeof(kBlob1), kBlob1));
+ EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl3, favicon_base::TOUCH_ICON,
+ kIconUrl4, kLargeSize, sizeof(kBlob2), kBlob2));
}
// Test loading version 8 database.
@@ -682,34 +654,14 @@ TEST_F(ThumbnailDatabaseTest, Version8) {
ASSERT_TRUE(db.get() != NULL);
VerifyTablesAndColumns(&db->db_);
- EXPECT_TRUE(CheckPageHasIcon(db.get(),
- kPageUrl1,
- favicon_base::FAVICON,
- kIconUrl1,
- kLargeSize,
- sizeof(kBlob1),
- kBlob1));
- EXPECT_TRUE(CheckPageHasIcon(db.get(),
- kPageUrl2,
- favicon_base::FAVICON,
- kIconUrl2,
- kLargeSize,
- sizeof(kBlob2),
- kBlob2));
- EXPECT_TRUE(CheckPageHasIcon(db.get(),
- kPageUrl3,
- favicon_base::FAVICON,
- kIconUrl1,
- kLargeSize,
- sizeof(kBlob1),
- kBlob1));
- EXPECT_TRUE(CheckPageHasIcon(db.get(),
- kPageUrl3,
- favicon_base::TOUCH_ICON,
- kIconUrl3,
- kLargeSize,
- sizeof(kBlob2),
- kBlob2));
+ EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl1, favicon_base::FAVICON,
+ kIconUrl3, kLargeSize, sizeof(kBlob1), kBlob1));
+ EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl2, favicon_base::FAVICON,
+ kIconUrl5, kLargeSize, sizeof(kBlob2), kBlob2));
+ EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl3, favicon_base::FAVICON,
+ kIconUrl3, kLargeSize, sizeof(kBlob1), kBlob1));
+ EXPECT_TRUE(CheckPageHasIcon(db.get(), kPageUrl3, favicon_base::TOUCH_ICON,
+ kIconUrl4, kLargeSize, sizeof(kBlob2), kBlob2));
}
TEST_F(ThumbnailDatabaseTest, Recovery) {
@@ -736,19 +688,11 @@ TEST_F(ThumbnailDatabaseTest, Recovery) {
ThumbnailDatabase db(NULL);
ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
- EXPECT_TRUE(CheckPageHasIcon(&db,
- kPageUrl1,
- favicon_base::FAVICON,
- kIconUrl1,
- kLargeSize,
- sizeof(kBlob1),
+ EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1, favicon_base::FAVICON,
+ kIconUrl3, kLargeSize, sizeof(kBlob1),
kBlob1));
- EXPECT_TRUE(CheckPageHasIcon(&db,
- kPageUrl2,
- favicon_base::FAVICON,
- kIconUrl2,
- kLargeSize,
- sizeof(kBlob2),
+ EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl2, favicon_base::FAVICON,
+ kIconUrl5, kLargeSize, sizeof(kBlob2),
kBlob2));
}
@@ -807,12 +751,8 @@ TEST_F(ThumbnailDatabaseTest, Recovery) {
EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, NULL));
// Other data was retained by recovery.
- EXPECT_TRUE(CheckPageHasIcon(&db,
- kPageUrl1,
- favicon_base::FAVICON,
- kIconUrl1,
- kLargeSize,
- sizeof(kBlob1),
+ EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1, favicon_base::FAVICON,
+ kIconUrl3, kLargeSize, sizeof(kBlob1),
kBlob1));
}
@@ -837,12 +777,8 @@ TEST_F(ThumbnailDatabaseTest, Recovery) {
ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, NULL));
- EXPECT_TRUE(CheckPageHasIcon(&db,
- kPageUrl1,
- favicon_base::FAVICON,
- kIconUrl1,
- kLargeSize,
- sizeof(kBlob1),
+ EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1, favicon_base::FAVICON,
+ kIconUrl3, kLargeSize, sizeof(kBlob1),
kBlob1));
ASSERT_TRUE(expecter.SawExpectedErrors());
@@ -919,12 +855,8 @@ TEST_F(ThumbnailDatabaseTest, Recovery7) {
EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, NULL));
// Other data was retained by recovery.
- EXPECT_TRUE(CheckPageHasIcon(&db,
- kPageUrl1,
- favicon_base::FAVICON,
- kIconUrl1,
- kLargeSize,
- sizeof(kBlob1),
+ EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1, favicon_base::FAVICON,
+ kIconUrl3, kLargeSize, sizeof(kBlob1),
kBlob1));
}
@@ -949,12 +881,8 @@ TEST_F(ThumbnailDatabaseTest, Recovery7) {
ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
EXPECT_FALSE(db.GetIconMappingsForPageURL(kPageUrl2, NULL));
- EXPECT_TRUE(CheckPageHasIcon(&db,
- kPageUrl1,
- favicon_base::FAVICON,
- kIconUrl1,
- kLargeSize,
- sizeof(kBlob1),
+ EXPECT_TRUE(CheckPageHasIcon(&db, kPageUrl1, favicon_base::FAVICON,
+ kIconUrl3, kLargeSize, sizeof(kBlob1),
kBlob1));
ASSERT_TRUE(expecter.SawExpectedErrors());

Powered by Google App Engine
This is Rietveld 408576698