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 |