| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/sync_file_system/drive_backend/metadata_database.h" | 5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <stack> | 8 #include <stack> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 base::ThreadRestrictions::AssertIOAllowed(); | 209 base::ThreadRestrictions::AssertIOAllowed(); |
| 210 DCHECK(db_out); | 210 DCHECK(db_out); |
| 211 DCHECK(created); | 211 DCHECK(created); |
| 212 DCHECK(path.IsAbsolute()); | 212 DCHECK(path.IsAbsolute()); |
| 213 | 213 |
| 214 leveldb::Options options; | 214 leveldb::Options options; |
| 215 options.max_open_files = 0; // Use minimum. | 215 options.max_open_files = 0; // Use minimum. |
| 216 options.create_if_missing = true; | 216 options.create_if_missing = true; |
| 217 if (env_override) | 217 if (env_override) |
| 218 options.env = env_override; | 218 options.env = env_override; |
| 219 leveldb::DB* db = NULL; | 219 leveldb::DB* db = nullptr; |
| 220 leveldb::Status db_status = | 220 leveldb::Status db_status = |
| 221 leveldb::DB::Open(options, path.AsUTF8Unsafe(), &db); | 221 leveldb::DB::Open(options, path.AsUTF8Unsafe(), &db); |
| 222 SyncStatusCode status = LevelDBStatusToSyncStatusCode(db_status); | 222 SyncStatusCode status = LevelDBStatusToSyncStatusCode(db_status); |
| 223 if (status != SYNC_STATUS_OK) { | 223 if (status != SYNC_STATUS_OK) { |
| 224 delete db; | 224 delete db; |
| 225 return status; | 225 return status; |
| 226 } | 226 } |
| 227 | 227 |
| 228 db_out->reset(new LevelDBWrapper(make_scoped_ptr(db))); | 228 db_out->reset(new LevelDBWrapper(make_scoped_ptr(db))); |
| 229 *created = IsDatabaseEmpty(db_out->get()); | 229 *created = IsDatabaseEmpty(db_out->get()); |
| (...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 559 } | 559 } |
| 560 | 560 |
| 561 // static | 561 // static |
| 562 SyncStatusCode MetadataDatabase::CreateForTesting( | 562 SyncStatusCode MetadataDatabase::CreateForTesting( |
| 563 scoped_ptr<LevelDBWrapper> db, | 563 scoped_ptr<LevelDBWrapper> db, |
| 564 bool enable_on_disk_index, | 564 bool enable_on_disk_index, |
| 565 scoped_ptr<MetadataDatabase>* metadata_database_out) { | 565 scoped_ptr<MetadataDatabase>* metadata_database_out) { |
| 566 scoped_ptr<MetadataDatabase> metadata_database( | 566 scoped_ptr<MetadataDatabase> metadata_database( |
| 567 new MetadataDatabase(base::FilePath(), | 567 new MetadataDatabase(base::FilePath(), |
| 568 enable_on_disk_index, | 568 enable_on_disk_index, |
| 569 NULL)); | 569 nullptr)); |
| 570 metadata_database->db_ = db.Pass(); | 570 metadata_database->db_ = db.Pass(); |
| 571 SyncStatusCode status = metadata_database->Initialize(); | 571 SyncStatusCode status = metadata_database->Initialize(); |
| 572 if (status == SYNC_STATUS_OK) | 572 if (status == SYNC_STATUS_OK) |
| 573 *metadata_database_out = metadata_database.Pass(); | 573 *metadata_database_out = metadata_database.Pass(); |
| 574 return status; | 574 return status; |
| 575 } | 575 } |
| 576 | 576 |
| 577 MetadataDatabase::~MetadataDatabase() { | 577 MetadataDatabase::~MetadataDatabase() { |
| 578 } | 578 } |
| 579 | 579 |
| (...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 933 CreateDeletedFileMetadata(GetLargestKnownChangeID(), *itr)); | 933 CreateDeletedFileMetadata(GetLargestKnownChangeID(), *itr)); |
| 934 UpdateByFileMetadata(FROM_HERE, metadata.Pass(), | 934 UpdateByFileMetadata(FROM_HERE, metadata.Pass(), |
| 935 UPDATE_TRACKER_FOR_UNSYNCED_FILE); | 935 UPDATE_TRACKER_FOR_UNSYNCED_FILE); |
| 936 } | 936 } |
| 937 return WriteToDatabase(); | 937 return WriteToDatabase(); |
| 938 } | 938 } |
| 939 | 939 |
| 940 SyncStatusCode MetadataDatabase::ReplaceActiveTrackerWithNewResource( | 940 SyncStatusCode MetadataDatabase::ReplaceActiveTrackerWithNewResource( |
| 941 int64 parent_tracker_id, | 941 int64 parent_tracker_id, |
| 942 const google_apis::FileResource& resource) { | 942 const google_apis::FileResource& resource) { |
| 943 DCHECK(!index_->GetFileMetadata(resource.file_id(), NULL)); | 943 DCHECK(!index_->GetFileMetadata(resource.file_id(), nullptr)); |
| 944 DCHECK(index_->GetFileTracker(parent_tracker_id, NULL)); | 944 DCHECK(index_->GetFileTracker(parent_tracker_id, nullptr)); |
| 945 | 945 |
| 946 UpdateByFileMetadata( | 946 UpdateByFileMetadata( |
| 947 FROM_HERE, | 947 FROM_HERE, |
| 948 CreateFileMetadataFromFileResource(GetLargestKnownChangeID(), resource), | 948 CreateFileMetadataFromFileResource(GetLargestKnownChangeID(), resource), |
| 949 UPDATE_TRACKER_FOR_SYNCED_FILE); | 949 UPDATE_TRACKER_FOR_SYNCED_FILE); |
| 950 | 950 |
| 951 DCHECK(index_->GetFileMetadata(resource.file_id(), NULL)); | 951 DCHECK(index_->GetFileMetadata(resource.file_id(), nullptr)); |
| 952 DCHECK(!index_->GetFileTrackerIDsByFileID(resource.file_id()).has_active()); | 952 DCHECK(!index_->GetFileTrackerIDsByFileID(resource.file_id()).has_active()); |
| 953 | 953 |
| 954 TrackerIDSet same_path_trackers = | 954 TrackerIDSet same_path_trackers = |
| 955 index_->GetFileTrackerIDsByParentAndTitle( | 955 index_->GetFileTrackerIDsByParentAndTitle( |
| 956 parent_tracker_id, resource.title()); | 956 parent_tracker_id, resource.title()); |
| 957 FileTracker to_be_activated; | 957 FileTracker to_be_activated; |
| 958 if (!FilterFileTrackersByFileID(index_.get(), same_path_trackers, | 958 if (!FilterFileTrackersByFileID(index_.get(), same_path_trackers, |
| 959 resource.file_id(), &to_be_activated)) { | 959 resource.file_id(), &to_be_activated)) { |
| 960 NOTREACHED(); | 960 NOTREACHED(); |
| 961 return SYNC_STATUS_FAILED; | 961 return SYNC_STATUS_FAILED; |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1070 } else { | 1070 } else { |
| 1071 // Check if any other tracker exists has the same parent, title and | 1071 // Check if any other tracker exists has the same parent, title and |
| 1072 // file_id to the updated tracker. If it exists, delete the tracker being | 1072 // file_id to the updated tracker. If it exists, delete the tracker being |
| 1073 // updated. | 1073 // updated. |
| 1074 if (FilterFileTrackersByFileID( | 1074 if (FilterFileTrackersByFileID( |
| 1075 index_.get(), | 1075 index_.get(), |
| 1076 index_->GetFileTrackerIDsByParentAndTitle( | 1076 index_->GetFileTrackerIDsByParentAndTitle( |
| 1077 parent_tracker.tracker_id(), | 1077 parent_tracker.tracker_id(), |
| 1078 updated_details.title()), | 1078 updated_details.title()), |
| 1079 tracker.file_id(), | 1079 tracker.file_id(), |
| 1080 NULL)) { | 1080 nullptr)) { |
| 1081 RemoveFileTracker(tracker.tracker_id(), | 1081 RemoveFileTracker(tracker.tracker_id(), |
| 1082 MARK_NOTHING_DIRTY, | 1082 MARK_NOTHING_DIRTY, |
| 1083 index_.get()); | 1083 index_.get()); |
| 1084 return WriteToDatabase(); | 1084 return WriteToDatabase(); |
| 1085 } | 1085 } |
| 1086 } | 1086 } |
| 1087 } | 1087 } |
| 1088 | 1088 |
| 1089 scoped_ptr<FileTracker> updated_tracker = CloneFileTracker(&tracker); | 1089 scoped_ptr<FileTracker> updated_tracker = CloneFileTracker(&tracker); |
| 1090 *updated_tracker->mutable_synced_details() = updated_details; | 1090 *updated_tracker->mutable_synced_details() = updated_details; |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1341 return status; | 1341 return status; |
| 1342 | 1342 |
| 1343 UpdateLargestKnownChangeID(index_->GetLargestChangeID()); | 1343 UpdateLargestKnownChangeID(index_->GetLargestChangeID()); |
| 1344 | 1344 |
| 1345 return status; | 1345 return status; |
| 1346 } | 1346 } |
| 1347 | 1347 |
| 1348 void MetadataDatabase::CreateTrackerForParentAndFileID( | 1348 void MetadataDatabase::CreateTrackerForParentAndFileID( |
| 1349 const FileTracker& parent_tracker, | 1349 const FileTracker& parent_tracker, |
| 1350 const std::string& file_id) { | 1350 const std::string& file_id) { |
| 1351 CreateTrackerInternal(parent_tracker, file_id, NULL, | 1351 CreateTrackerInternal(parent_tracker, file_id, nullptr, |
| 1352 UPDATE_TRACKER_FOR_UNSYNCED_FILE); | 1352 UPDATE_TRACKER_FOR_UNSYNCED_FILE); |
| 1353 } | 1353 } |
| 1354 | 1354 |
| 1355 void MetadataDatabase::CreateTrackerForParentAndFileMetadata( | 1355 void MetadataDatabase::CreateTrackerForParentAndFileMetadata( |
| 1356 const FileTracker& parent_tracker, | 1356 const FileTracker& parent_tracker, |
| 1357 const FileMetadata& file_metadata, | 1357 const FileMetadata& file_metadata, |
| 1358 UpdateOption option) { | 1358 UpdateOption option) { |
| 1359 DCHECK(file_metadata.has_details()); | 1359 DCHECK(file_metadata.has_details()); |
| 1360 CreateTrackerInternal(parent_tracker, | 1360 CreateTrackerInternal(parent_tracker, |
| 1361 file_metadata.file_id(), | 1361 file_metadata.file_id(), |
| (...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1791 return false; | 1791 return false; |
| 1792 | 1792 |
| 1793 if (!parents.empty()) | 1793 if (!parents.empty()) |
| 1794 return false; | 1794 return false; |
| 1795 | 1795 |
| 1796 return true; | 1796 return true; |
| 1797 } | 1797 } |
| 1798 | 1798 |
| 1799 } // namespace drive_backend | 1799 } // namespace drive_backend |
| 1800 } // namespace sync_file_system | 1800 } // namespace sync_file_system |
| OLD | NEW |