Index: chrome/browser/sync_file_system/drive_backend/metadata_database.cc |
diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_database.cc b/chrome/browser/sync_file_system/drive_backend/metadata_database.cc |
index e090e7e26c3958ee844075b3da3835df5fcf611a..ee9df158f554d809131d29ed57dfb1791a794b27 100644 |
--- a/chrome/browser/sync_file_system/drive_backend/metadata_database.cc |
+++ b/chrome/browser/sync_file_system/drive_backend/metadata_database.cc |
@@ -1041,6 +1041,25 @@ void MetadataDatabase::UpdateTracker(int64 tracker_id, |
WriteToDatabase(batch.Pass(), callback); |
} |
+bool MetadataDatabase::TryNoSideEffectActivation( |
+ int64 tracker_id, |
+ const SyncStatusCallback& callback) { |
+ DCHECK(ContainsKey(tracker_by_id_, tracker_id)); |
+ const FileTracker& tracker = *tracker_by_id_[tracker_id]; |
+ if (tracker.active()) { |
+ RunSoon(FROM_HERE, base::Bind(callback, SYNC_STATUS_OK)); |
+ return true; |
+ } |
+ |
+ if (!CanActivateTracker(tracker)) |
+ return false; |
+ |
+ scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch); |
+ MakeTrackerActive(tracker_id, batch.get()); |
+ WriteToDatabase(batch.Pass(), callback); |
+ return true; |
+} |
+ |
void MetadataDatabase::LowerTrackerPriority(int64 tracker_id) { |
TrackerByID::const_iterator found = tracker_by_id_.find(tracker_id); |
if (found == tracker_by_id_.end()) |