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, |