| 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 <vector> | 6 #include <vector> |
| 7 | 7 |
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 | 124 |
| 125 TEST_F(ThumbnailDatabaseTest, GetFaviconAfterMigrationToTopSites) { | 125 TEST_F(ThumbnailDatabaseTest, GetFaviconAfterMigrationToTopSites) { |
| 126 ThumbnailDatabase db; | 126 ThumbnailDatabase db; |
| 127 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 127 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
| 128 db.BeginTransaction(); | 128 db.BeginTransaction(); |
| 129 | 129 |
| 130 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 130 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
| 131 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 131 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
| 132 | 132 |
| 133 GURL url("http://google.com"); | 133 GURL url("http://google.com"); |
| 134 FaviconID icon_id = db.AddFavicon(url, FAVICON); | 134 FaviconID icon_id = db.AddFavicon(url, FAVICON, |
| 135 db.SetFaviconSizes(icon_id, GetFaviconSizesSmallAndLarge()); | 135 GetFaviconSizesSmallAndLarge()); |
| 136 base::Time time = base::Time::Now(); | 136 base::Time time = base::Time::Now(); |
| 137 FaviconBitmapID bitmap1_id = db.AddFaviconBitmap(icon_id, favicon, time, | 137 FaviconBitmapID bitmap1_id = db.AddFaviconBitmap(icon_id, favicon, time, |
| 138 kSmallSize); | 138 kSmallSize); |
| 139 FaviconBitmapID bitmap2_id = db.AddFaviconBitmap(icon_id, favicon, time, | 139 FaviconBitmapID bitmap2_id = db.AddFaviconBitmap(icon_id, favicon, time, |
| 140 kLargeSize); | 140 kLargeSize); |
| 141 EXPECT_TRUE(db.RenameAndDropThumbnails(file_name_, new_file_name_)); | 141 EXPECT_TRUE(db.RenameAndDropThumbnails(file_name_, new_file_name_)); |
| 142 EXPECT_TRUE(db.IsLatestVersion()); | 142 EXPECT_TRUE(db.IsLatestVersion()); |
| 143 | 143 |
| 144 GURL url_out; | 144 GURL url_out; |
| 145 IconType icon_type_out; | 145 IconType icon_type_out; |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 | 188 |
| 189 TEST_F(ThumbnailDatabaseTest, AddIconMapping) { | 189 TEST_F(ThumbnailDatabaseTest, AddIconMapping) { |
| 190 ThumbnailDatabase db; | 190 ThumbnailDatabase db; |
| 191 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 191 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
| 192 db.BeginTransaction(); | 192 db.BeginTransaction(); |
| 193 | 193 |
| 194 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 194 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
| 195 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 195 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
| 196 | 196 |
| 197 GURL url("http://google.com"); | 197 GURL url("http://google.com"); |
| 198 FaviconID id = db.AddFavicon(url, TOUCH_ICON); | 198 base::Time time = base::Time::Now(); |
| 199 FaviconID id = db.AddFavicon(url, TOUCH_ICON, GetDefaultFaviconSizes(), |
| 200 favicon, time, gfx::Size()); |
| 199 EXPECT_NE(0, id); | 201 EXPECT_NE(0, id); |
| 200 base::Time time = base::Time::Now(); | |
| 201 db.AddFaviconBitmap(id, favicon, time, gfx::Size()); | |
| 202 | 202 |
| 203 EXPECT_NE(0, db.AddIconMapping(url, id)); | 203 EXPECT_NE(0, db.AddIconMapping(url, id)); |
| 204 std::vector<IconMapping> icon_mappings; | 204 std::vector<IconMapping> icon_mappings; |
| 205 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mappings)); | 205 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mappings)); |
| 206 EXPECT_EQ(1u, icon_mappings.size()); | 206 EXPECT_EQ(1u, icon_mappings.size()); |
| 207 EXPECT_EQ(url, icon_mappings.front().page_url); | 207 EXPECT_EQ(url, icon_mappings.front().page_url); |
| 208 EXPECT_EQ(id, icon_mappings.front().icon_id); | 208 EXPECT_EQ(id, icon_mappings.front().icon_id); |
| 209 } | 209 } |
| 210 | 210 |
| 211 TEST_F(ThumbnailDatabaseTest, UpdateIconMapping) { | 211 TEST_F(ThumbnailDatabaseTest, UpdateIconMapping) { |
| 212 ThumbnailDatabase db; | 212 ThumbnailDatabase db; |
| 213 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 213 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
| 214 db.BeginTransaction(); | 214 db.BeginTransaction(); |
| 215 | 215 |
| 216 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | |
| 217 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | |
| 218 | |
| 219 GURL url("http://google.com"); | 216 GURL url("http://google.com"); |
| 220 FaviconID id = db.AddFavicon(url, TOUCH_ICON); | 217 FaviconID id = db.AddFavicon(url, TOUCH_ICON, GetDefaultFaviconSizes()); |
| 221 base::Time time = base::Time::Now(); | |
| 222 db.AddFaviconBitmap(id, favicon, time, gfx::Size()); | |
| 223 | 218 |
| 224 EXPECT_TRUE(0 < db.AddIconMapping(url, id)); | 219 EXPECT_TRUE(0 < db.AddIconMapping(url, id)); |
| 225 std::vector<IconMapping> icon_mapping; | 220 std::vector<IconMapping> icon_mapping; |
| 226 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); | 221 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); |
| 227 ASSERT_EQ(1u, icon_mapping.size()); | 222 ASSERT_EQ(1u, icon_mapping.size()); |
| 228 EXPECT_EQ(url, icon_mapping.front().page_url); | 223 EXPECT_EQ(url, icon_mapping.front().page_url); |
| 229 EXPECT_EQ(id, icon_mapping.front().icon_id); | 224 EXPECT_EQ(id, icon_mapping.front().icon_id); |
| 230 | 225 |
| 231 GURL url1("http://www.google.com/"); | 226 GURL url1("http://www.google.com/"); |
| 232 FaviconID new_id = db.AddFavicon(url1, TOUCH_ICON); | 227 FaviconID new_id = db.AddFavicon(url1, TOUCH_ICON, GetDefaultFaviconSizes()); |
| 233 EXPECT_TRUE(db.UpdateIconMapping(icon_mapping.front().mapping_id, new_id)); | 228 EXPECT_TRUE(db.UpdateIconMapping(icon_mapping.front().mapping_id, new_id)); |
| 234 | 229 |
| 235 icon_mapping.clear(); | 230 icon_mapping.clear(); |
| 236 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); | 231 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); |
| 237 ASSERT_EQ(1u, icon_mapping.size()); | 232 ASSERT_EQ(1u, icon_mapping.size()); |
| 238 EXPECT_EQ(url, icon_mapping.front().page_url); | 233 EXPECT_EQ(url, icon_mapping.front().page_url); |
| 239 EXPECT_EQ(new_id, icon_mapping.front().icon_id); | 234 EXPECT_EQ(new_id, icon_mapping.front().icon_id); |
| 240 EXPECT_NE(id, icon_mapping.front().icon_id); | 235 EXPECT_NE(id, icon_mapping.front().icon_id); |
| 241 } | 236 } |
| 242 | 237 |
| 243 TEST_F(ThumbnailDatabaseTest, DeleteIconMappings) { | 238 TEST_F(ThumbnailDatabaseTest, DeleteIconMappings) { |
| 244 ThumbnailDatabase db; | 239 ThumbnailDatabase db; |
| 245 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 240 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
| 246 db.BeginTransaction(); | 241 db.BeginTransaction(); |
| 247 | 242 |
| 248 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 243 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
| 249 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 244 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
| 250 | 245 |
| 251 GURL url("http://google.com"); | 246 GURL url("http://google.com"); |
| 252 FaviconID id = db.AddFavicon(url, TOUCH_ICON); | 247 FaviconID id = db.AddFavicon(url, TOUCH_ICON, GetDefaultFaviconSizes()); |
| 253 base::Time time = base::Time::Now(); | 248 base::Time time = base::Time::Now(); |
| 254 db.AddFaviconBitmap(id, favicon, time, gfx::Size()); | 249 db.AddFaviconBitmap(id, favicon, time, gfx::Size()); |
| 255 EXPECT_TRUE(0 < db.AddIconMapping(url, id)); | 250 EXPECT_TRUE(0 < db.AddIconMapping(url, id)); |
| 256 | 251 |
| 257 FaviconID id2 = db.AddFavicon(url, FAVICON); | 252 FaviconID id2 = db.AddFavicon(url, FAVICON, GetDefaultFaviconSizes()); |
| 258 db.AddFaviconBitmap(id2, favicon, time, gfx::Size()); | |
| 259 EXPECT_TRUE(0 < db.AddIconMapping(url, id2)); | 253 EXPECT_TRUE(0 < db.AddIconMapping(url, id2)); |
| 260 ASSERT_NE(id, id2); | 254 ASSERT_NE(id, id2); |
| 261 | 255 |
| 262 std::vector<IconMapping> icon_mapping; | 256 std::vector<IconMapping> icon_mapping; |
| 263 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); | 257 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); |
| 264 ASSERT_EQ(2u, icon_mapping.size()); | 258 ASSERT_EQ(2u, icon_mapping.size()); |
| 265 EXPECT_EQ(icon_mapping.front().icon_type, TOUCH_ICON); | 259 EXPECT_EQ(icon_mapping.front().icon_type, TOUCH_ICON); |
| 266 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, FAVICON, NULL)); | 260 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, FAVICON, NULL)); |
| 267 | 261 |
| 268 db.DeleteIconMappings(url); | 262 db.DeleteIconMappings(url); |
| 269 | 263 |
| 270 EXPECT_FALSE(db.GetIconMappingsForPageURL(url, NULL)); | 264 EXPECT_FALSE(db.GetIconMappingsForPageURL(url, NULL)); |
| 271 EXPECT_FALSE(db.GetIconMappingsForPageURL(url, FAVICON, NULL)); | 265 EXPECT_FALSE(db.GetIconMappingsForPageURL(url, FAVICON, NULL)); |
| 272 } | 266 } |
| 273 | 267 |
| 274 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURL) { | 268 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURL) { |
| 275 ThumbnailDatabase db; | 269 ThumbnailDatabase db; |
| 276 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 270 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
| 277 db.BeginTransaction(); | 271 db.BeginTransaction(); |
| 278 | 272 |
| 279 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 273 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
| 280 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 274 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
| 281 | 275 |
| 282 GURL url("http://google.com"); | 276 GURL url("http://google.com"); |
| 283 | 277 |
| 284 FaviconID id1 = db.AddFavicon(url, TOUCH_ICON); | 278 FaviconID id1 = db.AddFavicon(url, TOUCH_ICON, |
| 279 GetFaviconSizesSmallAndLarge()); |
| 285 base::Time time = base::Time::Now(); | 280 base::Time time = base::Time::Now(); |
| 286 db.AddFaviconBitmap(id1, favicon, time, kSmallSize); | 281 db.AddFaviconBitmap(id1, favicon, time, kSmallSize); |
| 287 db.AddFaviconBitmap(id1, favicon, time, kLargeSize); | 282 db.AddFaviconBitmap(id1, favicon, time, kLargeSize); |
| 288 EXPECT_TRUE(0 < db.AddIconMapping(url, id1)); | 283 EXPECT_TRUE(0 < db.AddIconMapping(url, id1)); |
| 289 | 284 |
| 290 FaviconID id2 = db.AddFavicon(url, FAVICON); | 285 FaviconID id2 = db.AddFavicon(url, FAVICON, GetFaviconSizesSmallAndLarge()); |
| 291 EXPECT_NE(id1, id2); | 286 EXPECT_NE(id1, id2); |
| 292 db.AddFaviconBitmap(id2, favicon, time, kSmallSize); | 287 db.AddFaviconBitmap(id2, favicon, time, kSmallSize); |
| 293 EXPECT_TRUE(0 < db.AddIconMapping(url, id2)); | 288 EXPECT_TRUE(0 < db.AddIconMapping(url, id2)); |
| 294 | 289 |
| 295 std::vector<IconMapping> icon_mappings; | 290 std::vector<IconMapping> icon_mappings; |
| 296 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mappings)); | 291 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mappings)); |
| 297 ASSERT_EQ(2u, icon_mappings.size()); | 292 ASSERT_EQ(2u, icon_mappings.size()); |
| 298 EXPECT_EQ(id1, icon_mappings[0].icon_id); | 293 EXPECT_EQ(id1, icon_mappings[0].icon_id); |
| 299 EXPECT_EQ(id2, icon_mappings[1].icon_id); | 294 EXPECT_EQ(id2, icon_mappings[1].icon_id); |
| 300 } | 295 } |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 443 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 438 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
| 444 | 439 |
| 445 db.BeginTransaction(); | 440 db.BeginTransaction(); |
| 446 | 441 |
| 447 EXPECT_TRUE(db.InitTemporaryTables()); | 442 EXPECT_TRUE(db.InitTemporaryTables()); |
| 448 | 443 |
| 449 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 444 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
| 450 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 445 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
| 451 | 446 |
| 452 GURL unkept_url("http://google.com/favicon2.ico"); | 447 GURL unkept_url("http://google.com/favicon2.ico"); |
| 453 FaviconID unkept_id = db.AddFavicon(unkept_url, FAVICON); | 448 FaviconID unkept_id = db.AddFavicon(unkept_url, FAVICON, |
| 449 GetFaviconSizesSmallAndLarge()); |
| 454 db.AddFaviconBitmap(unkept_id, favicon, base::Time::Now(), kSmallSize); | 450 db.AddFaviconBitmap(unkept_id, favicon, base::Time::Now(), kSmallSize); |
| 455 | 451 |
| 456 GURL kept_url("http://google.com/favicon.ico"); | 452 GURL kept_url("http://google.com/favicon.ico"); |
| 457 FaviconID kept_id = db.AddFavicon(kept_url, FAVICON); | 453 FaviconID kept_id = db.AddFavicon(kept_url, FAVICON, |
| 454 GetFaviconSizesSmallAndLarge()); |
| 458 db.AddFaviconBitmap(kept_id, favicon, base::Time::Now(), kLargeSize); | 455 db.AddFaviconBitmap(kept_id, favicon, base::Time::Now(), kLargeSize); |
| 459 | 456 |
| 460 GURL page_url("http://google.com"); | 457 GURL page_url("http://google.com"); |
| 461 db.AddIconMapping(page_url, unkept_id); | 458 db.AddIconMapping(page_url, unkept_id); |
| 462 db.AddIconMapping(page_url, kept_id); | 459 db.AddIconMapping(page_url, kept_id); |
| 463 | 460 |
| 464 FaviconID new_favicon_id = | 461 FaviconID new_favicon_id = |
| 465 db.CopyFaviconAndFaviconBitmapsToTemporaryTables(kept_id); | 462 db.CopyFaviconAndFaviconBitmapsToTemporaryTables(kept_id); |
| 466 EXPECT_NE(0, new_favicon_id); | 463 EXPECT_NE(0, new_favicon_id); |
| 467 EXPECT_TRUE(db.AddToTemporaryIconMappingTable(page_url, new_favicon_id)); | 464 EXPECT_TRUE(db.AddToTemporaryIconMappingTable(page_url, new_favicon_id)); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 491 db.BeginTransaction(); | 488 db.BeginTransaction(); |
| 492 | 489 |
| 493 std::vector<unsigned char> data1(blob1, blob1 + sizeof(blob1)); | 490 std::vector<unsigned char> data1(blob1, blob1 + sizeof(blob1)); |
| 494 scoped_refptr<base::RefCountedBytes> favicon1( | 491 scoped_refptr<base::RefCountedBytes> favicon1( |
| 495 new base::RefCountedBytes(data1)); | 492 new base::RefCountedBytes(data1)); |
| 496 std::vector<unsigned char> data2(blob2, blob2 + sizeof(blob2)); | 493 std::vector<unsigned char> data2(blob2, blob2 + sizeof(blob2)); |
| 497 scoped_refptr<base::RefCountedBytes> favicon2( | 494 scoped_refptr<base::RefCountedBytes> favicon2( |
| 498 new base::RefCountedBytes(data2)); | 495 new base::RefCountedBytes(data2)); |
| 499 | 496 |
| 500 GURL url("http://google.com"); | 497 GURL url("http://google.com"); |
| 501 FaviconID id = db.AddFavicon(url, FAVICON); | 498 FaviconID id = db.AddFavicon(url, FAVICON, GetFaviconSizesSmallAndLarge()); |
| 502 base::Time last_updated = base::Time::Now(); | 499 base::Time last_updated = base::Time::Now(); |
| 503 db.AddFaviconBitmap(id, favicon1, last_updated, kSmallSize); | 500 db.AddFaviconBitmap(id, favicon1, last_updated, kSmallSize); |
| 504 db.AddFaviconBitmap(id, favicon2, last_updated, kLargeSize); | 501 db.AddFaviconBitmap(id, favicon2, last_updated, kLargeSize); |
| 505 | 502 |
| 506 EXPECT_TRUE(db.GetFaviconBitmaps(id, NULL)); | 503 EXPECT_TRUE(db.GetFaviconBitmaps(id, NULL)); |
| 507 | 504 |
| 508 EXPECT_TRUE(db.DeleteFavicon(id)); | 505 EXPECT_TRUE(db.DeleteFavicon(id)); |
| 509 EXPECT_FALSE(db.GetFaviconBitmaps(id, NULL)); | 506 EXPECT_FALSE(db.GetFaviconBitmaps(id, NULL)); |
| 510 } | 507 } |
| 511 | 508 |
| 512 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLForReturnOrder) { | 509 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLForReturnOrder) { |
| 513 ThumbnailDatabase db; | 510 ThumbnailDatabase db; |
| 514 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 511 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
| 515 db.BeginTransaction(); | 512 db.BeginTransaction(); |
| 516 | 513 |
| 517 // Add a favicon | 514 // Add a favicon |
| 518 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 515 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
| 519 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 516 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
| 520 | 517 |
| 521 GURL url("http://google.com"); | 518 GURL page_url("http://google.com"); |
| 522 FaviconID id = db.AddFavicon(url, FAVICON); | 519 GURL icon_url("http://google.com/favicon.ico"); |
| 523 base::Time time = base::Time::Now(); | 520 base::Time time = base::Time::Now(); |
| 524 db.AddFaviconBitmap(id, favicon, time, gfx::Size()); | |
| 525 | 521 |
| 526 EXPECT_NE(0, db.AddIconMapping(url, id)); | 522 FaviconID id = db.AddFavicon(icon_url, FAVICON, GetDefaultFaviconSizes(), |
| 527 std::vector<IconMapping> icon_mapping; | 523 favicon, time, gfx::Size()); |
| 528 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); | 524 EXPECT_NE(0, db.AddIconMapping(page_url, id)); |
| 525 std::vector<IconMapping> icon_mappings; |
| 526 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url, &icon_mappings)); |
| 529 | 527 |
| 530 EXPECT_EQ(url, icon_mapping.front().page_url); | 528 EXPECT_EQ(page_url, icon_mappings.front().page_url); |
| 531 EXPECT_EQ(id, icon_mapping.front().icon_id); | 529 EXPECT_EQ(id, icon_mappings.front().icon_id); |
| 532 EXPECT_EQ(FAVICON, icon_mapping.front().icon_type); | 530 EXPECT_EQ(FAVICON, icon_mappings.front().icon_type); |
| 533 | 531 |
| 534 // Add a touch icon | 532 // Add a touch icon |
| 535 std::vector<unsigned char> data2(blob2, blob2 + sizeof(blob2)); | 533 std::vector<unsigned char> data2(blob2, blob2 + sizeof(blob2)); |
| 536 scoped_refptr<base::RefCountedBytes> favicon2 = | 534 scoped_refptr<base::RefCountedBytes> favicon2 = |
| 537 new base::RefCountedBytes(data); | 535 new base::RefCountedBytes(data); |
| 538 | 536 |
| 539 FaviconID id2 = db.AddFavicon(url, TOUCH_ICON); | 537 FaviconID id2 = db.AddFavicon(icon_url, TOUCH_ICON, |
| 540 db.AddFaviconBitmap(id2, favicon2, time, gfx::Size()); | 538 GetDefaultFaviconSizes(), favicon2, time, gfx::Size()); |
| 541 EXPECT_NE(0, db.AddIconMapping(url, id2)); | 539 EXPECT_NE(0, db.AddIconMapping(page_url, id2)); |
| 542 | 540 |
| 543 icon_mapping.clear(); | 541 icon_mappings.clear(); |
| 544 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); | 542 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url, &icon_mappings)); |
| 545 | 543 |
| 546 EXPECT_EQ(url, icon_mapping.front().page_url); | 544 EXPECT_EQ(page_url, icon_mappings.front().page_url); |
| 547 EXPECT_EQ(id2, icon_mapping.front().icon_id); | 545 EXPECT_EQ(id2, icon_mappings.front().icon_id); |
| 548 EXPECT_EQ(TOUCH_ICON, icon_mapping.front().icon_type); | 546 EXPECT_EQ(TOUCH_ICON, icon_mappings.front().icon_type); |
| 549 | 547 |
| 550 // Add a touch precomposed icon | 548 // Add a touch precomposed icon |
| 551 scoped_refptr<base::RefCountedBytes> favicon3 = | 549 scoped_refptr<base::RefCountedBytes> favicon3 = |
| 552 new base::RefCountedBytes(data2); | 550 new base::RefCountedBytes(data2); |
| 553 | 551 |
| 554 FaviconID id3 = db.AddFavicon(url, TOUCH_PRECOMPOSED_ICON); | 552 FaviconID id3 = db.AddFavicon(icon_url, TOUCH_PRECOMPOSED_ICON, |
| 555 db.AddFaviconBitmap(id3, favicon3, time, gfx::Size()); | 553 GetDefaultFaviconSizes(), favicon3, time, gfx::Size()); |
| 556 EXPECT_NE(0, db.AddIconMapping(url, id3)); | 554 EXPECT_NE(0, db.AddIconMapping(page_url, id3)); |
| 557 | 555 |
| 558 icon_mapping.clear(); | 556 icon_mappings.clear(); |
| 559 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); | 557 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url, &icon_mappings)); |
| 560 | 558 |
| 561 EXPECT_EQ(url, icon_mapping.front().page_url); | 559 EXPECT_EQ(page_url, icon_mappings.front().page_url); |
| 562 EXPECT_EQ(id3, icon_mapping.front().icon_id); | 560 EXPECT_EQ(id3, icon_mappings.front().icon_id); |
| 563 EXPECT_EQ(TOUCH_PRECOMPOSED_ICON, icon_mapping.front().icon_type); | 561 EXPECT_EQ(TOUCH_PRECOMPOSED_ICON, icon_mappings.front().icon_type); |
| 564 } | 562 } |
| 565 | 563 |
| 566 // Test result of GetIconMappingsForPageURL when an icon type is passed in. | 564 // Test result of GetIconMappingsForPageURL when an icon type is passed in. |
| 567 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLWithIconType) { | 565 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLWithIconType) { |
| 568 ThumbnailDatabase db; | 566 ThumbnailDatabase db; |
| 569 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 567 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
| 570 db.BeginTransaction(); | 568 db.BeginTransaction(); |
| 571 | 569 |
| 572 GURL url("http://google.com"); | 570 GURL url("http://google.com"); |
| 573 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 571 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
| 574 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 572 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
| 575 base::Time time = base::Time::Now(); | 573 base::Time time = base::Time::Now(); |
| 576 | 574 |
| 577 FaviconID id1 = db.AddFavicon(url, FAVICON, GetDefaultFaviconSizes(), | 575 FaviconID id1 = db.AddFavicon(url, FAVICON, GetDefaultFaviconSizes(), |
| 578 favicon, time, gfx::Size()); | 576 favicon, time, gfx::Size()); |
| 579 EXPECT_NE(0, db.AddIconMapping(url, id1)); | 577 EXPECT_NE(0, db.AddIconMapping(url, id1)); |
| 580 | 578 |
| 581 FaviconID id2 = db.AddFavicon(url, TOUCH_ICON, GetDefaultFaviconSizes(), | 579 FaviconID id2 = db.AddFavicon(url, TOUCH_ICON, GetDefaultFaviconSizes(), |
| 582 favicon, time, gfx::Size()); | 580 favicon, time, gfx::Size()); |
| 583 EXPECT_NE(0, db.AddIconMapping(url, id2)); | 581 EXPECT_NE(0, db.AddIconMapping(url, id2)); |
| 584 | 582 |
| 583 FaviconID id3 = db.AddFavicon(url, TOUCH_ICON, GetDefaultFaviconSizes(), |
| 584 favicon, time, gfx::Size()); |
| 585 EXPECT_NE(0, db.AddIconMapping(url, id3)); |
| 586 |
| 587 // Only the mappings for favicons of type TOUCH_ICON should be returned as |
| 588 // TOUCH_ICON is a larger icon type than FAVICON. |
| 585 std::vector<IconMapping> icon_mappings; | 589 std::vector<IconMapping> icon_mappings; |
| 586 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, FAVICON | TOUCH_ICON, | 590 EXPECT_TRUE(db.GetIconMappingsForPageURL( |
| 587 &icon_mappings)); | 591 url, |
| 592 FAVICON | TOUCH_ICON | TOUCH_PRECOMPOSED_ICON, |
| 593 &icon_mappings)); |
| 594 |
| 588 EXPECT_EQ(2u, icon_mappings.size()); | 595 EXPECT_EQ(2u, icon_mappings.size()); |
| 589 EXPECT_EQ(id2, icon_mappings[0].icon_id); | 596 if (id2 == icon_mappings[0].icon_id) { |
| 590 EXPECT_EQ(id1, icon_mappings[1].icon_id); | 597 EXPECT_EQ(id3, icon_mappings[1].icon_id); |
| 598 } else { |
| 599 EXPECT_EQ(id3, icon_mappings[0].icon_id); |
| 600 EXPECT_EQ(id2, icon_mappings[1].icon_id); |
| 601 } |
| 591 | 602 |
| 592 icon_mappings.clear(); | 603 icon_mappings.clear(); |
| 593 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, TOUCH_ICON, &icon_mappings)); | 604 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, TOUCH_ICON, &icon_mappings)); |
| 605 if (id2 == icon_mappings[0].icon_id) { |
| 606 EXPECT_EQ(id3, icon_mappings[1].icon_id); |
| 607 } else { |
| 608 EXPECT_EQ(id3, icon_mappings[0].icon_id); |
| 609 EXPECT_EQ(id2, icon_mappings[1].icon_id); |
| 610 } |
| 611 |
| 612 icon_mappings.clear(); |
| 613 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, FAVICON, &icon_mappings)); |
| 594 EXPECT_EQ(1u, icon_mappings.size()); | 614 EXPECT_EQ(1u, icon_mappings.size()); |
| 595 EXPECT_EQ(id2, icon_mappings[0].icon_id); | 615 EXPECT_EQ(id1, icon_mappings[0].icon_id); |
| 596 } | 616 } |
| 597 | 617 |
| 598 TEST_F(ThumbnailDatabaseTest, HasMappingFor) { | 618 TEST_F(ThumbnailDatabaseTest, HasMappingFor) { |
| 599 ThumbnailDatabase db; | 619 ThumbnailDatabase db; |
| 600 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 620 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
| 601 db.BeginTransaction(); | 621 db.BeginTransaction(); |
| 602 | 622 |
| 603 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 623 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
| 604 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 624 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
| 605 | 625 |
| 606 // Add a favicon which will have icon_mappings | 626 // Add a favicon which will have icon_mappings |
| 607 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON); | 627 base::Time time = base::Time::Now(); |
| 628 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON, |
| 629 GetDefaultFaviconSizes(), favicon, time, gfx::Size()); |
| 608 EXPECT_NE(id1, 0); | 630 EXPECT_NE(id1, 0); |
| 609 base::Time time = base::Time::Now(); | |
| 610 db.AddFaviconBitmap(id1, favicon, time, gfx::Size()); | |
| 611 | 631 |
| 612 // Add another type of favicon | 632 // Add another type of favicon |
| 613 FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); | 633 time = base::Time::Now(); |
| 634 FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON, |
| 635 GetDefaultFaviconSizes(), favicon, time, gfx::Size()); |
| 614 EXPECT_NE(id2, 0); | 636 EXPECT_NE(id2, 0); |
| 615 time = base::Time::Now(); | |
| 616 db.AddFaviconBitmap(id2, favicon, time, gfx::Size()); | |
| 617 | 637 |
| 618 // Add 3rd favicon | 638 // Add 3rd favicon |
| 619 FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); | 639 time = base::Time::Now(); |
| 640 FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON, |
| 641 GetDefaultFaviconSizes(), favicon, time, gfx::Size()); |
| 620 EXPECT_NE(id3, 0); | 642 EXPECT_NE(id3, 0); |
| 621 time = base::Time::Now(); | |
| 622 db.AddFaviconBitmap(id3, favicon, time, gfx::Size()); | |
| 623 | 643 |
| 624 // Add 2 icon mapping | 644 // Add 2 icon mapping |
| 625 GURL page_url("http://www.google.com"); | 645 GURL page_url("http://www.google.com"); |
| 626 EXPECT_TRUE(db.AddIconMapping(page_url, id1)); | 646 EXPECT_TRUE(db.AddIconMapping(page_url, id1)); |
| 627 EXPECT_TRUE(db.AddIconMapping(page_url, id2)); | 647 EXPECT_TRUE(db.AddIconMapping(page_url, id2)); |
| 628 | 648 |
| 629 EXPECT_TRUE(db.HasMappingFor(id1)); | 649 EXPECT_TRUE(db.HasMappingFor(id1)); |
| 630 EXPECT_TRUE(db.HasMappingFor(id2)); | 650 EXPECT_TRUE(db.HasMappingFor(id2)); |
| 631 EXPECT_FALSE(db.HasMappingFor(id3)); | 651 EXPECT_FALSE(db.HasMappingFor(id3)); |
| 632 | 652 |
| 633 // Remove all mappings | 653 // Remove all mappings |
| 634 db.DeleteIconMappings(page_url); | 654 db.DeleteIconMappings(page_url); |
| 635 EXPECT_FALSE(db.HasMappingFor(id1)); | 655 EXPECT_FALSE(db.HasMappingFor(id1)); |
| 636 EXPECT_FALSE(db.HasMappingFor(id2)); | 656 EXPECT_FALSE(db.HasMappingFor(id2)); |
| 637 EXPECT_FALSE(db.HasMappingFor(id3)); | 657 EXPECT_FALSE(db.HasMappingFor(id3)); |
| 638 } | 658 } |
| 639 | 659 |
| 640 TEST_F(ThumbnailDatabaseTest, CloneIconMappings) { | 660 TEST_F(ThumbnailDatabaseTest, CloneIconMappings) { |
| 641 ThumbnailDatabase db; | 661 ThumbnailDatabase db; |
| 642 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 662 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
| 643 db.BeginTransaction(); | 663 db.BeginTransaction(); |
| 644 | 664 |
| 645 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 665 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
| 646 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 666 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
| 647 | 667 |
| 648 // Add a favicon which will have icon_mappings | 668 // Add a favicon which will have icon_mappings |
| 649 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON); | 669 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON, |
| 670 GetDefaultFaviconSizes()); |
| 650 EXPECT_NE(0, id1); | 671 EXPECT_NE(0, id1); |
| 651 base::Time time = base::Time::Now(); | 672 base::Time time = base::Time::Now(); |
| 652 db.AddFaviconBitmap(id1, favicon, time, gfx::Size()); | 673 db.AddFaviconBitmap(id1, favicon, time, gfx::Size()); |
| 653 | 674 |
| 654 // Add another type of favicon | 675 // Add another type of favicon |
| 655 FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); | 676 FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON, |
| 677 GetDefaultFaviconSizes()); |
| 656 EXPECT_NE(0, id2); | 678 EXPECT_NE(0, id2); |
| 657 time = base::Time::Now(); | 679 time = base::Time::Now(); |
| 658 db.AddFaviconBitmap(id2, favicon, time, gfx::Size()); | 680 db.AddFaviconBitmap(id2, favicon, time, gfx::Size()); |
| 659 | 681 |
| 660 // Add 3rd favicon | 682 // Add 3rd favicon |
| 661 FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); | 683 FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON, |
| 684 GetDefaultFaviconSizes()); |
| 662 EXPECT_NE(0, id3); | 685 EXPECT_NE(0, id3); |
| 663 time = base::Time::Now(); | 686 time = base::Time::Now(); |
| 664 db.AddFaviconBitmap(id3, favicon, time, gfx::Size()); | 687 db.AddFaviconBitmap(id3, favicon, time, gfx::Size()); |
| 665 | 688 |
| 666 GURL page1_url("http://page1.com"); | 689 GURL page1_url("http://page1.com"); |
| 667 EXPECT_TRUE(db.AddIconMapping(page1_url, id1)); | 690 EXPECT_TRUE(db.AddIconMapping(page1_url, id1)); |
| 668 EXPECT_TRUE(db.AddIconMapping(page1_url, id2)); | 691 EXPECT_TRUE(db.AddIconMapping(page1_url, id2)); |
| 669 | 692 |
| 670 GURL page2_url("http://page2.com"); | 693 GURL page2_url("http://page2.com"); |
| 671 EXPECT_TRUE(db.AddIconMapping(page2_url, id3)); | 694 EXPECT_TRUE(db.AddIconMapping(page2_url, id3)); |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 753 | 776 |
| 754 TEST_F(ThumbnailDatabaseTest, IconMappingEnumerator) { | 777 TEST_F(ThumbnailDatabaseTest, IconMappingEnumerator) { |
| 755 ThumbnailDatabase db; | 778 ThumbnailDatabase db; |
| 756 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 779 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
| 757 db.BeginTransaction(); | 780 db.BeginTransaction(); |
| 758 | 781 |
| 759 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 782 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
| 760 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 783 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
| 761 | 784 |
| 762 GURL url("http://google.com"); | 785 GURL url("http://google.com"); |
| 763 FaviconID touch_icon_id1 = db.AddFavicon(url, TOUCH_ICON); | 786 GURL icon_url1("http://google.com/favicon.ico"); |
| 787 FaviconID touch_icon_id1 = db.AddFavicon(icon_url1, TOUCH_ICON, |
| 788 GetDefaultFaviconSizes(), favicon, base::Time::Now(), gfx::Size()); |
| 764 ASSERT_NE(0, touch_icon_id1); | 789 ASSERT_NE(0, touch_icon_id1); |
| 765 ASSERT_TRUE(db.AddFaviconBitmap(touch_icon_id1, favicon, base::Time::Now(), | |
| 766 gfx::Size())); | |
| 767 IconMappingID touch_mapping_id1 = db.AddIconMapping(url, touch_icon_id1); | 790 IconMappingID touch_mapping_id1 = db.AddIconMapping(url, touch_icon_id1); |
| 768 ASSERT_NE(0, touch_mapping_id1); | 791 ASSERT_NE(0, touch_mapping_id1); |
| 769 | 792 |
| 770 FaviconID favicon_id1 = db.AddFavicon(url, FAVICON); | 793 FaviconID favicon_id1 = db.AddFavicon(icon_url1, FAVICON, |
| 794 GetDefaultFaviconSizes(), favicon, base::Time::Now(), gfx::Size()); |
| 771 ASSERT_NE(0, favicon_id1); | 795 ASSERT_NE(0, favicon_id1); |
| 772 ASSERT_TRUE(db.AddFaviconBitmap(favicon_id1, favicon, base::Time::Now(), | |
| 773 gfx::Size())); | |
| 774 IconMappingID favicon_mapping_id1 = db.AddIconMapping(url, favicon_id1); | 796 IconMappingID favicon_mapping_id1 = db.AddIconMapping(url, favicon_id1); |
| 775 ASSERT_NE(0, favicon_mapping_id1); | 797 ASSERT_NE(0, favicon_mapping_id1); |
| 776 | 798 |
| 777 GURL url2("http://chromium.org"); | 799 GURL url2("http://chromium.org"); |
| 778 FaviconID favicon_id2 = db.AddFavicon(url2, FAVICON); | 800 GURL icon_url2("http://chromium.org/favicon.ico"); |
| 801 FaviconID favicon_id2 = db.AddFavicon(icon_url2, FAVICON, |
| 802 GetDefaultFaviconSizes(), favicon, base::Time::Now(), gfx::Size()); |
| 779 ASSERT_NE(0, favicon_id2); | 803 ASSERT_NE(0, favicon_id2); |
| 780 ASSERT_TRUE(db.AddFaviconBitmap(favicon_id2, favicon, base::Time::Now(), | |
| 781 gfx::Size())); | |
| 782 IconMappingID favicon_mapping_id2 = db.AddIconMapping(url2, favicon_id2); | 804 IconMappingID favicon_mapping_id2 = db.AddIconMapping(url2, favicon_id2); |
| 783 ASSERT_NE(0, favicon_mapping_id2); | 805 ASSERT_NE(0, favicon_mapping_id2); |
| 784 | 806 |
| 785 IconMapping icon_mapping; | 807 IconMapping icon_mapping; |
| 786 ThumbnailDatabase::IconMappingEnumerator enumerator1; | 808 ThumbnailDatabase::IconMappingEnumerator enumerator1; |
| 787 ASSERT_TRUE(db.InitIconMappingEnumerator(FAVICON, &enumerator1)); | 809 ASSERT_TRUE(db.InitIconMappingEnumerator(FAVICON, &enumerator1)); |
| 788 // There are 2 favicon mappings. | 810 // There are 2 favicon mappings. |
| 789 bool has_favicon_mapping1 = false; | 811 bool has_favicon_mapping1 = false; |
| 790 bool has_favicon_mapping2 = false; | 812 bool has_favicon_mapping2 = false; |
| 791 int mapping_count = 0; | 813 int mapping_count = 0; |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 846 } | 868 } |
| 847 | 869 |
| 848 std::string sizes_as_string; | 870 std::string sizes_as_string; |
| 849 ThumbnailDatabase::FaviconSizesToDatabaseString(sizes_valid, | 871 ThumbnailDatabase::FaviconSizesToDatabaseString(sizes_valid, |
| 850 &sizes_as_string); | 872 &sizes_as_string); |
| 851 EXPECT_TRUE(sizes_as_string == "10 15 20 25" || | 873 EXPECT_TRUE(sizes_as_string == "10 15 20 25" || |
| 852 sizes_as_string == "20 25 10 15"); | 874 sizes_as_string == "20 25 10 15"); |
| 853 } | 875 } |
| 854 | 876 |
| 855 } // namespace history | 877 } // namespace history |
| OLD | NEW |