| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "components/sync/syncable/directory_backing_store.h" | 5 #include "components/sync/syncable/directory_backing_store.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <limits> | 10 #include <limits> |
| (...skipping 663 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 674 | 674 |
| 675 int64_t handle = kernel->ref(META_HANDLE); | 675 int64_t handle = kernel->ref(META_HANDLE); |
| 676 if (SafeToPurgeOnLoading(*kernel)) { | 676 if (SafeToPurgeOnLoading(*kernel)) { |
| 677 metahandles_to_purge->insert(handle); | 677 metahandles_to_purge->insert(handle); |
| 678 } else { | 678 } else { |
| 679 ModelType model_type = kernel->GetModelType(); | 679 ModelType model_type = kernel->GetModelType(); |
| 680 if (!IsRealDataType(model_type)) { | 680 if (!IsRealDataType(model_type)) { |
| 681 model_type = kernel->GetServerModelType(); | 681 model_type = kernel->GetServerModelType(); |
| 682 } | 682 } |
| 683 ++model_type_entry_count[model_type]; | 683 ++model_type_entry_count[model_type]; |
| 684 (*handles_map)[handle] = kernel.release(); | 684 (*handles_map)[handle] = std::move(kernel); |
| 685 } | 685 } |
| 686 } | 686 } |
| 687 | 687 |
| 688 UploadModelTypeEntryCount(total_specifics_copies, model_type_entry_count); | 688 UploadModelTypeEntryCount(total_specifics_copies, model_type_entry_count); |
| 689 | 689 |
| 690 return s.Succeeded(); | 690 return s.Succeeded(); |
| 691 } | 691 } |
| 692 | 692 |
| 693 bool DirectoryBackingStore::SafeToPurgeOnLoading( | 693 bool DirectoryBackingStore::SafeToPurgeOnLoading( |
| 694 const EntryKernel& entry) const { | 694 const EntryKernel& entry) const { |
| (...skipping 949 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1644 // whose PARENT_ID values refer to ID values that do not actually exist. | 1644 // whose PARENT_ID values refer to ID values that do not actually exist. |
| 1645 // Returns true on success. | 1645 // Returns true on success. |
| 1646 bool DirectoryBackingStore::VerifyReferenceIntegrity( | 1646 bool DirectoryBackingStore::VerifyReferenceIntegrity( |
| 1647 const Directory::MetahandlesMap* handles_map) { | 1647 const Directory::MetahandlesMap* handles_map) { |
| 1648 TRACE_EVENT0("sync", "SyncDatabaseIntegrityCheck"); | 1648 TRACE_EVENT0("sync", "SyncDatabaseIntegrityCheck"); |
| 1649 typedef std::unordered_set<std::string> IdsSet; | 1649 typedef std::unordered_set<std::string> IdsSet; |
| 1650 | 1650 |
| 1651 IdsSet ids_set; | 1651 IdsSet ids_set; |
| 1652 bool is_ok = true; | 1652 bool is_ok = true; |
| 1653 | 1653 |
| 1654 for (Directory::MetahandlesMap::const_iterator it = handles_map->begin(); | 1654 for (auto it = handles_map->begin(); it != handles_map->end(); ++it) { |
| 1655 it != handles_map->end(); ++it) { | 1655 EntryKernel* entry = it->second.get(); |
| 1656 EntryKernel* entry = it->second; | |
| 1657 bool is_duplicate_id = !(ids_set.insert(entry->ref(ID).value()).second); | 1656 bool is_duplicate_id = !(ids_set.insert(entry->ref(ID).value()).second); |
| 1658 is_ok = is_ok && !is_duplicate_id; | 1657 is_ok = is_ok && !is_duplicate_id; |
| 1659 } | 1658 } |
| 1660 | 1659 |
| 1661 IdsSet::iterator end = ids_set.end(); | 1660 IdsSet::iterator end = ids_set.end(); |
| 1662 for (Directory::MetahandlesMap::const_iterator it = handles_map->begin(); | 1661 for (auto it = handles_map->begin(); it != handles_map->end(); ++it) { |
| 1663 it != handles_map->end(); ++it) { | 1662 EntryKernel* entry = it->second.get(); |
| 1664 EntryKernel* entry = it->second; | |
| 1665 if (!entry->ref(PARENT_ID).IsNull()) { | 1663 if (!entry->ref(PARENT_ID).IsNull()) { |
| 1666 bool parent_exists = (ids_set.find(entry->ref(PARENT_ID).value()) != end); | 1664 bool parent_exists = (ids_set.find(entry->ref(PARENT_ID).value()) != end); |
| 1667 if (!parent_exists) { | 1665 if (!parent_exists) { |
| 1668 return false; | 1666 return false; |
| 1669 } | 1667 } |
| 1670 } | 1668 } |
| 1671 } | 1669 } |
| 1672 return is_ok; | 1670 return is_ok; |
| 1673 } | 1671 } |
| 1674 | 1672 |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1761 DCHECK(CalledOnValidThread()); | 1759 DCHECK(CalledOnValidThread()); |
| 1762 DCHECK(!catastrophic_error_handler.is_null()); | 1760 DCHECK(!catastrophic_error_handler.is_null()); |
| 1763 catastrophic_error_handler_ = catastrophic_error_handler; | 1761 catastrophic_error_handler_ = catastrophic_error_handler; |
| 1764 sql::Connection::ErrorCallback error_callback = | 1762 sql::Connection::ErrorCallback error_callback = |
| 1765 base::Bind(&OnSqliteError, catastrophic_error_handler_); | 1763 base::Bind(&OnSqliteError, catastrophic_error_handler_); |
| 1766 db_->set_error_callback(error_callback); | 1764 db_->set_error_callback(error_callback); |
| 1767 } | 1765 } |
| 1768 | 1766 |
| 1769 } // namespace syncable | 1767 } // namespace syncable |
| 1770 } // namespace syncer | 1768 } // namespace syncer |
| OLD | NEW |