| Index: chrome/browser/chromeos/drive/file_system/search_operation.cc | 
| diff --git a/chrome/browser/chromeos/drive/file_system/search_operation.cc b/chrome/browser/chromeos/drive/file_system/search_operation.cc | 
| index d1663f844fbf9eef06335dae59073f2a0476b533..8b8d16f706b34ede8a1eaefd1578963a2d6abae2 100644 | 
| --- a/chrome/browser/chromeos/drive/file_system/search_operation.cc | 
| +++ b/chrome/browser/chromeos/drive/file_system/search_operation.cc | 
| @@ -11,6 +11,7 @@ | 
| #include "base/bind_helpers.h" | 
| #include "base/callback.h" | 
| #include "base/task_runner_util.h" | 
| +#include "chrome/browser/chromeos/drive/change_list_loader.h" | 
| #include "chrome/browser/chromeos/drive/file_system_util.h" | 
| #include "chrome/browser/chromeos/drive/job_scheduler.h" | 
| #include "chrome/browser/chromeos/drive/resource_entry_conversion.h" | 
| @@ -79,10 +80,12 @@ FileError ResolveSearchResultOnBlockingPool( | 
| SearchOperation::SearchOperation( | 
| base::SequencedTaskRunner* blocking_task_runner, | 
| JobScheduler* scheduler, | 
| -    internal::ResourceMetadata* metadata) | 
| +    internal::ResourceMetadata* metadata, | 
| +    internal::LoaderController* loader_controller) | 
| : blocking_task_runner_(blocking_task_runner), | 
| scheduler_(scheduler), | 
| metadata_(metadata), | 
| +      loader_controller_(loader_controller), | 
| weak_ptr_factory_(this) { | 
| } | 
|  | 
| @@ -137,9 +140,14 @@ void SearchOperation::SearchAfterGetResourceList( | 
| return; | 
| } | 
|  | 
| +  // ResolveSearchResultOnBlockingPool() may add entries newly created on the | 
| +  // server to the local metadata. | 
| +  // This may race with sync tasks so we should ask LoaderController here. | 
| std::vector<SearchResultInfo>* result_ptr = result.get(); | 
| -  base::PostTaskAndReplyWithResult( | 
| -      blocking_task_runner_.get(), | 
| +  loader_controller_->ScheduleRun(base::Bind( | 
| +      base::IgnoreResult( | 
| +          &base::PostTaskAndReplyWithResult<FileError, FileError>), | 
| +      blocking_task_runner_, | 
| FROM_HERE, | 
| base::Bind(&ResolveSearchResultOnBlockingPool, | 
| metadata_, | 
| @@ -149,7 +157,7 @@ void SearchOperation::SearchAfterGetResourceList( | 
| weak_ptr_factory_.GetWeakPtr(), | 
| callback, | 
| next_url, | 
| -                 base::Passed(&result))); | 
| +                 base::Passed(&result)))); | 
| } | 
|  | 
| void SearchOperation::SearchAfterResolveSearchResult( | 
|  |