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

Side by Side Diff: components/history/core/browser/thumbnail_database_unittest.cc

Issue 2856873002: [Thumbnails DB] Allow setting last_requested time when accessing favicons. (Closed)
Patch Set: Peter's comments Created 3 years, 6 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
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 <stddef.h> 5 #include <stddef.h>
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/files/file_enumerator.h" 10 #include "base/files/file_enumerator.h"
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 EXPECT_NE(0, id); 217 EXPECT_NE(0, id);
218 218
219 EXPECT_NE(0, db.AddIconMapping(url, id)); 219 EXPECT_NE(0, db.AddIconMapping(url, id));
220 std::vector<IconMapping> icon_mappings; 220 std::vector<IconMapping> icon_mappings;
221 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mappings)); 221 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mappings));
222 EXPECT_EQ(1u, icon_mappings.size()); 222 EXPECT_EQ(1u, icon_mappings.size());
223 EXPECT_EQ(url, icon_mappings.front().page_url); 223 EXPECT_EQ(url, icon_mappings.front().page_url);
224 EXPECT_EQ(id, icon_mappings.front().icon_id); 224 EXPECT_EQ(id, icon_mappings.front().icon_id);
225 } 225 }
226 226
227 TEST_F(ThumbnailDatabaseTest, LastRequestedTime) { 227 TEST_F(ThumbnailDatabaseTest,
228 AddOnDemandFaviconBitmapCreatesCorrectTimestamps) {
228 ThumbnailDatabase db(NULL); 229 ThumbnailDatabase db(NULL);
229 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_)); 230 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
230 db.BeginTransaction(); 231 db.BeginTransaction();
231 232
233 base::Time time;
pkotwicz 2017/06/07 17:40:53 Can you please rename this variable to something m
jkrcal 2017/06/09 16:38:38 Done.
234 ASSERT_TRUE(base::Time::FromUTCExploded({2017, 5, 0, 1, 0, 0, 0, 0}, &time));
232 std::vector<unsigned char> data(kBlob1, kBlob1 + sizeof(kBlob1)); 235 std::vector<unsigned char> data(kBlob1, kBlob1 + sizeof(kBlob1));
233 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 236 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
234 237
235 GURL url("http://google.com"); 238 GURL url("http://google.com");
236 base::Time now = base::Time::Now(); 239 favicon_base::FaviconID icon = db.AddFavicon(url, favicon_base::FAVICON);
237 favicon_base::FaviconID id = 240 ASSERT_NE(0, icon);
238 db.AddFavicon(url, favicon_base::TOUCH_ICON, favicon, now, gfx::Size()); 241 FaviconBitmapID bitmap = db.AddFaviconBitmap(
239 ASSERT_NE(0, id); 242 icon, favicon, FaviconBitmapType::ON_DEMAND, time, gfx::Size());
243 ASSERT_NE(0, bitmap);
240 244
241 // Fetching the last requested time of a non-existent bitmap should fail. 245 base::Time last_updated;
242 base::Time last_requested = base::Time::UnixEpoch(); 246 base::Time last_requested;
243 EXPECT_FALSE(db.GetFaviconBitmap(id + 1, NULL, &last_requested, NULL, NULL)); 247 ASSERT_TRUE(db.GetFaviconBitmap(bitmap, &last_updated, &last_requested,
244 EXPECT_EQ(last_requested, base::Time::UnixEpoch()); // Remains unchanged. 248 nullptr, nullptr));
249 EXPECT_EQ(base::Time(), last_updated);
250 EXPECT_EQ(time, last_requested);
251 }
245 252
246 // Fetching the last requested time of a bitmap that has no last request 253 TEST_F(ThumbnailDatabaseTest, AddFaviconBitmapCreatesCorrectTimestamps) {
247 // should return a null timestamp. 254 ThumbnailDatabase db(NULL);
248 last_requested = base::Time::UnixEpoch(); 255 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
249 EXPECT_TRUE(db.GetFaviconBitmap(id, NULL, &last_requested, NULL, NULL)); 256 db.BeginTransaction();
250 EXPECT_TRUE(last_requested.is_null());
251 257
252 // Setting the last requested time of an existing bitmap should succeed, and 258 base::Time time;
pkotwicz 2017/06/07 17:40:53 Ditto
jkrcal 2017/06/09 16:38:38 Done.
253 // the set time should be returned by the corresponding "Get". 259 ASSERT_TRUE(base::Time::FromUTCExploded({2017, 5, 0, 1, 0, 0, 0, 0}, &time));
254 last_requested = base::Time::UnixEpoch(); 260 std::vector<unsigned char> data(kBlob1, kBlob1 + sizeof(kBlob1));
255 EXPECT_TRUE(db.SetFaviconBitmapLastRequestedTime(id, now)); 261 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
256 EXPECT_TRUE(db.GetFaviconBitmap(id, NULL, &last_requested, NULL, NULL)); 262
257 EXPECT_EQ(last_requested, now); 263 GURL url("http://google.com");
264 favicon_base::FaviconID icon = db.AddFavicon(url, favicon_base::FAVICON);
265 ASSERT_NE(0, icon);
266 FaviconBitmapID bitmap = db.AddFaviconBitmap(
267 icon, favicon, FaviconBitmapType::ON_VISIT, time, gfx::Size());
268 ASSERT_NE(0, bitmap);
269
270 base::Time last_updated;
271 base::Time last_requested;
272 ASSERT_TRUE(db.GetFaviconBitmap(bitmap, &last_updated, &last_requested,
273 nullptr, nullptr));
274 EXPECT_EQ(time, last_updated);
275 EXPECT_EQ(base::Time(), last_requested);
276 }
277
278 TEST_F(ThumbnailDatabaseTest, TouchUpdatesOnDemandFavicons) {
279 ThumbnailDatabase db(NULL);
280 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
281 db.BeginTransaction();
282
283 base::Time start;
284 ASSERT_TRUE(base::Time::FromUTCExploded({2017, 5, 0, 1, 0, 0, 0, 0}, &start));
285 std::vector<unsigned char> data(kBlob1, kBlob1 + sizeof(kBlob1));
286 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
287
288 // Create an on-demand favicon.
289 GURL url("http://google.com");
290 favicon_base::FaviconID icon = db.AddFavicon(url, favicon_base::FAVICON);
291 ASSERT_NE(0, icon);
292 FaviconBitmapID bitmap = db.AddFaviconBitmap(
293 icon, favicon, FaviconBitmapType::ON_DEMAND, start, gfx::Size());
294 ASSERT_NE(0, bitmap);
295
296 base::Time end = start + base::TimeDelta::FromDays(14);
pkotwicz 2017/06/07 17:40:53 You should use kFaviconUpdateLastRequestedAfterDay
jkrcal 2017/06/09 16:38:38 Done.
297 EXPECT_TRUE(db.TouchOnDemandFavicon(url, end));
298
299 base::Time last_updated;
300 base::Time last_requested;
301 EXPECT_TRUE(db.GetFaviconBitmap(bitmap, &last_updated, &last_requested,
302 nullptr, nullptr));
303 // Does not mess up with the last_updated field.
pkotwicz 2017/06/07 17:40:53 Nit: 'mess up' -> 'mess'
jkrcal 2017/06/09 16:38:38 Done.
304 EXPECT_EQ(base::Time(), last_updated);
305 EXPECT_EQ(end, last_requested); // Updates the last_requested field.
306 }
307
308 TEST_F(ThumbnailDatabaseTest, TouchUpdatesOnlyInfrequently) {
309 ThumbnailDatabase db(NULL);
310 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
311 db.BeginTransaction();
312
313 base::Time start;
314 ASSERT_TRUE(base::Time::FromUTCExploded({2017, 5, 0, 1, 0, 0, 0, 0}, &start));
315 std::vector<unsigned char> data(kBlob1, kBlob1 + sizeof(kBlob1));
316 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
317
318 // Create an on-demand favicon.
319 GURL url("http://google.com");
320 favicon_base::FaviconID icon = db.AddFavicon(url, favicon_base::FAVICON);
321 ASSERT_NE(0, icon);
322 FaviconBitmapID bitmap = db.AddFaviconBitmap(
323 icon, favicon, FaviconBitmapType::ON_DEMAND, start, gfx::Size());
324 ASSERT_NE(0, bitmap);
325
326 base::Time end = start + base::TimeDelta::FromMinutes(1);
327 EXPECT_TRUE(db.TouchOnDemandFavicon(url, end));
328
329 base::Time last_requested;
330 EXPECT_TRUE(
331 db.GetFaviconBitmap(bitmap, nullptr, &last_requested, nullptr, nullptr));
332 EXPECT_EQ(start, last_requested); // No update.
333 }
334
335 TEST_F(ThumbnailDatabaseTest, TouchDoesNotUpdateStandardFavicons) {
336 ThumbnailDatabase db(NULL);
pkotwicz 2017/06/07 17:40:53 Nit: NULL -> nullptr (here and elsewhere in the ne
jkrcal 2017/06/09 16:38:38 Done.
337 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
338 db.BeginTransaction();
339
340 base::Time start;
341 ASSERT_TRUE(base::Time::FromUTCExploded({2017, 5, 0, 1, 0, 0, 0, 0}, &start));
342 std::vector<unsigned char> data(kBlob1, kBlob1 + sizeof(kBlob1));
343 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
344
345 // Create a standard favicon.
346 GURL url("http://google.com");
347 favicon_base::FaviconID icon = db.AddFavicon(url, favicon_base::FAVICON);
348 EXPECT_NE(0, icon);
349 FaviconBitmapID bitmap = db.AddFaviconBitmap(
350 icon, favicon, FaviconBitmapType::ON_VISIT, start, gfx::Size());
351 EXPECT_NE(0, bitmap);
352
353 base::Time end = start + base::TimeDelta::FromDays(14);
354 db.TouchOnDemandFavicon(url, end);
355
356 base::Time last_updated;
357 base::Time last_requested;
358 EXPECT_TRUE(db.GetFaviconBitmap(bitmap, &last_updated, &last_requested,
359 nullptr, nullptr));
360 EXPECT_EQ(start, last_updated); // Does not mess up with last_updates.
pkotwicz 2017/06/07 17:40:53 Nits: 'mess up' -> 'mess' 'last_udpates' -> 'last_
jkrcal 2017/06/09 16:38:38 Done.
361 EXPECT_EQ(base::Time(), last_requested); // No update.
258 } 362 }
259 363
260 TEST_F(ThumbnailDatabaseTest, DeleteIconMappings) { 364 TEST_F(ThumbnailDatabaseTest, DeleteIconMappings) {
261 ThumbnailDatabase db(NULL); 365 ThumbnailDatabase db(NULL);
262 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_)); 366 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
263 db.BeginTransaction(); 367 db.BeginTransaction();
264 368
265 std::vector<unsigned char> data(kBlob1, kBlob1 + sizeof(kBlob1)); 369 std::vector<unsigned char> data(kBlob1, kBlob1 + sizeof(kBlob1));
266 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 370 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
267 371
268 GURL url("http://google.com"); 372 GURL url("http://google.com");
269 favicon_base::FaviconID id = db.AddFavicon(url, favicon_base::TOUCH_ICON); 373 favicon_base::FaviconID id = db.AddFavicon(url, favicon_base::TOUCH_ICON);
270 base::Time time = base::Time::Now(); 374 base::Time time = base::Time::Now();
271 db.AddFaviconBitmap(id, favicon, time, gfx::Size()); 375 db.AddFaviconBitmap(id, favicon, FaviconBitmapType::ON_VISIT, time,
376 gfx::Size());
272 EXPECT_LT(0, db.AddIconMapping(url, id)); 377 EXPECT_LT(0, db.AddIconMapping(url, id));
273 378
274 favicon_base::FaviconID id2 = db.AddFavicon(url, favicon_base::FAVICON); 379 favicon_base::FaviconID id2 = db.AddFavicon(url, favicon_base::FAVICON);
275 EXPECT_LT(0, db.AddIconMapping(url, id2)); 380 EXPECT_LT(0, db.AddIconMapping(url, id2));
276 ASSERT_NE(id, id2); 381 ASSERT_NE(id, id2);
277 382
278 std::vector<IconMapping> icon_mapping; 383 std::vector<IconMapping> icon_mapping;
279 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); 384 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping));
280 ASSERT_EQ(2u, icon_mapping.size()); 385 ASSERT_EQ(2u, icon_mapping.size());
281 EXPECT_EQ(icon_mapping.front().icon_type, favicon_base::TOUCH_ICON); 386 EXPECT_EQ(icon_mapping.front().icon_type, favicon_base::TOUCH_ICON);
(...skipping 10 matching lines...) Expand all
292 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_)); 397 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
293 db.BeginTransaction(); 398 db.BeginTransaction();
294 399
295 std::vector<unsigned char> data(kBlob1, kBlob1 + sizeof(kBlob1)); 400 std::vector<unsigned char> data(kBlob1, kBlob1 + sizeof(kBlob1));
296 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); 401 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data));
297 402
298 GURL url("http://google.com"); 403 GURL url("http://google.com");
299 404
300 favicon_base::FaviconID id1 = db.AddFavicon(url, favicon_base::TOUCH_ICON); 405 favicon_base::FaviconID id1 = db.AddFavicon(url, favicon_base::TOUCH_ICON);
301 base::Time time = base::Time::Now(); 406 base::Time time = base::Time::Now();
302 db.AddFaviconBitmap(id1, favicon, time, kSmallSize); 407 db.AddFaviconBitmap(id1, favicon, FaviconBitmapType::ON_VISIT, time,
303 db.AddFaviconBitmap(id1, favicon, time, kLargeSize); 408 kSmallSize);
409 db.AddFaviconBitmap(id1, favicon, FaviconBitmapType::ON_VISIT, time,
410 kLargeSize);
304 EXPECT_LT(0, db.AddIconMapping(url, id1)); 411 EXPECT_LT(0, db.AddIconMapping(url, id1));
305 412
306 favicon_base::FaviconID id2 = db.AddFavicon(url, favicon_base::FAVICON); 413 favicon_base::FaviconID id2 = db.AddFavicon(url, favicon_base::FAVICON);
307 EXPECT_NE(id1, id2); 414 EXPECT_NE(id1, id2);
308 db.AddFaviconBitmap(id2, favicon, time, kSmallSize); 415 db.AddFaviconBitmap(id2, favicon, FaviconBitmapType::ON_VISIT, time,
416 kSmallSize);
309 EXPECT_LT(0, db.AddIconMapping(url, id2)); 417 EXPECT_LT(0, db.AddIconMapping(url, id2));
310 418
311 std::vector<IconMapping> icon_mappings; 419 std::vector<IconMapping> icon_mappings;
312 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mappings)); 420 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mappings));
313 ASSERT_EQ(2u, icon_mappings.size()); 421 ASSERT_EQ(2u, icon_mappings.size());
314 EXPECT_EQ(id1, icon_mappings[0].icon_id); 422 EXPECT_EQ(id1, icon_mappings[0].icon_id);
315 EXPECT_EQ(id2, icon_mappings[1].icon_id); 423 EXPECT_EQ(id2, icon_mappings[1].icon_id);
316 } 424 }
317 425
318 TEST_F(ThumbnailDatabaseTest, RetainDataForPageUrls) { 426 TEST_F(ThumbnailDatabaseTest, RetainDataForPageUrls) {
(...skipping 15 matching lines...) Expand all
334 442
335 // TODO(shess): This would probably make sense as a golden file. 443 // TODO(shess): This would probably make sense as a golden file.
336 444
337 scoped_refptr<base::RefCountedStaticMemory> favicon1( 445 scoped_refptr<base::RefCountedStaticMemory> favicon1(
338 new base::RefCountedStaticMemory(kBlob1, sizeof(kBlob1))); 446 new base::RefCountedStaticMemory(kBlob1, sizeof(kBlob1)));
339 scoped_refptr<base::RefCountedStaticMemory> favicon2( 447 scoped_refptr<base::RefCountedStaticMemory> favicon2(
340 new base::RefCountedStaticMemory(kBlob2, sizeof(kBlob2))); 448 new base::RefCountedStaticMemory(kBlob2, sizeof(kBlob2)));
341 449
342 favicon_base::FaviconID kept_id1 = 450 favicon_base::FaviconID kept_id1 =
343 db.AddFavicon(kIconUrl1, favicon_base::FAVICON); 451 db.AddFavicon(kIconUrl1, favicon_base::FAVICON);
344 db.AddFaviconBitmap(kept_id1, favicon1, base::Time::Now(), kLargeSize); 452 db.AddFaviconBitmap(kept_id1, favicon1, FaviconBitmapType::ON_VISIT,
453 base::Time::Now(), kLargeSize);
345 db.AddIconMapping(kPageUrl1, kept_id1); 454 db.AddIconMapping(kPageUrl1, kept_id1);
346 db.AddIconMapping(kPageUrl3, kept_id1); 455 db.AddIconMapping(kPageUrl3, kept_id1);
347 db.AddIconMapping(kPageUrl4, kept_id1); 456 db.AddIconMapping(kPageUrl4, kept_id1);
348 457
349 favicon_base::FaviconID unkept_id = 458 favicon_base::FaviconID unkept_id =
350 db.AddFavicon(kIconUrl2, favicon_base::FAVICON); 459 db.AddFavicon(kIconUrl2, favicon_base::FAVICON);
351 db.AddFaviconBitmap(unkept_id, favicon1, base::Time::Now(), kLargeSize); 460 db.AddFaviconBitmap(unkept_id, favicon1, FaviconBitmapType::ON_VISIT,
461 base::Time::Now(), kLargeSize);
352 db.AddIconMapping(kPageUrl2, unkept_id); 462 db.AddIconMapping(kPageUrl2, unkept_id);
353 463
354 favicon_base::FaviconID kept_id2 = 464 favicon_base::FaviconID kept_id2 =
355 db.AddFavicon(kIconUrl5, favicon_base::FAVICON); 465 db.AddFavicon(kIconUrl5, favicon_base::FAVICON);
356 db.AddFaviconBitmap(kept_id2, favicon2, base::Time::Now(), kLargeSize); 466 db.AddFaviconBitmap(kept_id2, favicon2, FaviconBitmapType::ON_VISIT,
467 base::Time::Now(), kLargeSize);
357 db.AddIconMapping(kPageUrl5, kept_id2); 468 db.AddIconMapping(kPageUrl5, kept_id2);
358 469
359 // RetainDataForPageUrls() uses schema manipulations for efficiency. 470 // RetainDataForPageUrls() uses schema manipulations for efficiency.
360 // Grab a copy of the schema to make sure the final schema matches. 471 // Grab a copy of the schema to make sure the final schema matches.
361 const std::string original_schema = db.db_.GetSchema(); 472 const std::string original_schema = db.db_.GetSchema();
362 473
363 std::vector<GURL> pages_to_keep; 474 std::vector<GURL> pages_to_keep;
364 pages_to_keep.push_back(kPageUrl1); 475 pages_to_keep.push_back(kPageUrl1);
365 pages_to_keep.push_back(kPageUrl3); 476 pages_to_keep.push_back(kPageUrl3);
366 pages_to_keep.push_back(kPageUrl5); 477 pages_to_keep.push_back(kPageUrl5);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 std::vector<unsigned char> data1(kBlob1, kBlob1 + sizeof(kBlob1)); 543 std::vector<unsigned char> data1(kBlob1, kBlob1 + sizeof(kBlob1));
433 scoped_refptr<base::RefCountedBytes> favicon1( 544 scoped_refptr<base::RefCountedBytes> favicon1(
434 new base::RefCountedBytes(data1)); 545 new base::RefCountedBytes(data1));
435 std::vector<unsigned char> data2(kBlob2, kBlob2 + sizeof(kBlob2)); 546 std::vector<unsigned char> data2(kBlob2, kBlob2 + sizeof(kBlob2));
436 scoped_refptr<base::RefCountedBytes> favicon2( 547 scoped_refptr<base::RefCountedBytes> favicon2(
437 new base::RefCountedBytes(data2)); 548 new base::RefCountedBytes(data2));
438 549
439 GURL url("http://google.com"); 550 GURL url("http://google.com");
440 favicon_base::FaviconID id = db.AddFavicon(url, favicon_base::FAVICON); 551 favicon_base::FaviconID id = db.AddFavicon(url, favicon_base::FAVICON);
441 base::Time last_updated = base::Time::Now(); 552 base::Time last_updated = base::Time::Now();
442 db.AddFaviconBitmap(id, favicon1, last_updated, kSmallSize); 553 db.AddFaviconBitmap(id, favicon1, FaviconBitmapType::ON_VISIT, last_updated,
443 db.AddFaviconBitmap(id, favicon2, last_updated, kLargeSize); 554 kSmallSize);
555 db.AddFaviconBitmap(id, favicon2, FaviconBitmapType::ON_VISIT, last_updated,
556 kLargeSize);
444 557
445 EXPECT_TRUE(db.GetFaviconBitmaps(id, NULL)); 558 EXPECT_TRUE(db.GetFaviconBitmaps(id, NULL));
446 559
447 EXPECT_TRUE(db.DeleteFavicon(id)); 560 EXPECT_TRUE(db.DeleteFavicon(id));
448 EXPECT_FALSE(db.GetFaviconBitmaps(id, NULL)); 561 EXPECT_FALSE(db.GetFaviconBitmaps(id, NULL));
449 } 562 }
450 563
451 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLForReturnOrder) { 564 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLForReturnOrder) {
452 ThumbnailDatabase db(NULL); 565 ThumbnailDatabase db(NULL);
453 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_)); 566 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_));
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after
1071 ThumbnailDatabase db(NULL); 1184 ThumbnailDatabase db(NULL);
1072 ASSERT_EQ(sql::INIT_OK, db.Init(db_path)); 1185 ASSERT_EQ(sql::INIT_OK, db.Init(db_path));
1073 1186
1074 // Verify that the resulting schema is correct, whether it 1187 // Verify that the resulting schema is correct, whether it
1075 // involved razing the file or fixing things in place. 1188 // involved razing the file or fixing things in place.
1076 VerifyTablesAndColumns(&db.db_); 1189 VerifyTablesAndColumns(&db.db_);
1077 } 1190 }
1078 } 1191 }
1079 1192
1080 } // namespace history 1193 } // namespace history
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698