Index: chrome/browser/sync_file_system/sync_file_system_service.cc |
diff --git a/chrome/browser/sync_file_system/sync_file_system_service.cc b/chrome/browser/sync_file_system/sync_file_system_service.cc |
index 8fb7b71750986440e968d47b60324e708b6a7e27..ba16d0a70f91b3cbfb83b5e7788dfec5e4411a70 100644 |
--- a/chrome/browser/sync_file_system/sync_file_system_service.cc |
+++ b/chrome/browser/sync_file_system/sync_file_system_service.cc |
@@ -305,12 +305,10 @@ SyncServiceState SyncFileSystemService::GetSyncServiceState() { |
} |
void SyncFileSystemService::GetExtensionStatusMap( |
- std::map<GURL, std::string>* status_map) { |
- DCHECK(status_map); |
- status_map->clear(); |
- remote_service_->GetOriginStatusMap(status_map); |
- if (v2_remote_service_) |
- v2_remote_service_->GetOriginStatusMap(status_map); |
+ const RemoteFileSyncService::StatusMapCallback& callback) { |
+ remote_service_->GetOriginStatusMap( |
+ base::Bind(&SyncFileSystemService::DidGetExtensionStatusMap, |
+ AsWeakPtr(), callback)); |
} |
void SyncFileSystemService::DumpFiles(const GURL& origin, |
@@ -578,6 +576,30 @@ void SyncFileSystemService::DidDumpV2Database( |
callback.Run(*v1list); |
} |
+void SyncFileSystemService::DidGetExtensionStatusMap( |
+ const RemoteFileSyncService::StatusMapCallback& callback, |
+ const RemoteFileSyncService::OriginStatusMap& status_map) { |
+ if (!v2_remote_service_) { |
+ callback.Run(status_map); |
+ return; |
+ } |
+ |
+ v2_remote_service_->GetOriginStatusMap( |
+ base::Bind(&SyncFileSystemService::DidGetV2ExtensionStatusMap, |
+ AsWeakPtr(), callback, status_map)); |
+} |
+ |
+void SyncFileSystemService::DidGetV2ExtensionStatusMap( |
+ const RemoteFileSyncService::StatusMapCallback& callback, |
+ const RemoteFileSyncService::OriginStatusMap& status_map_v1, |
+ const RemoteFileSyncService::OriginStatusMap& status_map_v2) { |
+ // Merge |status_map_v2| into |status_map_v1|. |
+ std::map<GURL, std::string> status_map(status_map_v1); |
+ status_map.insert(status_map_v2.begin(), status_map_v2.end()); |
+ |
+ callback.Run(status_map); |
+} |
+ |
void SyncFileSystemService::SetSyncEnabledForTesting(bool enabled) { |
sync_enabled_ = enabled; |
remote_service_->SetSyncEnabled(sync_enabled_); |