| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_index.
h" | 5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database_index.
h" |
| 6 | 6 |
| 7 #include <tuple> | 7 #include <tuple> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 MetadataDatabaseIndex::~MetadataDatabaseIndex() {} | 255 MetadataDatabaseIndex::~MetadataDatabaseIndex() {} |
| 256 | 256 |
| 257 void MetadataDatabaseIndex::RemoveUnreachableItems() { | 257 void MetadataDatabaseIndex::RemoveUnreachableItems() { |
| 258 // Do nothing. MetadataDatabaseIndex is behind a private flag and will be | 258 // Do nothing. MetadataDatabaseIndex is behind a private flag and will be |
| 259 // removed soon. | 259 // removed soon. |
| 260 // TODO(crbug.com/568008): Remove MetadataDatabaseIndex. | 260 // TODO(crbug.com/568008): Remove MetadataDatabaseIndex. |
| 261 } | 261 } |
| 262 | 262 |
| 263 bool MetadataDatabaseIndex::GetFileMetadata( | 263 bool MetadataDatabaseIndex::GetFileMetadata( |
| 264 const std::string& file_id, FileMetadata* metadata) const { | 264 const std::string& file_id, FileMetadata* metadata) const { |
| 265 FileMetadata* identified = metadata_by_id_.get(file_id); | 265 auto it = metadata_by_id_.find(file_id); |
| 266 if (!identified) | 266 if (it == metadata_by_id_.end()) |
| 267 return false; | 267 return false; |
| 268 FileMetadata* identified = it->second.get(); |
| 268 if (metadata) | 269 if (metadata) |
| 269 metadata->CopyFrom(*identified); | 270 metadata->CopyFrom(*identified); |
| 270 return true; | 271 return true; |
| 271 } | 272 } |
| 272 | 273 |
| 273 bool MetadataDatabaseIndex::GetFileTracker(int64_t tracker_id, | 274 bool MetadataDatabaseIndex::GetFileTracker(int64_t tracker_id, |
| 274 FileTracker* tracker) const { | 275 FileTracker* tracker) const { |
| 275 FileTracker* identified = tracker_by_id_.get(tracker_id); | 276 auto it = tracker_by_id_.find(tracker_id); |
| 276 if (!identified) | 277 if (it == tracker_by_id_.end()) |
| 277 return false; | 278 return false; |
| 279 FileTracker* identified = it->second.get(); |
| 278 if (tracker) | 280 if (tracker) |
| 279 tracker->CopyFrom(*identified); | 281 tracker->CopyFrom(*identified); |
| 280 return true; | 282 return true; |
| 281 } | 283 } |
| 282 | 284 |
| 283 void MetadataDatabaseIndex::StoreFileMetadata( | 285 void MetadataDatabaseIndex::StoreFileMetadata( |
| 284 std::unique_ptr<FileMetadata> metadata) { | 286 std::unique_ptr<FileMetadata> metadata) { |
| 285 PutFileMetadataToDB(*metadata.get(), db_); | 287 PutFileMetadataToDB(*metadata.get(), db_); |
| 286 if (!metadata) { | 288 if (!metadata) { |
| 287 NOTREACHED(); | 289 NOTREACHED(); |
| 288 return; | 290 return; |
| 289 } | 291 } |
| 290 | 292 |
| 291 std::string file_id = metadata->file_id(); | 293 std::string file_id = metadata->file_id(); |
| 292 metadata_by_id_.set(file_id, std::move(metadata)); | 294 metadata_by_id_[file_id] = std::move(metadata); |
| 293 } | 295 } |
| 294 | 296 |
| 295 void MetadataDatabaseIndex::StoreFileTracker( | 297 void MetadataDatabaseIndex::StoreFileTracker( |
| 296 std::unique_ptr<FileTracker> tracker) { | 298 std::unique_ptr<FileTracker> tracker) { |
| 297 PutFileTrackerToDB(*tracker.get(), db_); | 299 PutFileTrackerToDB(*tracker.get(), db_); |
| 298 if (!tracker) { | 300 if (!tracker) { |
| 299 NOTREACHED(); | 301 NOTREACHED(); |
| 300 return; | 302 return; |
| 301 } | 303 } |
| 302 | 304 |
| 303 int64_t tracker_id = tracker->tracker_id(); | 305 int64_t tracker_id = tracker->tracker_id(); |
| 304 FileTracker* old_tracker = tracker_by_id_.get(tracker_id); | 306 auto old_tracker_it = tracker_by_id_.find(tracker_id); |
| 305 | 307 |
| 306 if (!old_tracker) { | 308 if (old_tracker_it == tracker_by_id_.end()) { |
| 307 DVLOG(3) << "Adding new tracker: " << tracker->tracker_id() | 309 DVLOG(3) << "Adding new tracker: " << tracker->tracker_id() |
| 308 << " " << GetTrackerTitle(*tracker); | 310 << " " << GetTrackerTitle(*tracker); |
| 309 | 311 |
| 310 AddToAppIDIndex(*tracker); | 312 AddToAppIDIndex(*tracker); |
| 311 AddToPathIndexes(*tracker); | 313 AddToPathIndexes(*tracker); |
| 312 AddToFileIDIndexes(*tracker); | 314 AddToFileIDIndexes(*tracker); |
| 313 AddToDirtyTrackerIndexes(*tracker); | 315 AddToDirtyTrackerIndexes(*tracker); |
| 314 } else { | 316 } else { |
| 315 DVLOG(3) << "Updating tracker: " << tracker->tracker_id() | 317 DVLOG(3) << "Updating tracker: " << tracker->tracker_id() |
| 316 << " " << GetTrackerTitle(*tracker); | 318 << " " << GetTrackerTitle(*tracker); |
| 317 | 319 |
| 320 FileTracker* old_tracker = old_tracker_it->second.get(); |
| 318 UpdateInAppIDIndex(*old_tracker, *tracker); | 321 UpdateInAppIDIndex(*old_tracker, *tracker); |
| 319 UpdateInPathIndexes(*old_tracker, *tracker); | 322 UpdateInPathIndexes(*old_tracker, *tracker); |
| 320 UpdateInFileIDIndexes(*old_tracker, *tracker); | 323 UpdateInFileIDIndexes(*old_tracker, *tracker); |
| 321 UpdateInDirtyTrackerIndexes(*old_tracker, *tracker); | 324 UpdateInDirtyTrackerIndexes(*old_tracker, *tracker); |
| 322 } | 325 } |
| 323 | 326 |
| 324 tracker_by_id_.set(tracker_id, std::move(tracker)); | 327 tracker_by_id_[tracker_id] = std::move(tracker); |
| 325 } | 328 } |
| 326 | 329 |
| 327 void MetadataDatabaseIndex::RemoveFileMetadata(const std::string& file_id) { | 330 void MetadataDatabaseIndex::RemoveFileMetadata(const std::string& file_id) { |
| 328 PutFileMetadataDeletionToDB(file_id, db_); | 331 PutFileMetadataDeletionToDB(file_id, db_); |
| 329 metadata_by_id_.erase(file_id); | 332 metadata_by_id_.erase(file_id); |
| 330 } | 333 } |
| 331 | 334 |
| 332 void MetadataDatabaseIndex::RemoveFileTracker(int64_t tracker_id) { | 335 void MetadataDatabaseIndex::RemoveFileTracker(int64_t tracker_id) { |
| 333 PutFileTrackerDeletionToDB(tracker_id, db_); | 336 PutFileTrackerDeletionToDB(tracker_id, db_); |
| 334 | 337 |
| 335 FileTracker* tracker = tracker_by_id_.get(tracker_id); | 338 auto tracker_it = tracker_by_id_.find(tracker_id); |
| 336 if (!tracker) { | 339 if (tracker_it == tracker_by_id_.end()) { |
| 337 NOTREACHED(); | 340 NOTREACHED(); |
| 338 return; | 341 return; |
| 339 } | 342 } |
| 343 FileTracker* tracker = tracker_it->second.get(); |
| 340 | 344 |
| 341 DVLOG(3) << "Removing tracker: " | 345 DVLOG(3) << "Removing tracker: " |
| 342 << tracker->tracker_id() << " " << GetTrackerTitle(*tracker); | 346 << tracker->tracker_id() << " " << GetTrackerTitle(*tracker); |
| 343 | 347 |
| 344 RemoveFromAppIDIndex(*tracker); | 348 RemoveFromAppIDIndex(*tracker); |
| 345 RemoveFromPathIndexes(*tracker); | 349 RemoveFromPathIndexes(*tracker); |
| 346 RemoveFromFileIDIndexes(*tracker); | 350 RemoveFromFileIDIndexes(*tracker); |
| 347 RemoveFromDirtyTrackerIndexes(*tracker); | 351 RemoveFromDirtyTrackerIndexes(*tracker); |
| 348 | 352 |
| 349 tracker_by_id_.erase(tracker_id); | 353 tracker_by_id_.erase(tracker_id); |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 484 if (!service_metadata_->has_next_tracker_id()) { | 488 if (!service_metadata_->has_next_tracker_id()) { |
| 485 NOTREACHED(); | 489 NOTREACHED(); |
| 486 return kInvalidTrackerID; | 490 return kInvalidTrackerID; |
| 487 } | 491 } |
| 488 return service_metadata_->next_tracker_id(); | 492 return service_metadata_->next_tracker_id(); |
| 489 } | 493 } |
| 490 | 494 |
| 491 std::vector<std::string> MetadataDatabaseIndex::GetRegisteredAppIDs() const { | 495 std::vector<std::string> MetadataDatabaseIndex::GetRegisteredAppIDs() const { |
| 492 std::vector<std::string> result; | 496 std::vector<std::string> result; |
| 493 result.reserve(app_root_by_app_id_.size()); | 497 result.reserve(app_root_by_app_id_.size()); |
| 494 for (TrackerIDByAppID::const_iterator itr = app_root_by_app_id_.begin(); | 498 for (const auto& pair : app_root_by_app_id_) |
| 495 itr != app_root_by_app_id_.end(); ++itr) | 499 result.push_back(pair.first); |
| 496 result.push_back(itr->first); | |
| 497 return result; | 500 return result; |
| 498 } | 501 } |
| 499 | 502 |
| 500 std::vector<int64_t> MetadataDatabaseIndex::GetAllTrackerIDs() const { | 503 std::vector<int64_t> MetadataDatabaseIndex::GetAllTrackerIDs() const { |
| 501 std::vector<int64_t> result; | 504 std::vector<int64_t> result; |
| 502 for (TrackerByID::const_iterator itr = tracker_by_id_.begin(); | 505 for (const auto& pair : tracker_by_id_) |
| 503 itr != tracker_by_id_.end(); ++itr) { | 506 result.push_back(pair.first); |
| 504 result.push_back(itr->first); | |
| 505 } | |
| 506 return result; | 507 return result; |
| 507 } | 508 } |
| 508 | 509 |
| 509 std::vector<std::string> MetadataDatabaseIndex::GetAllMetadataIDs() const { | 510 std::vector<std::string> MetadataDatabaseIndex::GetAllMetadataIDs() const { |
| 510 std::vector<std::string> result; | 511 std::vector<std::string> result; |
| 511 for (MetadataByID::const_iterator itr = metadata_by_id_.begin(); | 512 for (const auto& pair : metadata_by_id_) |
| 512 itr != metadata_by_id_.end(); ++itr) { | 513 result.push_back(pair.first); |
| 513 result.push_back(itr->first); | |
| 514 } | |
| 515 return result; | 514 return result; |
| 516 } | 515 } |
| 517 | 516 |
| 518 void MetadataDatabaseIndex::AddToAppIDIndex( | 517 void MetadataDatabaseIndex::AddToAppIDIndex( |
| 519 const FileTracker& new_tracker) { | 518 const FileTracker& new_tracker) { |
| 520 if (!IsAppRoot(new_tracker)) | 519 if (!IsAppRoot(new_tracker)) |
| 521 return; | 520 return; |
| 522 | 521 |
| 523 DVLOG(3) << " Add to app_root_by_app_id_: " << new_tracker.app_id(); | 522 DVLOG(3) << " Add to app_root_by_app_id_: " << new_tracker.app_id(); |
| 524 | 523 |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 767 | 766 |
| 768 DVLOG(3) << " Remove from dirty_trackers_: " << tracker_id; | 767 DVLOG(3) << " Remove from dirty_trackers_: " << tracker_id; |
| 769 dirty_trackers_.erase(tracker_id); | 768 dirty_trackers_.erase(tracker_id); |
| 770 | 769 |
| 771 demoted_dirty_trackers_.erase(tracker_id); | 770 demoted_dirty_trackers_.erase(tracker_id); |
| 772 } | 771 } |
| 773 } | 772 } |
| 774 | 773 |
| 775 } // namespace drive_backend | 774 } // namespace drive_backend |
| 776 } // namespace sync_file_system | 775 } // namespace sync_file_system |
| OLD | NEW |