Index: chrome/browser/chromeos/drive/change_list_loader.cc |
diff --git a/chrome/browser/chromeos/drive/change_list_loader.cc b/chrome/browser/chromeos/drive/change_list_loader.cc |
index c8a1b638eac5e481fae2c797bb5192ed5fc4f232..ef9e2b96dc7925e2162b066c3dd279a3cf59a737 100644 |
--- a/chrome/browser/chromeos/drive/change_list_loader.cc |
+++ b/chrome/browser/chromeos/drive/change_list_loader.cc |
@@ -352,21 +352,31 @@ void ChangeListLoader::Load(const FileOperationCallback& callback) { |
return; |
// Check the current status of local metadata, and start loading if needed. |
+ int64* local_changestamp = new int64(0); |
base::PostTaskAndReplyWithResult( |
blocking_task_runner_, |
FROM_HERE, |
base::Bind(&ResourceMetadata::GetLargestChangestamp, |
- base::Unretained(resource_metadata_)), |
+ base::Unretained(resource_metadata_), |
+ local_changestamp), |
base::Bind(&ChangeListLoader::LoadAfterGetLargestChangestamp, |
weak_ptr_factory_.GetWeakPtr(), |
- is_initial_load)); |
+ is_initial_load, |
+ base::Owned(local_changestamp))); |
} |
-void ChangeListLoader::LoadAfterGetLargestChangestamp(bool is_initial_load, |
- int64 local_changestamp) { |
+void ChangeListLoader::LoadAfterGetLargestChangestamp( |
+ bool is_initial_load, |
+ const int64* local_changestamp, |
+ FileError error) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- if (is_initial_load && local_changestamp > 0) { |
+ if (error != FILE_ERROR_OK) { |
+ OnChangeListLoadComplete(error); |
+ return; |
+ } |
+ |
+ if (is_initial_load && *local_changestamp > 0) { |
// The local data is usable. Flush callbacks to tell loading was successful. |
OnChangeListLoadComplete(FILE_ERROR_OK); |
@@ -379,7 +389,7 @@ void ChangeListLoader::LoadAfterGetLargestChangestamp(bool is_initial_load, |
about_resource_loader_->UpdateAboutResource( |
base::Bind(&ChangeListLoader::LoadAfterGetAboutResource, |
weak_ptr_factory_.GetWeakPtr(), |
- local_changestamp)); |
+ *local_changestamp)); |
} |
void ChangeListLoader::LoadAfterGetAboutResource( |