Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(414)

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/metadata_database.cc

Issue 446793002: [SyncFS] Unconditionally demote remote file trackers on remote-to-local sync (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 1172 matching lines...) Expand 10 before | Expand all | Expand 10 after
1183 index_.get()); 1183 index_.get());
1184 WriteToDatabase(callback); 1184 WriteToDatabase(callback);
1185 return; 1185 return;
1186 } 1186 }
1187 } 1187 }
1188 } 1188 }
1189 1189
1190 scoped_ptr<FileTracker> updated_tracker = CloneFileTracker(&tracker); 1190 scoped_ptr<FileTracker> updated_tracker = CloneFileTracker(&tracker);
1191 *updated_tracker->mutable_synced_details() = updated_details; 1191 *updated_tracker->mutable_synced_details() = updated_details;
1192 1192
1193 bool should_promote = false;
1194
1193 // Activate the tracker if: 1195 // Activate the tracker if:
1194 // - There is no active tracker that tracks |tracker->file_id()|. 1196 // - There is no active tracker that tracks |tracker->file_id()|.
1195 // - There is no active tracker that has the same |parent| and |title|. 1197 // - There is no active tracker that has the same |parent| and |title|.
1196 if (!tracker.active() && CanActivateTracker(tracker)) { 1198 if (!tracker.active() && CanActivateTracker(tracker)) {
1197 updated_tracker->set_active(true); 1199 updated_tracker->set_active(true);
1198 updated_tracker->set_dirty(true); 1200 updated_tracker->set_dirty(true);
1199 updated_tracker->set_needs_folder_listing( 1201 updated_tracker->set_needs_folder_listing(
1200 tracker.synced_details().file_kind() == FILE_KIND_FOLDER); 1202 tracker.synced_details().file_kind() == FILE_KIND_FOLDER);
1203 should_promote = true;
1201 } else if (tracker.dirty() && !ShouldKeepDirty(tracker)) { 1204 } else if (tracker.dirty() && !ShouldKeepDirty(tracker)) {
1202 updated_tracker->set_dirty(false); 1205 updated_tracker->set_dirty(false);
1203 } 1206 }
1204 index_->StoreFileTracker(updated_tracker.Pass()); 1207 index_->StoreFileTracker(updated_tracker.Pass());
1208 if (should_promote)
1209 index_->PromoteDemotedDirtyTracker(tracker_id);
1205 1210
1206 WriteToDatabase(callback); 1211 WriteToDatabase(callback);
1207 } 1212 }
1208 1213
1209 MetadataDatabase::ActivationStatus MetadataDatabase::TryActivateTracker( 1214 MetadataDatabase::ActivationStatus MetadataDatabase::TryActivateTracker(
1210 int64 parent_tracker_id, 1215 int64 parent_tracker_id,
1211 const std::string& file_id, 1216 const std::string& file_id,
1212 const SyncStatusCallback& callback) { 1217 const SyncStatusCallback& callback) {
1213 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); 1218 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread());
1214 1219
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1274 WriteToDatabase(callback); 1279 WriteToDatabase(callback);
1275 return ACTIVATION_PENDING; 1280 return ACTIVATION_PENDING;
1276 } 1281 }
1277 1282
1278 void MetadataDatabase::LowerTrackerPriority(int64 tracker_id) { 1283 void MetadataDatabase::LowerTrackerPriority(int64 tracker_id) {
1279 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); 1284 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread());
1280 index_->DemoteDirtyTracker(tracker_id); 1285 index_->DemoteDirtyTracker(tracker_id);
1281 WriteToDatabase(base::Bind(&EmptyStatusCallback)); 1286 WriteToDatabase(base::Bind(&EmptyStatusCallback));
1282 } 1287 }
1283 1288
1284 void MetadataDatabase::PromoteLowerPriorityTrackersToNormal() { 1289 bool MetadataDatabase::PromoteLowerPriorityTrackersToNormal() {
1285 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); 1290 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread());
1286 index_->PromoteDemotedDirtyTrackers(); 1291 bool promoted = index_->PromoteDemotedDirtyTrackers();
1292 WriteToDatabase(base::Bind(&EmptyStatusCallback));
1293 return promoted;
1294 }
1295
1296 void MetadataDatabase::PromoteDemotedTracker(int64 tracker_id) {
1297 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread());
1298 index_->PromoteDemotedDirtyTracker(tracker_id);
1287 WriteToDatabase(base::Bind(&EmptyStatusCallback)); 1299 WriteToDatabase(base::Bind(&EmptyStatusCallback));
1288 } 1300 }
1289 1301
1290 bool MetadataDatabase::GetNormalPriorityDirtyTracker( 1302 bool MetadataDatabase::GetNormalPriorityDirtyTracker(
1291 FileTracker* tracker_out) const { 1303 FileTracker* tracker_out) const {
1292 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread()); 1304 DCHECK(worker_sequence_checker_.CalledOnValidSequencedThread());
1293 1305
1294 int64 dirty_tracker_id = index_->PickDirtyTracker(); 1306 int64 dirty_tracker_id = index_->PickDirtyTracker();
1295 if (!dirty_tracker_id) 1307 if (!dirty_tracker_id)
1296 return false; 1308 return false;
(...skipping 599 matching lines...) Expand 10 before | Expand all | Expand 10 after
1896 index_->StoreFileMetadata(app_root_metadata.Pass()); 1908 index_->StoreFileMetadata(app_root_metadata.Pass());
1897 index_->StoreFileTracker(app_root_tracker.Pass()); 1909 index_->StoreFileTracker(app_root_tracker.Pass());
1898 } 1910 }
1899 1911
1900 void MetadataDatabase::DetachFromSequence() { 1912 void MetadataDatabase::DetachFromSequence() {
1901 worker_sequence_checker_.DetachFromSequence(); 1913 worker_sequence_checker_.DetachFromSequence();
1902 } 1914 }
1903 1915
1904 } // namespace drive_backend 1916 } // namespace drive_backend
1905 } // namespace sync_file_system 1917 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698