| Index: chrome/browser/chromeos/drive/sync/entry_update_performer.cc
|
| diff --git a/chrome/browser/chromeos/drive/sync/entry_update_performer.cc b/chrome/browser/chromeos/drive/sync/entry_update_performer.cc
|
| index e34367dc215bdb1e7b08f4fb58e330510e681002..9487577bef0e7819a979241019515938330bdffd 100644
|
| --- a/chrome/browser/chromeos/drive/sync/entry_update_performer.cc
|
| +++ b/chrome/browser/chromeos/drive/sync/entry_update_performer.cc
|
| @@ -153,12 +153,12 @@ EntryUpdatePerformer::EntryUpdatePerformer(
|
| JobScheduler* scheduler,
|
| ResourceMetadata* metadata,
|
| FileCache* cache,
|
| - ChangeListLoader* change_list_loader)
|
| + LoaderController* loader_controller)
|
| : blocking_task_runner_(blocking_task_runner),
|
| scheduler_(scheduler),
|
| metadata_(metadata),
|
| cache_(cache),
|
| - change_list_loader_(change_list_loader),
|
| + loader_controller_(loader_controller),
|
| remove_performer_(new RemovePerformer(blocking_task_runner,
|
| observer,
|
| scheduler,
|
| @@ -219,6 +219,10 @@ void EntryUpdatePerformer::UpdateEntryAfterPrepare(
|
| // Perform content update.
|
| if (local_state->should_content_update) {
|
| if (local_state->entry.resource_id().empty()) {
|
| + // Lock the loader to avoid race conditions.
|
| + scoped_ptr<base::ScopedClosureRunner> loader_lock =
|
| + loader_controller_->GetLock();
|
| +
|
| drive::DriveUploader::UploadNewFileOptions options;
|
| options.modified_date = last_modified;
|
| options.last_viewed_by_me_date = last_accessed;
|
| @@ -235,7 +239,7 @@ void EntryUpdatePerformer::UpdateEntryAfterPrepare(
|
| context,
|
| callback,
|
| local_state->entry.local_id(),
|
| - base::Passed(change_list_loader_->GetLock())));
|
| + base::Passed(&loader_lock)));
|
| } else {
|
| drive::DriveUploader::UploadExistingFileOptions options;
|
| options.title = local_state->entry.title();
|
| @@ -280,7 +284,7 @@ void EntryUpdatePerformer::UpdateEntryAfterUpdateResource(
|
| const ClientContext& context,
|
| const FileOperationCallback& callback,
|
| const std::string& local_id,
|
| - scoped_ptr<base::ScopedClosureRunner> change_list_loader_lock,
|
| + scoped_ptr<base::ScopedClosureRunner> loader_lock,
|
| google_apis::GDataErrorCode status,
|
| scoped_ptr<google_apis::ResourceEntry> resource_entry) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
|
|