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

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

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

Powered by Google App Engine
This is Rietveld 408576698