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 1158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1169 index_.get()); | 1169 index_.get()); |
1170 WriteToDatabase(callback); | 1170 WriteToDatabase(callback); |
1171 return; | 1171 return; |
1172 } | 1172 } |
1173 } | 1173 } |
1174 } | 1174 } |
1175 | 1175 |
1176 scoped_ptr<FileTracker> updated_tracker = CloneFileTracker(&tracker); | 1176 scoped_ptr<FileTracker> updated_tracker = CloneFileTracker(&tracker); |
1177 *updated_tracker->mutable_synced_details() = updated_details; | 1177 *updated_tracker->mutable_synced_details() = updated_details; |
1178 | 1178 |
1179 bool should_promote = false; | |
peria
2014/08/07 09:24:48
isn't it referred?
tzik
2014/08/08 04:05:42
Ah, I forgot to check it. Fixed.
| |
1180 | |
1179 // Activate the tracker if: | 1181 // Activate the tracker if: |
1180 // - There is no active tracker that tracks |tracker->file_id()|. | 1182 // - There is no active tracker that tracks |tracker->file_id()|. |
1181 // - There is no active tracker that has the same |parent| and |title|. | 1183 // - There is no active tracker that has the same |parent| and |title|. |
1182 if (!tracker.active() && CanActivateTracker(tracker)) { | 1184 if (!tracker.active() && CanActivateTracker(tracker)) { |
1183 updated_tracker->set_active(true); | 1185 updated_tracker->set_active(true); |
1184 updated_tracker->set_dirty(true); | 1186 updated_tracker->set_dirty(true); |
1185 updated_tracker->set_needs_folder_listing( | 1187 updated_tracker->set_needs_folder_listing( |
1186 tracker.synced_details().file_kind() == FILE_KIND_FOLDER); | 1188 tracker.synced_details().file_kind() == FILE_KIND_FOLDER); |
1189 should_promote = true; | |
1187 } else if (tracker.dirty() && !ShouldKeepDirty(tracker)) { | 1190 } else if (tracker.dirty() && !ShouldKeepDirty(tracker)) { |
1188 updated_tracker->set_dirty(false); | 1191 updated_tracker->set_dirty(false); |
1189 } | 1192 } |
1190 index_->StoreFileTracker(updated_tracker.Pass()); | 1193 index_->StoreFileTracker(updated_tracker.Pass()); |
1194 index_->PromoteDemotedDirtyTracker(tracker_id); | |
1191 | 1195 |
1192 WriteToDatabase(callback); | 1196 WriteToDatabase(callback); |
1193 } | 1197 } |
1194 | 1198 |
1195 MetadataDatabase::ActivationStatus MetadataDatabase::TryActivateTracker( | 1199 MetadataDatabase::ActivationStatus MetadataDatabase::TryActivateTracker( |
1196 int64 parent_tracker_id, | 1200 int64 parent_tracker_id, |
1197 const std::string& file_id, | 1201 const std::string& file_id, |
1198 const SyncStatusCallback& callback) { | 1202 const SyncStatusCallback& callback) { |
1199 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); | 1203 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); |
1200 | 1204 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1260 WriteToDatabase(callback); | 1264 WriteToDatabase(callback); |
1261 return ACTIVATION_PENDING; | 1265 return ACTIVATION_PENDING; |
1262 } | 1266 } |
1263 | 1267 |
1264 void MetadataDatabase::LowerTrackerPriority(int64 tracker_id) { | 1268 void MetadataDatabase::LowerTrackerPriority(int64 tracker_id) { |
1265 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); | 1269 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); |
1266 index_->DemoteDirtyTracker(tracker_id); | 1270 index_->DemoteDirtyTracker(tracker_id); |
1267 WriteToDatabase(base::Bind(&EmptyStatusCallback)); | 1271 WriteToDatabase(base::Bind(&EmptyStatusCallback)); |
1268 } | 1272 } |
1269 | 1273 |
1270 void MetadataDatabase::PromoteLowerPriorityTrackersToNormal() { | 1274 bool MetadataDatabase::PromoteLowerPriorityTrackersToNormal() { |
1271 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); | 1275 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); |
1272 index_->PromoteDemotedDirtyTrackers(); | 1276 bool promoted = index_->PromoteDemotedDirtyTrackers(); |
1277 WriteToDatabase(base::Bind(&EmptyStatusCallback)); | |
1278 return promoted; | |
1279 } | |
1280 | |
1281 void MetadataDatabase::PromoteDemotedTracker(int64 tracker_id) { | |
1282 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); | |
1283 index_->PromoteDemotedDirtyTracker(tracker_id); | |
1273 WriteToDatabase(base::Bind(&EmptyStatusCallback)); | 1284 WriteToDatabase(base::Bind(&EmptyStatusCallback)); |
1274 } | 1285 } |
1275 | 1286 |
1276 bool MetadataDatabase::GetNormalPriorityDirtyTracker( | 1287 bool MetadataDatabase::GetNormalPriorityDirtyTracker( |
1277 FileTracker* tracker_out) const { | 1288 FileTracker* tracker_out) const { |
1278 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); | 1289 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); |
1279 | 1290 |
1280 int64 dirty_tracker_id = index_->PickDirtyTracker(); | 1291 int64 dirty_tracker_id = index_->PickDirtyTracker(); |
1281 if (!dirty_tracker_id) | 1292 if (!dirty_tracker_id) |
1282 return false; | 1293 return false; |
(...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1877 index_->StoreFileMetadata(app_root_metadata.Pass()); | 1888 index_->StoreFileMetadata(app_root_metadata.Pass()); |
1878 index_->StoreFileTracker(app_root_tracker.Pass()); | 1889 index_->StoreFileTracker(app_root_tracker.Pass()); |
1879 } | 1890 } |
1880 | 1891 |
1881 void MetadataDatabase::DetachFromSequence() { | 1892 void MetadataDatabase::DetachFromSequence() { |
1882 worker_sequence_checker_.DetachFromSequence(); | 1893 worker_sequence_checker_.DetachFromSequence(); |
1883 } | 1894 } |
1884 | 1895 |
1885 } // namespace drive_backend | 1896 } // namespace drive_backend |
1886 } // namespace sync_file_system | 1897 } // namespace sync_file_system |
OLD | NEW |