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

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

Issue 10802066: Adds support for saving favicon size into history database. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Changes as requested by Sky and stevenjb Created 8 years, 4 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
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 "chrome/browser/history/thumbnail_database.h" 5 #include "chrome/browser/history/thumbnail_database.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 15 matching lines...) Expand all
26 #include "base/mac/mac_util.h" 26 #include "base/mac/mac_util.h"
27 #endif 27 #endif
28 28
29 static void FillIconMapping(const sql::Statement& statement, 29 static void FillIconMapping(const sql::Statement& statement,
30 const GURL& page_url, 30 const GURL& page_url,
31 history::IconMapping* icon_mapping) { 31 history::IconMapping* icon_mapping) {
32 icon_mapping->mapping_id = statement.ColumnInt64(0); 32 icon_mapping->mapping_id = statement.ColumnInt64(0);
33 icon_mapping->icon_id = statement.ColumnInt64(1); 33 icon_mapping->icon_id = statement.ColumnInt64(1);
34 icon_mapping->icon_type = 34 icon_mapping->icon_type =
35 static_cast<history::IconType>(statement.ColumnInt(2)); 35 static_cast<history::IconType>(statement.ColumnInt(2));
36 icon_mapping->icon_url = GURL(statement.ColumnString(3));
36 icon_mapping->page_url = page_url; 37 icon_mapping->page_url = page_url;
37 } 38 }
38 39
39 namespace history { 40 namespace history {
40 41
41 // Version number of the database. 42 // Version number of the database.
42 static const int kCurrentVersionNumber = 6; 43 static const int kCurrentVersionNumber = 6;
43 static const int kCompatibleVersionNumber = 6; 44 static const int kCompatibleVersionNumber = 6;
44 45
45 // Use 90 quality (out of 100) which is pretty high, because we're very 46 // Use 90 quality (out of 100) which is pretty high, because we're very
46 // sensitive to artifacts for these small sized, highly detailed images. 47 // sensitive to artifacts for these small sized, highly detailed images.
47 static const int kImageQuality = 90; 48 static const int kImageQuality = 90;
48 49
49 ThumbnailDatabase::IconMappingEnumerator::IconMappingEnumerator() { 50 ThumbnailDatabase::IconMappingEnumerator::IconMappingEnumerator() {
50 } 51 }
51 52
52 ThumbnailDatabase::IconMappingEnumerator::~IconMappingEnumerator() { 53 ThumbnailDatabase::IconMappingEnumerator::~IconMappingEnumerator() {
53 } 54 }
54 55
55 bool ThumbnailDatabase::IconMappingEnumerator::GetNextIconMapping( 56 bool ThumbnailDatabase::IconMappingEnumerator::GetNextIconMapping(
56 IconMapping* icon_mapping) { 57 IconMapping* icon_mapping) {
57 if (!statement_.Step()) 58 if (!statement_.Step())
58 return false; 59 return false;
59 FillIconMapping(statement_, GURL(statement_.ColumnString(3)), icon_mapping); 60 FillIconMapping(statement_, GURL(statement_.ColumnString(4)), icon_mapping);
60 return true; 61 return true;
61 } 62 }
62 63
63 ThumbnailDatabase::ThumbnailDatabase() 64 ThumbnailDatabase::ThumbnailDatabase()
64 : history_publisher_(NULL), 65 : history_publisher_(NULL),
65 use_top_sites_(false) { 66 use_top_sites_(false) {
66 } 67 }
67 68
68 sql::InitStatus ThumbnailDatabase::CantUpgradeToVersion(int cur_version) { 69 sql::InitStatus ThumbnailDatabase::CantUpgradeToVersion(int cur_version) {
69 LOG(WARNING) << "Unable to update to thumbnail database to version " << 70 LOG(WARNING) << "Unable to update to thumbnail database to version " <<
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 double current_boring_score = select_statement.ColumnDouble(0); 394 double current_boring_score = select_statement.ColumnDouble(0);
394 bool current_clipping = select_statement.ColumnBool(1); 395 bool current_clipping = select_statement.ColumnBool(1);
395 bool current_at_top = select_statement.ColumnBool(2); 396 bool current_at_top = select_statement.ColumnBool(2);
396 base::Time last_updated = 397 base::Time last_updated =
397 base::Time::FromTimeT(select_statement.ColumnInt64(3)); 398 base::Time::FromTimeT(select_statement.ColumnInt64(3));
398 *score = ThumbnailScore(current_boring_score, current_clipping, 399 *score = ThumbnailScore(current_boring_score, current_clipping,
399 current_at_top, last_updated); 400 current_at_top, last_updated);
400 return true; 401 return true;
401 } 402 }
402 403
404 bool ThumbnailDatabase::GetFaviconBitmapIDSizeListing(
405 FaviconID icon_id,
406 std::vector<FaviconBitmapIDSize>* bitmap_id_size_listing) {
407 DCHECK(icon_id);
408 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE,
409 "SELECT id, width, height FROM favicon_bitmaps WHERE icon_id=?"));
410 statement.BindInt64(0, icon_id);
411
412 while (statement.Step()) {
413 FaviconBitmapIDSize bitmap_id_size;
414 bitmap_id_size.bitmap_id = statement.ColumnInt(0);
415 bitmap_id_size.pixel_size = gfx::Size(statement.ColumnInt(1),
416 statement.ColumnInt(2));
417 bitmap_id_size_listing->push_back(bitmap_id_size);
418 }
419 return !bitmap_id_size_listing->empty();
420 }
421
403 bool ThumbnailDatabase::GetFaviconBitmaps( 422 bool ThumbnailDatabase::GetFaviconBitmaps(
404 FaviconID icon_id, 423 FaviconID icon_id,
405 std::vector<FaviconBitmap>* favicon_bitmaps) { 424 std::vector<FaviconBitmap>* favicon_bitmaps) {
406 DCHECK(icon_id); 425 DCHECK(icon_id);
407 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE, 426 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE,
408 "SELECT id, last_updated, image_data, width, height FROM favicon_bitmaps " 427 "SELECT id, last_updated, image_data, width, height FROM favicon_bitmaps "
409 "WHERE icon_id=?")); 428 "WHERE icon_id=?"));
410 statement.BindInt64(0, icon_id); 429 statement.BindInt64(0, icon_id);
411 430
412 bool result = false; 431 bool result = false;
(...skipping 12 matching lines...) Expand all
425 statement.ColumnBlobAsVector(2, &data->data()); 444 statement.ColumnBlobAsVector(2, &data->data());
426 favicon_bitmap.bitmap_data = data; 445 favicon_bitmap.bitmap_data = data;
427 } 446 }
428 favicon_bitmap.pixel_size = gfx::Size(statement.ColumnInt(3), 447 favicon_bitmap.pixel_size = gfx::Size(statement.ColumnInt(3),
429 statement.ColumnInt(4)); 448 statement.ColumnInt(4));
430 favicon_bitmaps->push_back(favicon_bitmap); 449 favicon_bitmaps->push_back(favicon_bitmap);
431 } 450 }
432 return result; 451 return result;
433 } 452 }
434 453
454 bool ThumbnailDatabase::GetFaviconBitmap(FaviconBitmapID bitmap_id,
455 FaviconBitmap* favicon_bitmap) {
456 DCHECK(bitmap_id);
457 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE,
458 "SELECT icon_id, last_updated, image_data, width, height "
459 "FROM favicon_bitmaps WHERE id=?"));
460 statement.BindInt64(0, bitmap_id);
461
462 if (!statement.Step())
463 return false; // No entry for the id.
464
465 if (favicon_bitmap) {
466 favicon_bitmap->icon_id = statement.ColumnInt64(0);
467 favicon_bitmap->last_updated =
468 base::Time::FromTimeT(statement.ColumnInt64(1));
469 if (statement.ColumnByteLength(2) > 0) {
470 scoped_refptr<base::RefCountedBytes> data = new base::RefCountedBytes();
471 statement.ColumnBlobAsVector(2, &data->data());
472 favicon_bitmap->bitmap_data = data;
473 }
474 favicon_bitmap->pixel_size = gfx::Size(statement.ColumnInt(3),
475 statement.ColumnInt(4));
476 }
477 return true;
478 }
479
435 FaviconBitmapID ThumbnailDatabase::AddFaviconBitmap( 480 FaviconBitmapID ThumbnailDatabase::AddFaviconBitmap(
436 FaviconID icon_id, 481 FaviconID icon_id,
437 scoped_refptr<base::RefCountedMemory> icon_data, 482 scoped_refptr<base::RefCountedMemory> icon_data,
438 base::Time time, 483 base::Time time,
439 const gfx::Size& pixel_size) { 484 const gfx::Size& pixel_size) {
440 DCHECK(icon_id); 485 DCHECK(icon_id);
441 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE, 486 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE,
442 "INSERT INTO favicon_bitmaps (icon_id, image_data, last_updated, width, " 487 "INSERT INTO favicon_bitmaps (icon_id, image_data, last_updated, width, "
443 "height) VALUES (?, ?, ?, ?, ?)")); 488 "height) VALUES (?, ?, ?, ?, ?)"));
444 statement.BindInt64(0, icon_id); 489 statement.BindInt64(0, icon_id);
445 if (icon_data->size()) { 490 if (icon_data->size()) {
446 statement.BindBlob(1, icon_data->front(), 491 statement.BindBlob(1, icon_data->front(),
447 static_cast<int>(icon_data->size())); 492 static_cast<int>(icon_data->size()));
448 } else { 493 } else {
449 statement.BindNull(1); 494 statement.BindNull(1);
450 } 495 }
451 statement.BindInt64(2, time.ToTimeT()); 496 statement.BindInt64(2, time.ToTimeT());
452 statement.BindInt(3, pixel_size.width()); 497 statement.BindInt(3, pixel_size.width());
453 statement.BindInt(4, pixel_size.height()); 498 statement.BindInt(4, pixel_size.height());
454 499
455 if (!statement.Run()) 500 if (!statement.Run())
456 return 0; 501 return 0;
457 return db_.GetLastInsertRowId(); 502 return db_.GetLastInsertRowId();
458 } 503 }
459 504
460 bool ThumbnailDatabase::SetFaviconBitmap( 505 bool ThumbnailDatabase::SetFaviconBitmap(
461 FaviconID icon_id, 506 FaviconBitmapID bitmap_id,
462 scoped_refptr<base::RefCountedMemory> icon_data, 507 scoped_refptr<base::RefCountedMemory> icon_data,
463 base::Time time) { 508 base::Time time) {
464 DCHECK(icon_id); 509 DCHECK(bitmap_id);
465 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE, 510 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE,
466 "UPDATE favicon_bitmaps SET image_data=?, last_updated=? " 511 "UPDATE favicon_bitmaps SET image_data=?, last_updated=? WHERE id=?"));
467 "WHERE icon_id=?"));
468 if (icon_data->size()) { 512 if (icon_data->size()) {
469 statement.BindBlob(0, icon_data->front(), 513 statement.BindBlob(0, icon_data->front(),
470 static_cast<int>(icon_data->size())); 514 static_cast<int>(icon_data->size()));
471 } else { 515 } else {
472 statement.BindNull(0); 516 statement.BindNull(0);
473 } 517 }
474 statement.BindInt64(1, time.ToTimeT()); 518 statement.BindInt64(1, time.ToTimeT());
475 statement.BindInt64(2, icon_id); 519 statement.BindInt64(2, bitmap_id);
476 520
477 return statement.Run(); 521 return statement.Run();
478 } 522 }
479 523
524 bool ThumbnailDatabase::DeleteFaviconBitmap(FaviconBitmapID bitmap_id) {
525 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE,
526 "DELETE FROM favicon_bitmaps WHERE id=?"));
527 statement.BindInt64(0, bitmap_id);
528 return statement.Run();
529 }
530
480 bool ThumbnailDatabase::SetFaviconSizes(FaviconID icon_id, 531 bool ThumbnailDatabase::SetFaviconSizes(FaviconID icon_id,
481 const std::string& sizes) { 532 const std::string& sizes) {
482 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE, 533 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE,
483 "UPDATE favicons SET sizes=? WHERE id=?")); 534 "UPDATE favicons SET sizes=? WHERE id=?"));
484 statement.BindString(0, sizes); 535 statement.BindString(0, sizes);
485 statement.BindInt64(1, icon_id); 536 statement.BindInt64(1, icon_id);
486 537
487 return statement.Run(); 538 return statement.Run();
488 } 539 }
489 540
490 bool ThumbnailDatabase::SetFaviconOutOfDate(FaviconID icon_id) { 541 bool ThumbnailDatabase::SetFaviconOutOfDate(FaviconID icon_id) {
491 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE, 542 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE,
492 "UPDATE favicon_bitmaps SET last_updated=? WHERE icon_id=?")); 543 "UPDATE favicon_bitmaps SET last_updated=? WHERE icon_id=?"));
493 statement.BindInt64(0, 0); 544 statement.BindInt64(0, 0);
494 statement.BindInt64(1, icon_id); 545 statement.BindInt64(1, icon_id);
495 546
496 return statement.Run(); 547 return statement.Run();
497 } 548 }
498 549
499 FaviconID ThumbnailDatabase::GetFaviconIDForFaviconURL(const GURL& icon_url, 550 FaviconID ThumbnailDatabase::GetFaviconIDForFaviconURL(const GURL& icon_url,
500 int required_icon_type, 551 int required_icon_type) {
501 IconType* icon_type) {
502 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE, 552 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE,
503 "SELECT id, icon_type FROM favicons WHERE url=? AND (icon_type & ? > 0) " 553 "SELECT id FROM favicons WHERE url=? AND (icon_type & ? > 0) "
504 "ORDER BY icon_type DESC")); 554 "ORDER BY icon_type DESC"));
505 statement.BindString(0, URLDatabase::GURLToDatabaseURL(icon_url)); 555 statement.BindString(0, URLDatabase::GURLToDatabaseURL(icon_url));
506 statement.BindInt(1, required_icon_type); 556 statement.BindInt(1, required_icon_type);
507 557
508 if (!statement.Step()) 558 if (!statement.Step())
509 return 0; // not cached 559 return 0; // not cached
510
511 if (icon_type)
512 *icon_type = static_cast<IconType>(statement.ColumnInt(1));
513 return statement.ColumnInt64(0); 560 return statement.ColumnInt64(0);
514 } 561 }
515 562
516 bool ThumbnailDatabase::GetFavicon(
517 FaviconID icon_id,
518 base::Time* last_updated,
519 scoped_refptr<base::RefCountedMemory>* png_icon_data,
520 GURL* icon_url,
521 IconType* icon_type) {
522 DCHECK(icon_id);
523
524 std::vector<FaviconBitmap> favicon_bitmaps;
525 if (!GetFaviconBitmaps(icon_id, &favicon_bitmaps))
526 return false;
527
528 if (favicon_bitmaps.size() == 0)
529 return false;
530
531 if (last_updated)
532 *last_updated = favicon_bitmaps[0].last_updated;
533
534 *png_icon_data = favicon_bitmaps[0].bitmap_data;
535
536 return GetFaviconHeader(icon_id, icon_url, icon_type, NULL);
537 }
538
539 bool ThumbnailDatabase::GetFaviconHeader( 563 bool ThumbnailDatabase::GetFaviconHeader(
540 FaviconID icon_id, 564 FaviconID icon_id,
541 GURL* icon_url, 565 GURL* icon_url,
542 IconType* icon_type, 566 IconType* icon_type,
543 std::string* sizes) { 567 std::string* sizes) {
544 DCHECK(icon_id); 568 DCHECK(icon_id);
545 569
546 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE, 570 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE,
547 "SELECT url, icon_type, sizes FROM favicons WHERE id=?")); 571 "SELECT url, icon_type, sizes FROM favicons WHERE id=?"));
548 statement.BindInt64(0, icon_id); 572 statement.BindInt64(0, icon_id);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 statement.BindInt64(0, id); 620 statement.BindInt64(0, id);
597 if (!statement.Run()) 621 if (!statement.Run())
598 return false; 622 return false;
599 623
600 statement.Assign(db_.GetCachedStatement(SQL_FROM_HERE, 624 statement.Assign(db_.GetCachedStatement(SQL_FROM_HERE,
601 "DELETE FROM favicon_bitmaps WHERE icon_id = ?")); 625 "DELETE FROM favicon_bitmaps WHERE icon_id = ?"));
602 statement.BindInt64(0, id); 626 statement.BindInt64(0, id);
603 return statement.Run(); 627 return statement.Run();
604 } 628 }
605 629
606 bool ThumbnailDatabase::GetIconMappingForPageURL(const GURL& page_url, 630 bool ThumbnailDatabase::GetIconMappingsForPageURL(
607 IconType required_icon_type, 631 const GURL& page_url,
608 IconMapping* icon_mapping) { 632 int required_icon_types,
609 std::vector<IconMapping> icon_mappings; 633 std::vector<IconMapping>* filtered_mapping_data) {
610 if (!GetIconMappingsForPageURL(page_url, &icon_mappings)) 634 std::vector<IconMapping> mapping_data;
635 if (!GetIconMappingsForPageURL(page_url, &mapping_data))
611 return false; 636 return false;
612 637
613 for (std::vector<IconMapping>::iterator m = icon_mappings.begin(); 638 bool result = false;
614 m != icon_mappings.end(); ++m) { 639 for (std::vector<IconMapping>::iterator m = mapping_data.begin();
615 if (m->icon_type == required_icon_type) { 640 m != mapping_data.end(); ++m) {
616 if (icon_mapping != NULL) 641 if (m->icon_type & required_icon_types) {
617 *icon_mapping = *m; 642 result = true;
618 return true; 643 if (filtered_mapping_data == NULL)
644 return result;
645 filtered_mapping_data->push_back(*m);
619 } 646 }
620 } 647 }
621 648 return result;
622 return false;
623 } 649 }
624 650
625 bool ThumbnailDatabase::GetIconMappingsForPageURL( 651 bool ThumbnailDatabase::GetIconMappingsForPageURL(
626 const GURL& page_url, 652 const GURL& page_url,
627 std::vector<IconMapping>* mapping_data) { 653 std::vector<IconMapping>* mapping_data) {
628 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE, 654 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE,
629 "SELECT icon_mapping.id, icon_mapping.icon_id, favicons.icon_type " 655 "SELECT icon_mapping.id, icon_mapping.icon_id, favicons.icon_type, "
656 "favicons.url "
630 "FROM icon_mapping " 657 "FROM icon_mapping "
631 "INNER JOIN favicons " 658 "INNER JOIN favicons "
632 "ON icon_mapping.icon_id = favicons.id " 659 "ON icon_mapping.icon_id = favicons.id "
633 "WHERE icon_mapping.page_url=? " 660 "WHERE icon_mapping.page_url=? "
634 "ORDER BY favicons.icon_type DESC")); 661 "ORDER BY favicons.icon_type DESC"));
635 statement.BindString(0, URLDatabase::GURLToDatabaseURL(page_url)); 662 statement.BindString(0, URLDatabase::GURLToDatabaseURL(page_url));
636 663
637 bool result = false; 664 bool result = false;
638 while (statement.Step()) { 665 while (statement.Step()) {
639 result = true; 666 result = true;
(...skipping 23 matching lines...) Expand all
663 } 690 }
664 691
665 bool ThumbnailDatabase::DeleteIconMappings(const GURL& page_url) { 692 bool ThumbnailDatabase::DeleteIconMappings(const GURL& page_url) {
666 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE, 693 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE,
667 "DELETE FROM icon_mapping WHERE page_url = ?")); 694 "DELETE FROM icon_mapping WHERE page_url = ?"));
668 statement.BindString(0, URLDatabase::GURLToDatabaseURL(page_url)); 695 statement.BindString(0, URLDatabase::GURLToDatabaseURL(page_url));
669 696
670 return statement.Run(); 697 return statement.Run();
671 } 698 }
672 699
700 bool ThumbnailDatabase::DeleteIconMapping(IconMappingID mapping_id) {
701 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE,
702 "DELETE FROM icon_mapping WHERE id=?"));
703 statement.BindInt64(0, mapping_id);
704
705 return statement.Run();
706 }
707
673 bool ThumbnailDatabase::HasMappingFor(FaviconID id) { 708 bool ThumbnailDatabase::HasMappingFor(FaviconID id) {
674 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE, 709 sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE,
675 "SELECT id FROM icon_mapping " 710 "SELECT id FROM icon_mapping "
676 "WHERE icon_id=?")); 711 "WHERE icon_id=?"));
677 statement.BindInt64(0, id); 712 statement.BindInt64(0, id);
678 713
679 return statement.Step(); 714 return statement.Step();
680 } 715 }
681 716
682 bool ThumbnailDatabase::CloneIconMapping(const GURL& old_page_url, 717 bool ThumbnailDatabase::CloneIconMapping(const GURL& old_page_url,
(...skipping 19 matching lines...) Expand all
702 return statement.Run(); 737 return statement.Run();
703 } 738 }
704 739
705 bool ThumbnailDatabase::InitIconMappingEnumerator( 740 bool ThumbnailDatabase::InitIconMappingEnumerator(
706 IconType type, 741 IconType type,
707 IconMappingEnumerator* enumerator) { 742 IconMappingEnumerator* enumerator) {
708 DCHECK(!enumerator->statement_.is_valid()); 743 DCHECK(!enumerator->statement_.is_valid());
709 enumerator->statement_.Assign(db_.GetCachedStatement( 744 enumerator->statement_.Assign(db_.GetCachedStatement(
710 SQL_FROM_HERE, 745 SQL_FROM_HERE,
711 "SELECT icon_mapping.id, icon_mapping.icon_id, favicons.icon_type, " 746 "SELECT icon_mapping.id, icon_mapping.icon_id, favicons.icon_type, "
712 "icon_mapping.page_url " 747 "favicons.url, icon_mapping.page_url "
713 "FROM icon_mapping JOIN favicons ON (" 748 "FROM icon_mapping JOIN favicons ON ("
714 "icon_mapping.icon_id = favicons.id) " 749 "icon_mapping.icon_id = favicons.id) "
715 "WHERE favicons.icon_type = ?")); 750 "WHERE favicons.icon_type = ?"));
716 enumerator->statement_.BindInt(0, type); 751 enumerator->statement_.BindInt(0, type);
717 return enumerator->statement_.is_valid(); 752 return enumerator->statement_.is_valid();
718 } 753 }
719 754
720 bool ThumbnailDatabase::MigrateIconMappingData(URLDatabase* url_db) { 755 bool ThumbnailDatabase::MigrateIconMappingData(URLDatabase* url_db) {
721 URLDatabase::IconMappingEnumerator e; 756 URLDatabase::IconMappingEnumerator e;
722 if (!url_db->InitIconMappingEnumeratorForEverything(&e)) 757 if (!url_db->InitIconMappingEnumeratorForEverything(&e))
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
972 "SELECT id, url, icon_type FROM favicons") && 1007 "SELECT id, url, icon_type FROM favicons") &&
973 db_.Execute("DROP TABLE favicons") && 1008 db_.Execute("DROP TABLE favicons") &&
974 db_.Execute("ALTER TABLE temp_favicons RENAME TO favicons"); 1009 db_.Execute("ALTER TABLE temp_favicons RENAME TO favicons");
975 1010
976 meta_table_.SetVersionNumber(6); 1011 meta_table_.SetVersionNumber(6);
977 meta_table_.SetCompatibleVersionNumber(std::min(6, kCompatibleVersionNumber)); 1012 meta_table_.SetCompatibleVersionNumber(std::min(6, kCompatibleVersionNumber));
978 return success; 1013 return success;
979 } 1014 }
980 1015
981 } // namespace history 1016 } // namespace history
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698