Chromium Code Reviews| 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 93b24c01bb96c486374174dcf7481c2313c4642d..c4a15751ca9da68675863a4ea4da82eac0739f06 100644 |
| --- a/chrome/browser/chromeos/drive/change_list_loader.cc |
| +++ b/chrome/browser/chromeos/drive/change_list_loader.cc |
| @@ -265,10 +265,11 @@ void ChangeListLoader::LoadFromServerIfNeededAfterGetAbout( |
| DCHECK(!callback.is_null()); |
| DCHECK(refreshing_); |
| - int64 remote_changestamp = 0; |
| if (util::GDataToDriveFileError(status) == DRIVE_FILE_OK) { |
| - DCHECK(about_resource); |
| - remote_changestamp = about_resource->largest_change_id(); |
| + DCHECK(about_resource.get()); |
|
hidehiko
2013/03/18 06:22:27
Do you want to:
DCHECK_EQ(util::GDataToDriveFileEr
Haruki Sato
2013/03/18 07:06:41
Done. Thanks!
This actually is rather a debugging
|
| + } else { |
| + DCHECK(!about_resource.get()); |
| + // ERROR here???? |
| } |
| resource_metadata_->GetLargestChangestamp( |
| @@ -276,18 +277,20 @@ void ChangeListLoader::LoadFromServerIfNeededAfterGetAbout( |
| weak_ptr_factory_.GetWeakPtr(), |
| directory_fetch_info, |
| callback, |
| - remote_changestamp)); |
| + base::Passed(about_resource.Pass()))); |
|
hidehiko
2013/03/18 06:22:27
base::Passed(&about_resource) ? Ditto for below.
Haruki Sato
2013/03/18 07:06:41
Done. Thanks.
|
| } |
| void ChangeListLoader::CompareChangestampsAndLoadIfNeeded( |
| const DirectoryFetchInfo& directory_fetch_info, |
| const FileOperationCallback& callback, |
| - int64 remote_changestamp, |
| + scoped_ptr<google_apis::AboutResource> about_resource, |
| int64 local_changestamp) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| DCHECK(!callback.is_null()); |
| DCHECK(refreshing_); |
| + int64 remote_changestamp = |
| + about_resource ? about_resource->largest_change_id() : 0; |
| if (remote_changestamp > 0 && local_changestamp >= remote_changestamp) { |
| if (local_changestamp > remote_changestamp) { |
| LOG(WARNING) << "Cached client feed is fresher than server, client = " |
| @@ -302,16 +305,22 @@ void ChangeListLoader::CompareChangestampsAndLoadIfNeeded( |
| } |
| int64 start_changestamp = local_changestamp > 0 ? local_changestamp + 1 : 0; |
| + if (start_changestamp == 0 && !about_resource.get()) { |
| + // Full update needs AboutResource. If this is a full update, we should just |
| + // give up. |
| + callback.Run(DRIVE_FILE_ERROR_FAILED); |
| + return; |
| + } |
| // TODO(satorux): Use directory_fetch_info to start "fast-fetch" here. |
| - LoadChangeListFromServer(start_changestamp, |
| - remote_changestamp, |
| + LoadChangeListFromServer(about_resource.Pass(), |
| + start_changestamp, |
| callback); |
| } |
| void ChangeListLoader::LoadChangeListFromServer( |
| + scoped_ptr<google_apis::AboutResource> about_resource, |
| int64 start_changestamp, |
| - int64 remote_changestamp, |
| const FileOperationCallback& callback) { |
| scoped_ptr<LoadFeedParams> load_params(new LoadFeedParams); |
| load_params->start_changestamp = start_changestamp; |
| @@ -319,8 +328,8 @@ void ChangeListLoader::LoadChangeListFromServer( |
| load_params.Pass(), |
| base::Bind(&ChangeListLoader::UpdateMetadataFromFeedAfterLoadFromServer, |
| weak_ptr_factory_.GetWeakPtr(), |
| + base::Passed(about_resource.Pass()), |
| start_changestamp != 0, // is_delta_feed |
| - remote_changestamp, |
| callback)); |
| } |
| @@ -471,8 +480,8 @@ void ChangeListLoader::SearchFromServer( |
| } |
| void ChangeListLoader::UpdateMetadataFromFeedAfterLoadFromServer( |
| + scoped_ptr<google_apis::AboutResource> about_resource, |
| bool is_delta_feed, |
| - int64 feed_changestamp, |
| const FileOperationCallback& callback, |
| const ScopedVector<google_apis::ResourceList>& feed_list, |
| DriveFileError error) { |
| @@ -485,9 +494,9 @@ void ChangeListLoader::UpdateMetadataFromFeedAfterLoadFromServer( |
| return; |
| } |
| - UpdateFromFeed(feed_list, |
| + UpdateFromFeed(about_resource.Pass(), |
| + feed_list, |
| is_delta_feed, |
| - feed_changestamp, |
| base::Bind(&ChangeListLoader::OnUpdateFromFeed, |
| weak_ptr_factory_.GetWeakPtr(), |
| callback)); |
| @@ -733,9 +742,9 @@ void ChangeListLoader::SaveFileSystem() { |
| } |
| void ChangeListLoader::UpdateFromFeed( |
| + scoped_ptr<google_apis::AboutResource> about_resource, |
| const ScopedVector<google_apis::ResourceList>& feed_list, |
| bool is_delta_feed, |
| - int64 root_feed_changestamp, |
| const base::Closure& update_finished_callback) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| DCHECK(!update_finished_callback.is_null()); |
| @@ -747,9 +756,9 @@ void ChangeListLoader::UpdateFromFeed( |
| const bool should_notify_changed_directories = is_delta_feed; |
| change_list_processor_->ApplyFeeds( |
| + about_resource.Pass(), |
| feed_list, |
| is_delta_feed, |
| - root_feed_changestamp, |
| base::Bind(&ChangeListLoader::NotifyDirectoryChanged, |
| weak_ptr_factory_.GetWeakPtr(), |
| should_notify_changed_directories, |