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

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: 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 1158 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698