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 "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/bind.h" | 10 #include "base/bind.h" |
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
524 "INSERT OR REPLACE INTO main.favicons " | 524 "INSERT OR REPLACE INTO main.favicons " |
525 "SELECT id, url, COALESCE(icon_type, 1) FROM recover_favicons"; | 525 "SELECT id, url, COALESCE(icon_type, 1) FROM recover_favicons"; |
526 if (!recovery->db()->Execute(kCopySql)) { | 526 if (!recovery->db()->Execute(kCopySql)) { |
527 // TODO(shess): The recover_favicons table should mask problems | 527 // TODO(shess): The recover_favicons table should mask problems |
528 // with the source file, so this implies failure to write to the | 528 // with the source file, so this implies failure to write to the |
529 // recovery database. | 529 // recovery database. |
530 sql::Recovery::Rollback(recovery.Pass()); | 530 sql::Recovery::Rollback(recovery.Pass()); |
531 RecordRecoveryEvent(RECOVERY_EVENT_FAILED_FAVICONS_INSERT); | 531 RecordRecoveryEvent(RECOVERY_EVENT_FAILED_FAVICONS_INSERT); |
532 return; | 532 return; |
533 } | 533 } |
| 534 favicons_rows_recovered = recovery->db()->GetLastChangeCount(); |
534 } | 535 } |
535 | 536 |
536 // Setup favicons_bitmaps table. | 537 // Setup favicons_bitmaps table. |
537 { | 538 { |
538 const char kRecoverySql[] = | 539 const char kRecoverySql[] = |
539 "CREATE VIRTUAL TABLE temp.recover_favicons_bitmaps USING recover" | 540 "CREATE VIRTUAL TABLE temp.recover_favicons_bitmaps USING recover" |
540 "(" | 541 "(" |
541 "corrupt.favicon_bitmaps," | 542 "corrupt.favicon_bitmaps," |
542 "id ROWID," | 543 "id ROWID," |
543 "icon_id INTEGER STRICT NOT NULL," | 544 "icon_id INTEGER STRICT NOT NULL," |
(...skipping 16 matching lines...) Expand all Loading... |
560 " COALESCE(width, 0), COALESCE(height, 0) " | 561 " COALESCE(width, 0), COALESCE(height, 0) " |
561 "FROM recover_favicons_bitmaps"; | 562 "FROM recover_favicons_bitmaps"; |
562 if (!recovery->db()->Execute(kCopySql)) { | 563 if (!recovery->db()->Execute(kCopySql)) { |
563 // TODO(shess): The recover_faviconbitmaps table should mask | 564 // TODO(shess): The recover_faviconbitmaps table should mask |
564 // problems with the source file, so this implies failure to | 565 // problems with the source file, so this implies failure to |
565 // write to the recovery database. | 566 // write to the recovery database. |
566 sql::Recovery::Rollback(recovery.Pass()); | 567 sql::Recovery::Rollback(recovery.Pass()); |
567 RecordRecoveryEvent(RECOVERY_EVENT_FAILED_FAVICON_BITMAPS_INSERT); | 568 RecordRecoveryEvent(RECOVERY_EVENT_FAILED_FAVICON_BITMAPS_INSERT); |
568 return; | 569 return; |
569 } | 570 } |
| 571 favicon_bitmaps_rows_recovered = recovery->db()->GetLastChangeCount(); |
570 } | 572 } |
571 | 573 |
572 // Setup icon_mapping table. | 574 // Setup icon_mapping table. |
573 { | 575 { |
574 const char kRecoverySql[] = | 576 const char kRecoverySql[] = |
575 "CREATE VIRTUAL TABLE temp.recover_icon_mapping USING recover" | 577 "CREATE VIRTUAL TABLE temp.recover_icon_mapping USING recover" |
576 "(" | 578 "(" |
577 "corrupt.icon_mapping," | 579 "corrupt.icon_mapping," |
578 "id ROWID," | 580 "id ROWID," |
579 "page_url TEXT STRICT NOT NULL," | 581 "page_url TEXT STRICT NOT NULL," |
(...skipping 11 matching lines...) Expand all Loading... |
591 "INSERT OR REPLACE INTO main.icon_mapping " | 593 "INSERT OR REPLACE INTO main.icon_mapping " |
592 "SELECT id, page_url, icon_id FROM recover_icon_mapping"; | 594 "SELECT id, page_url, icon_id FROM recover_icon_mapping"; |
593 if (!recovery->db()->Execute(kCopySql)) { | 595 if (!recovery->db()->Execute(kCopySql)) { |
594 // TODO(shess): The recover_icon_mapping table should mask | 596 // TODO(shess): The recover_icon_mapping table should mask |
595 // problems with the source file, so this implies failure to | 597 // problems with the source file, so this implies failure to |
596 // write to the recovery database. | 598 // write to the recovery database. |
597 sql::Recovery::Rollback(recovery.Pass()); | 599 sql::Recovery::Rollback(recovery.Pass()); |
598 RecordRecoveryEvent(RECOVERY_EVENT_FAILED_ICON_MAPPING_INSERT); | 600 RecordRecoveryEvent(RECOVERY_EVENT_FAILED_ICON_MAPPING_INSERT); |
599 return; | 601 return; |
600 } | 602 } |
| 603 icon_mapping_rows_recovered = recovery->db()->GetLastChangeCount(); |
601 } | 604 } |
602 | 605 |
603 // TODO(shess): Is it possible/likely to have broken foreign-key | 606 // TODO(shess): Is it possible/likely to have broken foreign-key |
604 // issues with the tables? | 607 // issues with the tables? |
605 // - icon_mapping.icon_id maps to no favicons.id | 608 // - icon_mapping.icon_id maps to no favicons.id |
606 // - favicon_bitmaps.icon_id maps to no favicons.id | 609 // - favicon_bitmaps.icon_id maps to no favicons.id |
607 // - favicons.id is referenced by no icon_mapping.icon_id | 610 // - favicons.id is referenced by no icon_mapping.icon_id |
608 // - favicons.id is referenced by no favicon_bitmaps.icon_id | 611 // - favicons.id is referenced by no favicon_bitmaps.icon_id |
609 // This step is possibly not worth the effort necessary to develop | 612 // This step is possibly not worth the effort necessary to develop |
610 // and sequence the statements, as it is basically a form of garbage | 613 // and sequence the statements, as it is basically a form of garbage |
(...skipping 807 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1418 meta_table_.SetVersionNumber(7); | 1421 meta_table_.SetVersionNumber(7); |
1419 meta_table_.SetCompatibleVersionNumber(std::min(7, kCompatibleVersionNumber)); | 1422 meta_table_.SetCompatibleVersionNumber(std::min(7, kCompatibleVersionNumber)); |
1420 return true; | 1423 return true; |
1421 } | 1424 } |
1422 | 1425 |
1423 bool ThumbnailDatabase::IsFaviconDBStructureIncorrect() { | 1426 bool ThumbnailDatabase::IsFaviconDBStructureIncorrect() { |
1424 return !db_.IsSQLValid("SELECT id, url, icon_type FROM favicons"); | 1427 return !db_.IsSQLValid("SELECT id, url, icon_type FROM favicons"); |
1425 } | 1428 } |
1426 | 1429 |
1427 } // namespace history | 1430 } // namespace history |
OLD | NEW |