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

Unified Diff: chrome/browser/chromeos/drive/sync/entry_update_performer.cc

Issue 150113002: drive: Also lock SearchOperation when locking ChangeListLoader (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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 side-by-side diff with in-line comments
Download patch
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));

Powered by Google App Engine
This is Rietveld 408576698