OLD | NEW |
---|---|
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 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
415 OriginToChangesMap::iterator found = origin_to_changes_map_.find(origin); | 415 OriginToChangesMap::iterator found = origin_to_changes_map_.find(origin); |
416 if (found != origin_to_changes_map_.end()) { | 416 if (found != origin_to_changes_map_.end()) { |
417 for (PathToChangeMap::iterator itr = found->second.begin(); | 417 for (PathToChangeMap::iterator itr = found->second.begin(); |
418 itr != found->second.end(); ++itr) | 418 itr != found->second.end(); ++itr) |
419 pending_changes_.erase(itr->second.position_in_queue); | 419 pending_changes_.erase(itr->second.position_in_queue); |
420 origin_to_changes_map_.erase(found); | 420 origin_to_changes_map_.erase(found); |
421 } | 421 } |
422 pending_batch_sync_origins_.erase(origin); | 422 pending_batch_sync_origins_.erase(origin); |
423 | 423 |
424 metadata_store_->RemoveOrigin(origin, base::Bind( | 424 metadata_store_->RemoveOrigin(origin, base::Bind( |
425 &DriveFileSyncService::DidRemoveOriginOnMetadataStore, | 425 &DriveFileSyncService::DidChangeOriginOnMetadataStore, |
426 AsWeakPtr(), base::Passed(&token), callback)); | 426 AsWeakPtr(), base::Passed(&token), callback)); |
427 } | 427 } |
428 | 428 |
429 void DriveFileSyncService::EnableOriginForTrackingChanges( | |
430 const GURL& origin, | |
431 const SyncStatusCallback& callback) { | |
kinuko
2013/03/18 18:09:43
I think we can likely early-return here if the ori
nhiroki
2013/03/19 02:35:42
Done.
| |
432 scoped_ptr<TaskToken> token(GetToken(FROM_HERE, TASK_TYPE_DATABASE, "")); | |
433 if (!token) { | |
434 pending_tasks_.push_back(base::Bind( | |
435 &DriveFileSyncService::EnableOriginForTrackingChanges, | |
436 AsWeakPtr(), origin, callback)); | |
437 return; | |
438 } | |
439 | |
440 metadata_store_->EnableOrigin(origin, base::Bind( | |
441 &DriveFileSyncService::DidChangeOriginOnMetadataStore, | |
442 AsWeakPtr(), base::Passed(&token), callback)); | |
443 pending_batch_sync_origins_.insert(origin); | |
444 } | |
445 | |
446 void DriveFileSyncService::DisableOriginForTrackingChanges( | |
447 const GURL& origin, | |
448 const SyncStatusCallback& callback) { | |
kinuko
2013/03/18 18:09:43
ditto. I guess we can likely early-return here if
nhiroki
2013/03/19 02:35:42
Done.
| |
449 scoped_ptr<TaskToken> token(GetToken(FROM_HERE, TASK_TYPE_DATABASE, "")); | |
450 if (!token) { | |
451 pending_tasks_.push_back(base::Bind( | |
452 &DriveFileSyncService::DisableOriginForTrackingChanges, | |
453 AsWeakPtr(), origin, callback)); | |
454 return; | |
455 } | |
456 | |
457 OriginToChangesMap::iterator found = origin_to_changes_map_.find(origin); | |
458 if (found != origin_to_changes_map_.end()) { | |
459 for (PathToChangeMap::iterator itr = found->second.begin(); | |
460 itr != found->second.end(); ++itr) | |
461 pending_changes_.erase(itr->second.position_in_queue); | |
462 origin_to_changes_map_.erase(found); | |
463 } | |
464 pending_batch_sync_origins_.erase(origin); | |
465 | |
466 metadata_store_->DisableOrigin(origin, base::Bind( | |
467 &DriveFileSyncService::DidChangeOriginOnMetadataStore, | |
468 AsWeakPtr(), base::Passed(&token), callback)); | |
469 } | |
470 | |
429 void DriveFileSyncService::DeleteOriginDirectory( | 471 void DriveFileSyncService::DeleteOriginDirectory( |
430 const GURL& origin, | 472 const GURL& origin, |
431 const SyncStatusCallback& callback) { | 473 const SyncStatusCallback& callback) { |
432 scoped_ptr<TaskToken> token(GetToken( | 474 scoped_ptr<TaskToken> token(GetToken( |
433 FROM_HERE, TASK_TYPE_DATABASE, "Delete Origin Directory")); | 475 FROM_HERE, TASK_TYPE_DATABASE, "Delete Origin Directory")); |
434 if (!token) { | 476 if (!token) { |
435 pending_tasks_.push_back(base::Bind( | 477 pending_tasks_.push_back(base::Bind( |
436 &DriveFileSyncService::DeleteOriginDirectory, | 478 &DriveFileSyncService::DeleteOriginDirectory, |
437 AsWeakPtr(), origin, callback)); | 479 AsWeakPtr(), origin, callback)); |
438 return; | 480 return; |
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
848 | 890 |
849 void DriveFileSyncService::DidInitializeMetadataStore( | 891 void DriveFileSyncService::DidInitializeMetadataStore( |
850 scoped_ptr<TaskToken> token, | 892 scoped_ptr<TaskToken> token, |
851 SyncStatusCode status, | 893 SyncStatusCode status, |
852 bool created) { | 894 bool created) { |
853 if (status != SYNC_STATUS_OK) { | 895 if (status != SYNC_STATUS_OK) { |
854 NotifyTaskDone(status, token.Pass()); | 896 NotifyTaskDone(status, token.Pass()); |
855 return; | 897 return; |
856 } | 898 } |
857 | 899 |
858 // Remove any origins that are not installed or enabled. | 900 UpdateRegisteredOrigins(); |
859 UnregisterInactiveExtensionsIds(); | |
860 | 901 |
861 largest_fetched_changestamp_ = metadata_store_->GetLargestChangeStamp(); | 902 largest_fetched_changestamp_ = metadata_store_->GetLargestChangeStamp(); |
862 | 903 |
863 // Mark all the batch sync origins as 'pending' so that we can start | 904 // Mark all the batch sync origins as 'pending' so that we can start |
864 // batch sync when we're ready. | 905 // batch sync when we're ready. |
865 DCHECK(pending_batch_sync_origins_.empty()); | 906 DCHECK(pending_batch_sync_origins_.empty()); |
866 for (std::map<GURL, std::string>::const_iterator itr = | 907 for (std::map<GURL, std::string>::const_iterator itr = |
867 metadata_store_->batch_sync_origins().begin(); | 908 metadata_store_->batch_sync_origins().begin(); |
868 itr != metadata_store_->batch_sync_origins().end(); | 909 itr != metadata_store_->batch_sync_origins().end(); |
869 ++itr) { | 910 ++itr) { |
(...skipping 11 matching lines...) Expand all Loading... | |
881 const std::string& resource_id = itr->second; | 922 const std::string& resource_id = itr->second; |
882 AppendFetchChange(url.origin(), url.path(), resource_id); | 923 AppendFetchChange(url.origin(), url.path(), resource_id); |
883 } | 924 } |
884 | 925 |
885 // It's ok to fail, so we pass EmptyResourceIdCallback here. | 926 // It's ok to fail, so we pass EmptyResourceIdCallback here. |
886 GetSyncRootDirectory(token.Pass(), base::Bind(&EmptyResourceIdCallback)); | 927 GetSyncRootDirectory(token.Pass(), base::Bind(&EmptyResourceIdCallback)); |
887 | 928 |
888 RegisterDriveNotifications(); | 929 RegisterDriveNotifications(); |
889 } | 930 } |
890 | 931 |
891 void DriveFileSyncService::UnregisterInactiveExtensionsIds() { | 932 void DriveFileSyncService::UpdateRegisteredOrigins() { |
892 ExtensionService* extension_service = | 933 ExtensionService* extension_service = |
893 extensions::ExtensionSystem::Get(profile_)->extension_service(); | 934 extensions::ExtensionSystem::Get(profile_)->extension_service(); |
894 if (!extension_service) | 935 if (!extension_service) |
895 return; | 936 return; |
896 std::vector<GURL> tracked_origins; | |
897 metadata_store_->GetAllOrigins(&tracked_origins); | |
898 | 937 |
899 for (std::vector<GURL>::const_iterator itr = tracked_origins.begin(); | 938 std::vector<GURL> disabled_origins; |
900 itr != tracked_origins.end(); | 939 metadata_store_->GetDisabledOrigins(&disabled_origins); |
901 ++itr) { | 940 for (std::vector<GURL>::const_iterator itr = disabled_origins.begin(); |
902 // Make sure the registered extension is installed and enabled. | 941 itr != disabled_origins.end(); ++itr) { |
903 std::string extension_id = itr->host(); | 942 std::string extension_id = itr->host(); |
904 const extensions::Extension* installed_extension = | 943 GURL origin = |
905 extension_service->GetExtensionById(extension_id, | 944 extensions::Extension::GetBaseURLFromExtensionId(extension_id); |
906 false /* include_disabled */); | 945 |
907 if (installed_extension != NULL) | 946 if (extension_service->GetInstalledExtension(extension_id) == NULL) { |
947 // Extension is uninstalled. Unregister origin. | |
948 metadata_store_->RemoveOrigin( | |
949 origin, base::Bind(&DidRemoveOrigin, origin)); | |
908 continue; | 950 continue; |
951 } | |
909 | 952 |
910 // Extension is either disabled or uninstalled. Unregister origin. | 953 if (extension_service->IsExtensionEnabled(extension_id)) { |
911 GURL origin = extensions::Extension::GetBaseURLFromExtensionId( | 954 // Extension is enabled. Enable origin. |
912 extension_id); | 955 metadata_store_->EnableOrigin( |
913 metadata_store_->RemoveOrigin(origin, base::Bind(&DidRemoveOrigin, origin)); | 956 origin, base::Bind(&EmptyStatusCallback)); |
957 pending_batch_sync_origins_.insert(origin); | |
958 continue; | |
959 } | |
960 | |
961 // Extension is still disabled. | |
962 } | |
963 | |
964 std::vector<GURL> enabled_origins; | |
965 metadata_store_->GetEnabledOrigins(&enabled_origins); | |
966 for (std::vector<GURL>::const_iterator itr = enabled_origins.begin(); | |
967 itr != enabled_origins.end(); ++itr) { | |
968 std::string extension_id = itr->host(); | |
969 GURL origin = | |
970 extensions::Extension::GetBaseURLFromExtensionId(extension_id); | |
971 | |
972 if (extension_service->GetInstalledExtension(extension_id) == NULL) { | |
973 // Extension is uninstalled. Unregister origin. | |
974 metadata_store_->RemoveOrigin( | |
975 origin, base::Bind(&DidRemoveOrigin, origin)); | |
976 continue; | |
977 } | |
978 | |
979 if (!extension_service->IsExtensionEnabled(extension_id)) { | |
980 // Extension is disabled. Disable origin. | |
981 metadata_store_->DisableOrigin( | |
982 origin, base::Bind(&EmptyStatusCallback)); | |
983 continue; | |
984 } | |
985 | |
986 // Extension is still enabled. | |
914 } | 987 } |
kinuko
2013/03/18 18:09:43
Hmm, having two loops with similar body looks a bi
nhiroki
2013/03/19 02:35:42
Okay, for now just add TODO comment.
| |
915 } | 988 } |
916 | 989 |
917 void DriveFileSyncService::GetSyncRootDirectory( | 990 void DriveFileSyncService::GetSyncRootDirectory( |
918 scoped_ptr<TaskToken> token, | 991 scoped_ptr<TaskToken> token, |
919 const ResourceIdCallback& callback) { | 992 const ResourceIdCallback& callback) { |
920 token->UpdateTask(FROM_HERE, TASK_TYPE_DRIVE, "Retrieving drive root"); | 993 token->UpdateTask(FROM_HERE, TASK_TYPE_DRIVE, "Retrieving drive root"); |
921 sync_client_->GetDriveDirectoryForSyncRoot( | 994 sync_client_->GetDriveDirectoryForSyncRoot( |
922 base::Bind(&DriveFileSyncService::DidGetSyncRootDirectory, | 995 base::Bind(&DriveFileSyncService::DidGetSyncRootDirectory, |
923 AsWeakPtr(), base::Passed(&token), callback)); | 996 AsWeakPtr(), base::Passed(&token), callback)); |
924 } | 997 } |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
959 GetDriveDirectoryForOrigin(origin, callback, sync_root_resource_id); | 1032 GetDriveDirectoryForOrigin(origin, callback, sync_root_resource_id); |
960 } | 1033 } |
961 | 1034 |
962 void DriveFileSyncService::StartBatchSyncForOrigin( | 1035 void DriveFileSyncService::StartBatchSyncForOrigin( |
963 const GURL& origin, | 1036 const GURL& origin, |
964 const std::string& resource_id) { | 1037 const std::string& resource_id) { |
965 scoped_ptr<TaskToken> token( | 1038 scoped_ptr<TaskToken> token( |
966 GetToken(FROM_HERE, TASK_TYPE_DRIVE, "Retrieving largest changestamp")); | 1039 GetToken(FROM_HERE, TASK_TYPE_DRIVE, "Retrieving largest changestamp")); |
967 DCHECK(token); | 1040 DCHECK(token); |
968 DCHECK(GetCurrentState() == REMOTE_SERVICE_OK || may_have_unfetched_changes_); | 1041 DCHECK(GetCurrentState() == REMOTE_SERVICE_OK || may_have_unfetched_changes_); |
969 | 1042 |
kinuko
2013/03/18 18:09:43
Can we have another DCHECK to check if the origin'
nhiroki
2013/03/19 02:35:42
Done.
| |
970 DVLOG(1) << "Start batch sync for:" << origin.spec(); | 1043 DVLOG(1) << "Start batch sync for:" << origin.spec(); |
971 | 1044 |
972 sync_client_->GetLargestChangeStamp( | 1045 sync_client_->GetLargestChangeStamp( |
973 base::Bind(&DriveFileSyncService::DidGetLargestChangeStampForBatchSync, | 1046 base::Bind(&DriveFileSyncService::DidGetLargestChangeStampForBatchSync, |
974 AsWeakPtr(), base::Passed(&token), origin, resource_id)); | 1047 AsWeakPtr(), base::Passed(&token), origin, resource_id)); |
975 | 1048 |
976 may_have_unfetched_changes_ = false; | 1049 may_have_unfetched_changes_ = false; |
977 } | 1050 } |
978 | 1051 |
979 void DriveFileSyncService::GetDriveDirectoryForOrigin( | 1052 void DriveFileSyncService::GetDriveDirectoryForOrigin( |
980 const GURL& origin, | 1053 const GURL& origin, |
981 const SyncStatusCallback& callback, | 1054 const SyncStatusCallback& callback, |
982 const std::string& sync_root_resource_id) { | 1055 const std::string& sync_root_resource_id) { |
983 scoped_ptr<TaskToken> token(GetToken( | 1056 scoped_ptr<TaskToken> token(GetToken( |
984 FROM_HERE, TASK_TYPE_DRIVE, "Retrieving origin metadata")); | 1057 FROM_HERE, TASK_TYPE_DRIVE, "Retrieving origin metadata")); |
985 if (!token) { | 1058 if (!token) { |
986 pending_tasks_.push_back(base::Bind( | 1059 pending_tasks_.push_back(base::Bind( |
987 &DriveFileSyncService::GetDriveDirectoryForOrigin, | 1060 &DriveFileSyncService::GetDriveDirectoryForOrigin, |
988 AsWeakPtr(), origin, callback, sync_root_resource_id)); | 1061 AsWeakPtr(), origin, callback, sync_root_resource_id)); |
989 return; | 1062 return; |
990 } | 1063 } |
991 | 1064 |
992 if (metadata_store_->IsIncrementalSyncOrigin(origin) || | 1065 if (metadata_store_->IsIncrementalSyncOrigin(origin) || |
993 metadata_store_->IsBatchSyncOrigin(origin)) { | 1066 metadata_store_->IsBatchSyncOrigin(origin) || |
1067 metadata_store_->IsOriginDisabled(origin)) { | |
kinuko
2013/03/18 18:09:43
If we came here from RegisterOrigin I think we nee
nhiroki
2013/03/19 02:35:42
hmm... if we came here from RegisterOrigin, |origi
kinuko
2013/03/19 02:44:44
That sounds right... wait, couldn't we be in a sit
nhiroki
2013/03/19 03:43:52
I see... in your situation, an origin is disabled
kinuko
2013/03/19 03:51:39
Nope, I just realized that we do perform the enabl
nhiroki
2013/03/19 08:47:38
Thanks! Done.
kinuko
2013/03/19 09:56:30
I meant I don't think we need to worry about disab
| |
994 token->ResetTask(FROM_HERE); | 1068 token->ResetTask(FROM_HERE); |
995 NotifyTaskDone(SYNC_STATUS_OK, token.Pass()); | 1069 NotifyTaskDone(SYNC_STATUS_OK, token.Pass()); |
996 callback.Run(SYNC_STATUS_OK); | 1070 callback.Run(SYNC_STATUS_OK); |
997 return; | 1071 return; |
998 } | 1072 } |
999 | 1073 |
1000 DCHECK(!sync_root_resource_id.empty()); | 1074 DCHECK(!sync_root_resource_id.empty()); |
1001 sync_client_->GetDriveDirectoryForOrigin( | 1075 sync_client_->GetDriveDirectoryForOrigin( |
1002 sync_root_resource_id, origin, | 1076 sync_root_resource_id, origin, |
1003 base::Bind(&DriveFileSyncService::DidGetDriveDirectoryForOrigin, | 1077 base::Bind(&DriveFileSyncService::DidGetDriveDirectoryForOrigin, |
1004 AsWeakPtr(), base::Passed(&token), origin, callback)); | 1078 AsWeakPtr(), base::Passed(&token), origin, callback)); |
1005 } | 1079 } |
1006 | 1080 |
1007 void DriveFileSyncService::DidGetDriveDirectoryForOrigin( | 1081 void DriveFileSyncService::DidGetDriveDirectoryForOrigin( |
1008 scoped_ptr<TaskToken> token, | 1082 scoped_ptr<TaskToken> token, |
1009 const GURL& origin, | 1083 const GURL& origin, |
1010 const SyncStatusCallback& callback, | 1084 const SyncStatusCallback& callback, |
1011 google_apis::GDataErrorCode error, | 1085 google_apis::GDataErrorCode error, |
1012 const std::string& resource_id) { | 1086 const std::string& resource_id) { |
1013 if (error != google_apis::HTTP_SUCCESS && | 1087 if (error != google_apis::HTTP_SUCCESS && |
1014 error != google_apis::HTTP_CREATED) { | 1088 error != google_apis::HTTP_CREATED) { |
1015 SyncStatusCode status = | 1089 SyncStatusCode status = |
1016 GDataErrorCodeToSyncStatusCodeWrapper(error); | 1090 GDataErrorCodeToSyncStatusCodeWrapper(error); |
1017 NotifyTaskDone(status, token.Pass()); | 1091 NotifyTaskDone(status, token.Pass()); |
1018 callback.Run(status); | 1092 callback.Run(status); |
1019 return; | 1093 return; |
1020 } | 1094 } |
1021 | 1095 |
1022 metadata_store_->AddBatchSyncOrigin(origin, resource_id); | 1096 if (!metadata_store_->IsOriginDisabled(origin)) { |
kinuko
2013/03/18 18:09:43
We've gotten token in GetDriveDirectoryForOrigin a
nhiroki
2013/03/19 02:35:42
Yes, we've checked it on line 1067, so we don't ha
| |
1023 pending_batch_sync_origins_.insert(origin); | 1097 metadata_store_->AddBatchSyncOrigin(origin, resource_id); |
1098 pending_batch_sync_origins_.insert(origin); | |
1099 } | |
1024 | 1100 |
1025 NotifyTaskDone(SYNC_STATUS_OK, token.Pass()); | 1101 NotifyTaskDone(SYNC_STATUS_OK, token.Pass()); |
1026 callback.Run(SYNC_STATUS_OK); | 1102 callback.Run(SYNC_STATUS_OK); |
1027 } | 1103 } |
1028 | 1104 |
1029 void DriveFileSyncService::DidDeleteOriginDirectory( | 1105 void DriveFileSyncService::DidDeleteOriginDirectory( |
1030 scoped_ptr<TaskToken> token, | 1106 scoped_ptr<TaskToken> token, |
1031 const SyncStatusCallback& callback, | 1107 const SyncStatusCallback& callback, |
1032 google_apis::GDataErrorCode error) { | 1108 google_apis::GDataErrorCode error) { |
1033 SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error); | 1109 SyncStatusCode status = GDataErrorCodeToSyncStatusCodeWrapper(error); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1089 sync_client_->ContinueListing( | 1165 sync_client_->ContinueListing( |
1090 next_feed_url, | 1166 next_feed_url, |
1091 base::Bind( | 1167 base::Bind( |
1092 &DriveFileSyncService::DidGetDirectoryContentForBatchSync, | 1168 &DriveFileSyncService::DidGetDirectoryContentForBatchSync, |
1093 AsWeakPtr(), base::Passed(&token), origin, largest_changestamp)); | 1169 AsWeakPtr(), base::Passed(&token), origin, largest_changestamp)); |
1094 return; | 1170 return; |
1095 } | 1171 } |
1096 | 1172 |
1097 // Move |origin| to the incremental sync origin set if the origin has no file. | 1173 // Move |origin| to the incremental sync origin set if the origin has no file. |
1098 if (metadata_store_->IsBatchSyncOrigin(origin) && | 1174 if (metadata_store_->IsBatchSyncOrigin(origin) && |
1175 !metadata_store_->IsOriginDisabled(origin) && | |
kinuko
2013/03/18 18:09:43
Could this (origin is batch-sync and disabled) hap
nhiroki
2013/03/19 02:35:42
I thought this may happen in situations like you m
kinuko
2013/03/19 02:44:44
Yup, as far as I understand the only possible inco
| |
1099 !ContainsKey(origin_to_changes_map_, origin)) { | 1176 !ContainsKey(origin_to_changes_map_, origin)) { |
1100 metadata_store_->MoveBatchSyncOriginToIncremental(origin); | 1177 metadata_store_->MoveBatchSyncOriginToIncremental(origin); |
1101 } | 1178 } |
1102 | 1179 |
1103 // If this was the last batch sync origin and push_notification is enabled | 1180 // If this was the last batch sync origin and push_notification is enabled |
1104 // (indicates that we may have longer polling cycle), trigger the first | 1181 // (indicates that we may have longer polling cycle), trigger the first |
1105 // incremental sync on next task cycle. | 1182 // incremental sync on next task cycle. |
1106 if (pending_batch_sync_origins_.empty() && | 1183 if (pending_batch_sync_origins_.empty() && |
1107 push_notification_enabled_) { | 1184 push_notification_enabled_) { |
1108 may_have_unfetched_changes_ = true; | 1185 may_have_unfetched_changes_ = true; |
1109 } | 1186 } |
1110 | 1187 |
1111 NotifyTaskDone(SYNC_STATUS_OK, token.Pass()); | 1188 NotifyTaskDone(SYNC_STATUS_OK, token.Pass()); |
1112 } | 1189 } |
1113 | 1190 |
1114 void DriveFileSyncService::DidRemoveOriginOnMetadataStore( | 1191 void DriveFileSyncService::DidChangeOriginOnMetadataStore( |
1115 scoped_ptr<TaskToken> token, | 1192 scoped_ptr<TaskToken> token, |
1116 const SyncStatusCallback& callback, | 1193 const SyncStatusCallback& callback, |
1117 SyncStatusCode status) { | 1194 SyncStatusCode status) { |
1118 NotifyTaskDone(status, token.Pass()); | 1195 NotifyTaskDone(status, token.Pass()); |
1119 callback.Run(status); | 1196 callback.Run(status); |
1120 } | 1197 } |
1121 | 1198 |
1122 void DriveFileSyncService::DidGetRemoteFileMetadata( | 1199 void DriveFileSyncService::DidGetRemoteFileMetadata( |
1123 const SyncFileMetadataCallback& callback, | 1200 const SyncFileMetadataCallback& callback, |
1124 google_apis::GDataErrorCode error, | 1201 google_apis::GDataErrorCode error, |
(...skipping 859 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1984 PathToChangeMap::iterator found_change = path_to_change->find(url.path()); | 2061 PathToChangeMap::iterator found_change = path_to_change->find(url.path()); |
1985 if (found_change == path_to_change->end()) | 2062 if (found_change == path_to_change->end()) |
1986 return; | 2063 return; |
1987 | 2064 |
1988 pending_changes_.erase(found_change->second.position_in_queue); | 2065 pending_changes_.erase(found_change->second.position_in_queue); |
1989 path_to_change->erase(found_change); | 2066 path_to_change->erase(found_change); |
1990 if (path_to_change->empty()) | 2067 if (path_to_change->empty()) |
1991 origin_to_changes_map_.erase(found_origin); | 2068 origin_to_changes_map_.erase(found_origin); |
1992 | 2069 |
1993 if (metadata_store_->IsBatchSyncOrigin(url.origin()) && | 2070 if (metadata_store_->IsBatchSyncOrigin(url.origin()) && |
2071 !metadata_store_->IsOriginDisabled(url.origin()) && | |
kinuko
2013/03/18 18:09:43
ditto.
nhiroki
2013/03/19 02:35:42
Done.
| |
1994 !ContainsKey(origin_to_changes_map_, url.origin())) { | 2072 !ContainsKey(origin_to_changes_map_, url.origin())) { |
1995 metadata_store_->MoveBatchSyncOriginToIncremental(url.origin()); | 2073 metadata_store_->MoveBatchSyncOriginToIncremental(url.origin()); |
1996 } | 2074 } |
1997 } | 2075 } |
1998 | 2076 |
1999 bool DriveFileSyncService::GetPendingChangeForFileSystemURL( | 2077 bool DriveFileSyncService::GetPendingChangeForFileSystemURL( |
2000 const FileSystemURL& url, | 2078 const FileSystemURL& url, |
2001 RemoteChange* change) const { | 2079 RemoteChange* change) const { |
2002 DCHECK(change); | 2080 DCHECK(change); |
2003 OriginToChangesMap::const_iterator found_url = | 2081 OriginToChangesMap::const_iterator found_url = |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2280 DCHECK_EQ(SYNC_ACTION_NONE, action_taken); | 2358 DCHECK_EQ(SYNC_ACTION_NONE, action_taken); |
2281 DCHECK_EQ(SYNC_DIRECTION_NONE, direction); | 2359 DCHECK_EQ(SYNC_DIRECTION_NONE, direction); |
2282 } | 2360 } |
2283 | 2361 |
2284 FOR_EACH_OBSERVER( | 2362 FOR_EACH_OBSERVER( |
2285 FileStatusObserver, file_status_observers_, | 2363 FileStatusObserver, file_status_observers_, |
2286 OnFileStatusChanged(url, sync_status, action_taken, direction)); | 2364 OnFileStatusChanged(url, sync_status, action_taken, direction)); |
2287 } | 2365 } |
2288 | 2366 |
2289 } // namespace sync_file_system | 2367 } // namespace sync_file_system |
OLD | NEW |