Chromium Code Reviews| 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 |