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

Side by Side Diff: chrome/browser/sync_file_system/drive_file_sync_service.cc

Issue 12315004: Migrated sync_file_type and file_change from namespace fileapi to sync_file_system. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: f Created 7 years, 10 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_file_sync_service.h" 5 #include "chrome/browser/sync_file_system/drive_file_sync_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 76
77 void EmptyStatusCallback(fileapi::SyncStatusCode code) {} 77 void EmptyStatusCallback(fileapi::SyncStatusCode code) {}
78 78
79 void DidRemoveOrigin(const GURL& origin, fileapi::SyncStatusCode status) { 79 void DidRemoveOrigin(const GURL& origin, fileapi::SyncStatusCode status) {
80 // TODO(calvinlo): Disable syncing if status not ok (http://crbug.com/171611). 80 // TODO(calvinlo): Disable syncing if status not ok (http://crbug.com/171611).
81 DCHECK_EQ(fileapi::SYNC_STATUS_OK, status); 81 DCHECK_EQ(fileapi::SYNC_STATUS_OK, status);
82 LOG(WARNING) << "Remove origin failed for: " << origin.spec() 82 LOG(WARNING) << "Remove origin failed for: " << origin.spec()
83 << " status=" << status; 83 << " status=" << status;
84 } 84 }
85 85
86 fileapi::FileChange CreateFileChange(bool is_deleted) { 86 FileChange CreateFileChange(bool is_deleted) {
87 if (is_deleted) { 87 if (is_deleted) {
88 return fileapi::FileChange(fileapi::FileChange::FILE_CHANGE_DELETE, 88 return FileChange(FileChange::FILE_CHANGE_DELETE, SYNC_FILE_TYPE_UNKNOWN);
89 fileapi::SYNC_FILE_TYPE_UNKNOWN);
90 } 89 }
91 return fileapi::FileChange(fileapi::FileChange::FILE_CHANGE_ADD_OR_UPDATE, 90 return FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, SYNC_FILE_TYPE_FILE);
92 fileapi::SYNC_FILE_TYPE_FILE);
93 } 91 }
94 92
95 } // namespace 93 } // namespace
96 94
97 const char DriveFileSyncService::kServiceName[] = "drive"; 95 const char DriveFileSyncService::kServiceName[] = "drive";
98 96
99 class DriveFileSyncService::TaskToken { 97 class DriveFileSyncService::TaskToken {
100 public: 98 public:
101 explicit TaskToken(const base::WeakPtr<DriveFileSyncService>& sync_service) 99 explicit TaskToken(const base::WeakPtr<DriveFileSyncService>& sync_service)
102 : sync_service_(sync_service), 100 : sync_service_(sync_service),
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 if (left.changestamp != right.changestamp) 220 if (left.changestamp != right.changestamp)
223 return left.changestamp < right.changestamp; 221 return left.changestamp < right.changestamp;
224 if (left.sync_type != right.sync_type) 222 if (left.sync_type != right.sync_type)
225 return left.sync_type < right.sync_type; 223 return left.sync_type < right.sync_type;
226 return fileapi::FileSystemURL::Comparator()(left.url, right.url); 224 return fileapi::FileSystemURL::Comparator()(left.url, right.url);
227 } 225 }
228 226
229 DriveFileSyncService::RemoteChange::RemoteChange() 227 DriveFileSyncService::RemoteChange::RemoteChange()
230 : changestamp(0), 228 : changestamp(0),
231 sync_type(REMOTE_SYNC_TYPE_INCREMENTAL), 229 sync_type(REMOTE_SYNC_TYPE_INCREMENTAL),
232 change(fileapi::FileChange::FILE_CHANGE_ADD_OR_UPDATE, 230 change(FileChange::FILE_CHANGE_ADD_OR_UPDATE, SYNC_FILE_TYPE_UNKNOWN) {
233 fileapi::SYNC_FILE_TYPE_UNKNOWN) {
234 } 231 }
235 232
236 DriveFileSyncService::RemoteChange::RemoteChange( 233 DriveFileSyncService::RemoteChange::RemoteChange(
237 int64 changestamp, 234 int64 changestamp,
238 const std::string& resource_id, 235 const std::string& resource_id,
239 const std::string& md5_checksum, 236 const std::string& md5_checksum,
240 RemoteSyncType sync_type, 237 RemoteSyncType sync_type,
241 const fileapi::FileSystemURL& url, 238 const fileapi::FileSystemURL& url,
242 const fileapi::FileChange& change, 239 const FileChange& change,
243 PendingChangeQueue::iterator position_in_queue) 240 PendingChangeQueue::iterator position_in_queue)
244 : changestamp(changestamp), 241 : changestamp(changestamp),
245 resource_id(resource_id), 242 resource_id(resource_id),
246 md5_checksum(md5_checksum), 243 md5_checksum(md5_checksum),
247 sync_type(sync_type), 244 sync_type(sync_type),
248 url(url), 245 url(url),
249 change(change), 246 change(change),
250 position_in_queue(position_in_queue) { 247 position_in_queue(position_in_queue) {
251 } 248 }
252 249
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 Observer, service_observers_, 508 Observer, service_observers_,
512 OnRemoteServiceStateUpdated(GetCurrentState(), status_message)); 509 OnRemoteServiceStateUpdated(GetCurrentState(), status_message));
513 510
514 if (GetCurrentState() == REMOTE_SERVICE_OK) { 511 if (GetCurrentState() == REMOTE_SERVICE_OK) {
515 UpdatePollingDelay(kMinimumPollingDelaySeconds); 512 UpdatePollingDelay(kMinimumPollingDelaySeconds);
516 SchedulePolling(); 513 SchedulePolling();
517 } 514 }
518 } 515 }
519 516
520 void DriveFileSyncService::ApplyLocalChange( 517 void DriveFileSyncService::ApplyLocalChange(
521 const fileapi::FileChange& local_file_change, 518 const FileChange& local_file_change,
522 const base::FilePath& local_file_path, 519 const base::FilePath& local_file_path,
523 const fileapi::FileSystemURL& url, 520 const fileapi::FileSystemURL& url,
524 const fileapi::SyncStatusCallback& callback) { 521 const fileapi::SyncStatusCallback& callback) {
525 // TODO(nhiroki): support directory operations (http://crbug.com/161442). 522 // TODO(nhiroki): support directory operations (http://crbug.com/161442).
526 DCHECK(!local_file_change.IsDirectory()); 523 DCHECK(!local_file_change.IsDirectory());
527 524
528 scoped_ptr<TaskToken> token(GetToken( 525 scoped_ptr<TaskToken> token(GetToken(
529 FROM_HERE, TASK_TYPE_DATABASE, "Apply local change")); 526 FROM_HERE, TASK_TYPE_DATABASE, "Apply local change"));
530 if (!token) { 527 if (!token) {
531 pending_tasks_.push_back(base::Bind( 528 pending_tasks_.push_back(base::Bind(
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after
1065 const fileapi::SyncStatusCallback& callback, 1062 const fileapi::SyncStatusCallback& callback,
1066 fileapi::SyncStatusCode status) { 1063 fileapi::SyncStatusCode status) {
1067 NotifyTaskDone(status, token.Pass()); 1064 NotifyTaskDone(status, token.Pass());
1068 callback.Run(status); 1065 callback.Run(status);
1069 } 1066 }
1070 1067
1071 void DriveFileSyncService::DidGetRemoteFileMetadata( 1068 void DriveFileSyncService::DidGetRemoteFileMetadata(
1072 const fileapi::SyncFileMetadataCallback& callback, 1069 const fileapi::SyncFileMetadataCallback& callback,
1073 google_apis::GDataErrorCode error, 1070 google_apis::GDataErrorCode error,
1074 scoped_ptr<google_apis::ResourceEntry> entry) { 1071 scoped_ptr<google_apis::ResourceEntry> entry) {
1075 fileapi::SyncFileType file_type = fileapi::SYNC_FILE_TYPE_UNKNOWN; 1072 SyncFileType file_type = SYNC_FILE_TYPE_UNKNOWN;
1076 if (entry->is_file()) 1073 if (entry->is_file())
1077 file_type = fileapi::SYNC_FILE_TYPE_FILE; 1074 file_type = SYNC_FILE_TYPE_FILE;
1078 else if (entry->is_folder()) 1075 else if (entry->is_folder())
1079 file_type = fileapi::SYNC_FILE_TYPE_DIRECTORY; 1076 file_type = SYNC_FILE_TYPE_DIRECTORY;
1080 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error), 1077 callback.Run(GDataErrorCodeToSyncStatusCodeWrapper(error),
1081 fileapi::SyncFileMetadata(file_type, 1078 fileapi::SyncFileMetadata(file_type,
1082 entry->file_size(), 1079 entry->file_size(),
1083 entry->updated_time())); 1080 entry->updated_time()));
1084 } 1081 }
1085 1082
1086 DriveFileSyncService::LocalSyncOperationType 1083 DriveFileSyncService::LocalSyncOperationType
1087 DriveFileSyncService::ResolveLocalSyncOperationType( 1084 DriveFileSyncService::ResolveLocalSyncOperationType(
1088 const fileapi::FileChange& local_file_change, 1085 const FileChange& local_file_change,
1089 const fileapi::FileSystemURL& url) { 1086 const fileapi::FileSystemURL& url) {
1090 DriveMetadata metadata; 1087 DriveMetadata metadata;
1091 const bool has_metadata = 1088 const bool has_metadata =
1092 (metadata_store_->ReadEntry(url, &metadata) == fileapi::SYNC_STATUS_OK); 1089 (metadata_store_->ReadEntry(url, &metadata) == fileapi::SYNC_STATUS_OK);
1093 1090
1094 if (has_metadata && metadata.conflicted()) { 1091 if (has_metadata && metadata.conflicted()) {
1095 // The file has been marked as conflicted. 1092 // The file has been marked as conflicted.
1096 if (local_file_change.IsAddOrUpdate()) 1093 if (local_file_change.IsAddOrUpdate())
1097 return LOCAL_SYNC_OPERATION_NONE; 1094 return LOCAL_SYNC_OPERATION_NONE;
1098 else if (local_file_change.IsDelete()) 1095 else if (local_file_change.IsDelete())
1099 return LOCAL_SYNC_OPERATION_RESOLVE_TO_REMOTE; 1096 return LOCAL_SYNC_OPERATION_RESOLVE_TO_REMOTE;
1100 NOTREACHED(); 1097 NOTREACHED();
1101 return LOCAL_SYNC_OPERATION_FAIL; 1098 return LOCAL_SYNC_OPERATION_FAIL;
1102 } 1099 }
1103 1100
1104 RemoteChange remote_change; 1101 RemoteChange remote_change;
1105 const bool has_remote_change = GetPendingChangeForFileSystemURL( 1102 const bool has_remote_change = GetPendingChangeForFileSystemURL(
1106 url, &remote_change); 1103 url, &remote_change);
1107 1104
1108 if (has_remote_change) { 1105 if (has_remote_change) {
1109 // Remote change for the file identified by |url| exists in the pending 1106 // Remote change for the file identified by |url| exists in the pending
1110 // change queue. 1107 // change queue.
1111 const fileapi::FileChange& remote_file_change = remote_change.change; 1108 const FileChange& remote_file_change = remote_change.change;
1112 1109
1113 // (RemoteChange) + (LocalChange) -> (Operation Type) 1110 // (RemoteChange) + (LocalChange) -> (Operation Type)
1114 // AddOrUpdate + AddOrUpdate -> CONFLICT 1111 // AddOrUpdate + AddOrUpdate -> CONFLICT
1115 // AddOrUpdate + Delete -> NONE 1112 // AddOrUpdate + Delete -> NONE
1116 // Delete + AddOrUpdate -> ADD 1113 // Delete + AddOrUpdate -> ADD
1117 // Delete + Delete -> NONE 1114 // Delete + Delete -> NONE
1118 1115
1119 if (remote_file_change.IsAddOrUpdate() && local_file_change.IsAddOrUpdate()) 1116 if (remote_file_change.IsAddOrUpdate() && local_file_change.IsAddOrUpdate())
1120 return LOCAL_SYNC_OPERATION_CONFLICT; 1117 return LOCAL_SYNC_OPERATION_CONFLICT;
1121 else if (remote_file_change.IsDelete() && local_file_change.IsAddOrUpdate()) 1118 else if (remote_file_change.IsDelete() && local_file_change.IsAddOrUpdate())
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
1308 FinalizeLocalSync(token.Pass(), callback, status); 1305 FinalizeLocalSync(token.Pass(), callback, status);
1309 return; 1306 return;
1310 } 1307 }
1311 } 1308 }
1312 } 1309 }
1313 1310
1314 void DriveFileSyncService::DidPrepareForProcessRemoteChange( 1311 void DriveFileSyncService::DidPrepareForProcessRemoteChange(
1315 scoped_ptr<ProcessRemoteChangeParam> param, 1312 scoped_ptr<ProcessRemoteChangeParam> param,
1316 fileapi::SyncStatusCode status, 1313 fileapi::SyncStatusCode status,
1317 const fileapi::SyncFileMetadata& metadata, 1314 const fileapi::SyncFileMetadata& metadata,
1318 const fileapi::FileChangeList& local_changes) { 1315 const FileChangeList& local_changes) {
1319 if (status != fileapi::SYNC_STATUS_OK) { 1316 if (status != fileapi::SYNC_STATUS_OK) {
1320 AbortRemoteSync(param.Pass(), status); 1317 AbortRemoteSync(param.Pass(), status);
1321 return; 1318 return;
1322 } 1319 }
1323 1320
1324 const fileapi::FileSystemURL& url = param->remote_change.url; 1321 const fileapi::FileSystemURL& url = param->remote_change.url;
1325 const DriveMetadata& drive_metadata = param->drive_metadata; 1322 const DriveMetadata& drive_metadata = param->drive_metadata;
1326 const fileapi::FileChange& remote_file_change = param->remote_change.change; 1323 const FileChange& remote_file_change = param->remote_change.change;
1327 1324
1328 status = metadata_store_->ReadEntry(param->remote_change.url, 1325 status = metadata_store_->ReadEntry(param->remote_change.url,
1329 &param->drive_metadata); 1326 &param->drive_metadata);
1330 DCHECK(status == fileapi::SYNC_STATUS_OK || 1327 DCHECK(status == fileapi::SYNC_STATUS_OK ||
1331 status == fileapi::SYNC_DATABASE_ERROR_NOT_FOUND); 1328 status == fileapi::SYNC_DATABASE_ERROR_NOT_FOUND);
1332 1329
1333 bool missing_db_entry = (status != fileapi::SYNC_STATUS_OK); 1330 bool missing_db_entry = (status != fileapi::SYNC_STATUS_OK);
1334 if (missing_db_entry) { 1331 if (missing_db_entry) {
1335 param->drive_metadata.set_resource_id(param->remote_change.resource_id); 1332 param->drive_metadata.set_resource_id(param->remote_change.resource_id);
1336 param->drive_metadata.set_md5_checksum(std::string()); 1333 param->drive_metadata.set_md5_checksum(std::string());
1337 param->drive_metadata.set_conflicted(false); 1334 param->drive_metadata.set_conflicted(false);
1338 param->drive_metadata.set_to_be_fetched(false); 1335 param->drive_metadata.set_to_be_fetched(false);
1339 } 1336 }
1340 bool missing_local_file = 1337 bool missing_local_file =
1341 (metadata.file_type == fileapi::SYNC_FILE_TYPE_UNKNOWN); 1338 (metadata.file_type == SYNC_FILE_TYPE_UNKNOWN);
1342 1339
1343 if (param->drive_metadata.conflicted()) { 1340 if (param->drive_metadata.conflicted()) {
1344 if (missing_local_file) { 1341 if (missing_local_file) {
1345 if (remote_file_change.IsAddOrUpdate()) { 1342 if (remote_file_change.IsAddOrUpdate()) {
1346 // Resolve conflict to remote change automatically. 1343 // Resolve conflict to remote change automatically.
1347 DVLOG(1) << "ProcessRemoteChange for " << url.DebugString() 1344 DVLOG(1) << "ProcessRemoteChange for " << url.DebugString()
1348 << (param->drive_metadata.conflicted() ? " (conflicted)" : " ") 1345 << (param->drive_metadata.conflicted() ? " (conflicted)" : " ")
1349 << (missing_local_file ? " (missing local file)" : " ") 1346 << (missing_local_file ? " (missing local file)" : " ")
1350 << " remote_change: " << remote_file_change.DebugString() 1347 << " remote_change: " << remote_file_change.DebugString()
1351 << " ==> operation: ResolveConflictToRemoteChange"; 1348 << " ==> operation: ResolveConflictToRemoteChange";
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1386 << (missing_local_file ? " (missing local file)" : " ") 1383 << (missing_local_file ? " (missing local file)" : " ")
1387 << " remote_change: " << remote_file_change.DebugString() 1384 << " remote_change: " << remote_file_change.DebugString()
1388 << " ==> operation: ResolveConflictToLocalChange"; 1385 << " ==> operation: ResolveConflictToLocalChange";
1389 1386
1390 param->sync_action = fileapi::SYNC_ACTION_NONE; 1387 param->sync_action = fileapi::SYNC_ACTION_NONE;
1391 param->clear_local_changes = false; 1388 param->clear_local_changes = false;
1392 1389
1393 RemoteChangeProcessor* processor = param->processor; 1390 RemoteChangeProcessor* processor = param->processor;
1394 processor->RecordFakeLocalChange( 1391 processor->RecordFakeLocalChange(
1395 url, 1392 url,
1396 fileapi::FileChange(fileapi::FileChange::FILE_CHANGE_ADD_OR_UPDATE, 1393 FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, SYNC_FILE_TYPE_FILE),
1397 fileapi::SYNC_FILE_TYPE_FILE),
1398 base::Bind(&DriveFileSyncService::DidResolveConflictToLocalChange, 1394 base::Bind(&DriveFileSyncService::DidResolveConflictToLocalChange,
1399 AsWeakPtr(), base::Passed(&param))); 1395 AsWeakPtr(), base::Passed(&param)));
1400 return; 1396 return;
1401 } 1397 }
1402 1398
1403 DCHECK(!param->drive_metadata.conflicted()); 1399 DCHECK(!param->drive_metadata.conflicted());
1404 if (remote_file_change.IsAddOrUpdate()) { 1400 if (remote_file_change.IsAddOrUpdate()) {
1405 if (local_changes.empty()) { 1401 if (local_changes.empty()) {
1406 if (missing_local_file) { 1402 if (missing_local_file) {
1407 param->sync_action = fileapi::SYNC_ACTION_ADDED; 1403 param->sync_action = fileapi::SYNC_ACTION_ADDED;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1443 param->sync_action = fileapi::SYNC_ACTION_NONE; 1439 param->sync_action = fileapi::SYNC_ACTION_NONE;
1444 if (missing_db_entry) 1440 if (missing_db_entry)
1445 CompleteRemoteSync(param.Pass(), fileapi::SYNC_STATUS_OK); 1441 CompleteRemoteSync(param.Pass(), fileapi::SYNC_STATUS_OK);
1446 else 1442 else
1447 DeleteMetadataForRemoteSync(param.Pass()); 1443 DeleteMetadataForRemoteSync(param.Pass());
1448 return; 1444 return;
1449 } 1445 }
1450 DCHECK(!missing_local_file); 1446 DCHECK(!missing_local_file);
1451 param->sync_action = fileapi::SYNC_ACTION_DELETED; 1447 param->sync_action = fileapi::SYNC_ACTION_DELETED;
1452 1448
1453 const fileapi::FileChange& file_change = remote_file_change; 1449 const FileChange& file_change = remote_file_change;
1454 param->processor->ApplyRemoteChange( 1450 param->processor->ApplyRemoteChange(
1455 file_change, base::FilePath(), url, 1451 file_change, base::FilePath(), url,
1456 base::Bind(&DriveFileSyncService::DidApplyRemoteChange, AsWeakPtr(), 1452 base::Bind(&DriveFileSyncService::DidApplyRemoteChange, AsWeakPtr(),
1457 base::Passed(&param))); 1453 base::Passed(&param)));
1458 return; 1454 return;
1459 } 1455 }
1460 1456
1461 DCHECK(!local_changes.empty()); 1457 DCHECK(!local_changes.empty());
1462 if (local_changes.list().back().IsAddOrUpdate()) { 1458 if (local_changes.list().back().IsAddOrUpdate()) {
1463 param->sync_action = fileapi::SYNC_ACTION_NONE; 1459 param->sync_action = fileapi::SYNC_ACTION_NONE;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1535 return; 1531 return;
1536 } 1532 }
1537 1533
1538 fileapi::SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error); 1534 fileapi::SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error);
1539 if (status != fileapi::SYNC_STATUS_OK) { 1535 if (status != fileapi::SYNC_STATUS_OK) {
1540 AbortRemoteSync(param.Pass(), status); 1536 AbortRemoteSync(param.Pass(), status);
1541 return; 1537 return;
1542 } 1538 }
1543 1539
1544 param->drive_metadata.set_md5_checksum(md5_checksum); 1540 param->drive_metadata.set_md5_checksum(md5_checksum);
1545 const fileapi::FileChange& change = param->remote_change.change; 1541 const FileChange& change = param->remote_change.change;
1546 const base::FilePath& temporary_file_path = param->temporary_file_path; 1542 const base::FilePath& temporary_file_path = param->temporary_file_path;
1547 const fileapi::FileSystemURL& url = param->remote_change.url; 1543 const fileapi::FileSystemURL& url = param->remote_change.url;
1548 param->processor->ApplyRemoteChange( 1544 param->processor->ApplyRemoteChange(
1549 change, temporary_file_path, url, 1545 change, temporary_file_path, url,
1550 base::Bind(&DriveFileSyncService::DidApplyRemoteChange, 1546 base::Bind(&DriveFileSyncService::DidApplyRemoteChange,
1551 AsWeakPtr(), base::Passed(&param))); 1547 AsWeakPtr(), base::Passed(&param)));
1552 } 1548 }
1553 1549
1554 void DriveFileSyncService::DidApplyRemoteChange( 1550 void DriveFileSyncService::DidApplyRemoteChange(
1555 scoped_ptr<ProcessRemoteChangeParam> param, 1551 scoped_ptr<ProcessRemoteChangeParam> param,
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
1736 !local_file_md5.empty() && 1732 !local_file_md5.empty() &&
1737 remote_file_md5 == local_file_md5) 1733 remote_file_md5 == local_file_md5)
1738 return false; 1734 return false;
1739 1735
1740 // Drop any change if the change has unknown resource id. 1736 // Drop any change if the change has unknown resource id.
1741 if (!remote_resource_id.empty() && 1737 if (!remote_resource_id.empty() &&
1742 !local_resource_id.empty() && 1738 !local_resource_id.empty() &&
1743 remote_resource_id != local_resource_id) 1739 remote_resource_id != local_resource_id)
1744 return false; 1740 return false;
1745 1741
1746 fileapi::FileChange file_change(CreateFileChange(is_deleted)); 1742 FileChange file_change(CreateFileChange(is_deleted));
1747 1743
1748 // Do not return in this block. These changes should be done together. 1744 // Do not return in this block. These changes should be done together.
1749 { 1745 {
1750 if (overridden_queue_item != pending_changes_.end()) 1746 if (overridden_queue_item != pending_changes_.end())
1751 pending_changes_.erase(overridden_queue_item); 1747 pending_changes_.erase(overridden_queue_item);
1752 1748
1753 std::pair<PendingChangeQueue::iterator, bool> inserted_to_queue = 1749 std::pair<PendingChangeQueue::iterator, bool> inserted_to_queue =
1754 pending_changes_.insert(ChangeQueueItem(changestamp, sync_type, url)); 1750 pending_changes_.insert(ChangeQueueItem(changestamp, sync_type, url));
1755 DCHECK(inserted_to_queue.second); 1751 DCHECK(inserted_to_queue.second);
1756 1752
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
2019 DCHECK_EQ(fileapi::SYNC_ACTION_NONE, action_taken); 2015 DCHECK_EQ(fileapi::SYNC_ACTION_NONE, action_taken);
2020 DCHECK_EQ(fileapi::SYNC_DIRECTION_NONE, direction); 2016 DCHECK_EQ(fileapi::SYNC_DIRECTION_NONE, direction);
2021 } 2017 }
2022 2018
2023 FOR_EACH_OBSERVER( 2019 FOR_EACH_OBSERVER(
2024 FileStatusObserver, file_status_observers_, 2020 FileStatusObserver, file_status_observers_,
2025 OnFileStatusChanged(url, sync_status, action_taken, direction)); 2021 OnFileStatusChanged(url, sync_status, action_taken, direction));
2026 } 2022 }
2027 2023
2028 } // namespace sync_file_system 2024 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698