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

Unified Diff: chrome/browser/chromeos/drive/change_list_loader.cc

Issue 12588009: drive: Pass through AboutResouce from server among callbacks in ChangeListLoader. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix unittest, remove garbage. Created 7 years, 9 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/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,

Powered by Google App Engine
This is Rietveld 408576698