Index: trunk/src/chrome/browser/sync_file_system/drive_backend/metadata_database.cc |
=================================================================== |
--- trunk/src/chrome/browser/sync_file_system/drive_backend/metadata_database.cc (revision 238395) |
+++ trunk/src/chrome/browser/sync_file_system/drive_backend/metadata_database.cc (working copy) |
@@ -797,6 +797,35 @@ |
return true; |
} |
+void MetadataDatabase::UpdateByFileMetadata(scoped_ptr<FileMetadata> file, |
+ leveldb::WriteBatch* batch) { |
+ DCHECK(file); |
+ DCHECK(file->has_details()); |
+ std::string file_id = file->file_id(); |
+ if (file->details().missing()) { |
+ TrackerSet trackers; |
+ FindTrackersByFileID(file_id, &trackers); |
+ for (TrackerSet::const_iterator itr = trackers.begin(); |
+ itr != trackers.end(); ++itr) { |
+ const FileTracker& tracker = **itr; |
+ if (!tracker.has_synced_details() || |
+ tracker.synced_details().missing()) { |
+ RemoveTracker(tracker.tracker_id(), batch); |
+ } |
+ } |
+ } else { |
+ MaybeAddTrackersForNewFile(*file, batch); |
+ } |
+ |
+ if (FindTrackersByFileID(file_id, NULL)) { |
+ MarkTrackersDirtyByFileID(file_id, batch); |
+ PutFileToBatch(*file, batch); |
+ FileMetadata* file_ptr = file.release(); |
+ std::swap(file_ptr, file_by_id_[file_id]); |
+ delete file_ptr; |
+ } |
+} |
+ |
void MetadataDatabase::UpdateByChangeList( |
int64 largest_change_id, |
ScopedVector<google_apis::ChangeResource> changes, |
@@ -815,7 +844,7 @@ |
scoped_ptr<FileMetadata> file( |
CreateFileMetadataFromChangeResource(change)); |
- UpdateByFileMetadata(FROM_HERE, file.Pass(), batch.get()); |
+ UpdateByFileMetadata(file.Pass(), batch.get()); |
} |
UpdateLargestKnownChangeID(largest_change_id); |
@@ -832,7 +861,7 @@ |
scoped_ptr<FileMetadata> file( |
CreateFileMetadataFromFileResource( |
GetLargestKnownChangeID(), resource)); |
- UpdateByFileMetadata(FROM_HERE, file.Pass(), batch.get()); |
+ UpdateByFileMetadata(file.Pass(), batch.get()); |
WriteToDatabase(batch.Pass(), callback); |
} |
@@ -842,7 +871,7 @@ |
scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch); |
scoped_ptr<FileMetadata> file( |
CreateDeletedFileMetadata(GetLargestKnownChangeID(), file_id)); |
- UpdateByFileMetadata(FROM_HERE, file.Pass(), batch.get()); |
+ UpdateByFileMetadata(file.Pass(), batch.get()); |
WriteToDatabase(batch.Pass(), callback); |
} |
@@ -1676,43 +1705,6 @@ |
return found != trackers_by_title.end() && found->second.has_active(); |
} |
-void MetadataDatabase::UpdateByFileMetadata( |
- const tracked_objects::Location& from_where, |
- scoped_ptr<FileMetadata> file, |
- leveldb::WriteBatch* batch) { |
- DCHECK(file); |
- DCHECK(file->has_details()); |
- |
- DVLOG(1) << from_where.function_name() << ": " |
- << file->file_id() << " (" |
- << file->details().title() << ")" |
- << (file->details().missing() ? " deleted" : ""); |
- |
- std::string file_id = file->file_id(); |
- if (file->details().missing()) { |
- TrackerSet trackers; |
- FindTrackersByFileID(file_id, &trackers); |
- for (TrackerSet::const_iterator itr = trackers.begin(); |
- itr != trackers.end(); ++itr) { |
- const FileTracker& tracker = **itr; |
- if (!tracker.has_synced_details() || |
- tracker.synced_details().missing()) { |
- RemoveTracker(tracker.tracker_id(), batch); |
- } |
- } |
- } else { |
- MaybeAddTrackersForNewFile(*file, batch); |
- } |
- |
- if (FindTrackersByFileID(file_id, NULL)) { |
- MarkTrackersDirtyByFileID(file_id, batch); |
- PutFileToBatch(*file, batch); |
- FileMetadata* file_ptr = file.release(); |
- std::swap(file_ptr, file_by_id_[file_id]); |
- delete file_ptr; |
- } |
-} |
- |
void MetadataDatabase::WriteToDatabase(scoped_ptr<leveldb::WriteBatch> batch, |
const SyncStatusCallback& callback) { |
base::PostTaskAndReplyWithResult( |