Chromium Code Reviews| 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 |