| 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 9f19c7e7a415bf882bbf793ae13024a68d977825..2811457ce12c546e76d2183e12f8efc0f0f65457 100644
|
| --- a/chrome/browser/sync_file_system/sync_file_system_service.cc
|
| +++ b/chrome/browser/sync_file_system/sync_file_system_service.cc
|
| @@ -132,7 +132,7 @@ void DidGetFileSyncStatusForDump(
|
| if (++*num_results < files->GetSize())
|
| return;
|
|
|
| - callback.Run(files);
|
| + callback.Run(*files);
|
| }
|
|
|
| // We need this indirection because WeakPtr can only be bound to methods
|
| @@ -508,28 +508,36 @@ void SyncFileSystemService::DidInitializeFileSystemForDump(
|
| DCHECK(!origin.is_empty());
|
|
|
| if (status != SYNC_STATUS_OK) {
|
| - base::ListValue empty_result;
|
| - callback.Run(&empty_result);
|
| + callback.Run(base::ListValue());
|
| return;
|
| }
|
|
|
| - base::ListValue* files =
|
| - GetRemoteService(origin)->DumpFiles(origin).release();
|
| - if (!files) {
|
| - callback.Run(new base::ListValue);
|
| - return;
|
| - }
|
| + GetRemoteService(origin)->DumpFiles(
|
| + origin,
|
| + base::Bind(
|
| + &SyncFileSystemService::DidDumpFiles,
|
| + AsWeakPtr(),
|
| + origin,
|
| + callback));
|
| +}
|
|
|
| - if (!files->GetSize()) {
|
| - callback.Run(files);
|
| +void SyncFileSystemService::DidDumpFiles(
|
| + const GURL& origin,
|
| + const DumpFilesCallback& callback,
|
| + scoped_ptr<base::ListValue> dump_files) {
|
| + if (!dump_files || !dump_files->GetSize()) {
|
| + callback.Run(base::ListValue());
|
| return;
|
| }
|
|
|
| - base::Callback<void(base::DictionaryValue* file,
|
| - SyncStatusCode sync_status,
|
| - SyncFileStatus sync_file_status)> completion_callback =
|
| - base::Bind(&DidGetFileSyncStatusForDump, base::Owned(files),
|
| - base::Owned(new size_t(0)), callback);
|
| + base::ListValue* files = dump_files.get();
|
| + base::Callback<void(base::DictionaryValue*,
|
| + SyncStatusCode,
|
| + SyncFileStatus)> completion_callback =
|
| + base::Bind(&DidGetFileSyncStatusForDump,
|
| + base::Owned(dump_files.release()),
|
| + base::Owned(new size_t(0)),
|
| + callback);
|
|
|
| // After all metadata loaded, sync status can be added to each entry.
|
| for (size_t i = 0; i < files->GetSize(); ++i) {
|
|
|