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

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

Issue 12744008: SyncFS: store disabled origins in DriveMetadataStore (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 9 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 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698