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 <stack> | 7 #include <stack> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
634 scoped_ptr<FileMetadata> file( | 634 scoped_ptr<FileMetadata> file( |
635 CreateFileMetadataFromChangeResource(change)); | 635 CreateFileMetadataFromChangeResource(change)); |
636 std::string file_id = file->file_id(); | 636 std::string file_id = file->file_id(); |
637 | 637 |
638 MarkTrackersDirtyByFileID(file_id, batch.get()); | 638 MarkTrackersDirtyByFileID(file_id, batch.get()); |
639 if (!file->details().deleted()) | 639 if (!file->details().deleted()) |
640 MaybeAddTrackersForNewFile(*file, batch.get()); | 640 MaybeAddTrackersForNewFile(*file, batch.get()); |
641 | 641 |
642 if (FindTrackersByFileID(file_id, NULL)) { | 642 if (FindTrackersByFileID(file_id, NULL)) { |
643 PutFileToBatch(*file, batch.get()); | 643 PutFileToBatch(*file, batch.get()); |
644 file_by_id_[file_id] = file.release(); | 644 |
| 645 FileMetadata* file_ptr = file.release(); |
| 646 std::swap(file_ptr, file_by_id_[file_id]); |
| 647 delete file_ptr; |
645 } | 648 } |
646 } | 649 } |
647 | 650 |
648 WriteToDatabase(batch.Pass(), callback); | 651 WriteToDatabase(batch.Pass(), callback); |
649 } | 652 } |
650 | 653 |
651 MetadataDatabase::MetadataDatabase(base::SequencedTaskRunner* task_runner) | 654 MetadataDatabase::MetadataDatabase(base::SequencedTaskRunner* task_runner) |
652 : task_runner_(task_runner), weak_ptr_factory_(this) { | 655 : task_runner_(task_runner), weak_ptr_factory_(this) { |
653 DCHECK(task_runner); | 656 DCHECK(task_runner); |
654 } | 657 } |
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1024 FROM_HERE, | 1027 FROM_HERE, |
1025 base::Bind(&leveldb::DB::Write, | 1028 base::Bind(&leveldb::DB::Write, |
1026 base::Unretained(db_.get()), | 1029 base::Unretained(db_.get()), |
1027 leveldb::WriteOptions(), | 1030 leveldb::WriteOptions(), |
1028 base::Owned(batch.release())), | 1031 base::Owned(batch.release())), |
1029 base::Bind(&AdaptLevelDBStatusToSyncStatusCode, callback)); | 1032 base::Bind(&AdaptLevelDBStatusToSyncStatusCode, callback)); |
1030 } | 1033 } |
1031 | 1034 |
1032 } // namespace drive_backend | 1035 } // namespace drive_backend |
1033 } // namespace sync_file_system | 1036 } // namespace sync_file_system |
OLD | NEW |