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

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

Issue 444463005: drive: Trigger "fast fetch" if remote update came during full loading. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 5ecd19e7db2b19f00ecce0bced2c017fa7d733a6..7919c3c25ab8fcb13149641839334b57498f56d7 100644
--- a/chrome/browser/chromeos/drive/change_list_loader.cc
+++ b/chrome/browser/chromeos/drive/change_list_loader.cc
@@ -327,6 +327,15 @@ void ChangeListLoader::CheckForUpdates(const FileOperationCallback& callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(!callback.is_null());
+ // If the metadata is not yet loaded, CheckForUpdates does nothing.
+ if (!loaded_ && !IsRefreshing())
+ return;
+
+ // For each CheckForUpdates() request, always refresh the changestamp info.
+ about_resource_loader_->UpdateAboutResource(
+ base::Bind(&ChangeListLoader::OnAboutResourceUpdated,
+ weak_ptr_factory_.GetWeakPtr()));
+
if (IsRefreshing()) {
// There is in-flight loading. So keep the callback here, and check for
// updates when the in-flight loading is completed.
@@ -348,8 +357,12 @@ void ChangeListLoader::LoadIfNeeded(const FileOperationCallback& callback) {
DCHECK(!callback.is_null());
// If the metadata is not yet loaded, start loading.
- if (!loaded_)
+ if (!loaded_ && !IsRefreshing()) {
+ about_resource_loader_->UpdateAboutResource(
hashimoto 2014/08/06 05:55:43 GetAboutResource() requests the resource if not av
kinaba 2014/08/06 06:16:54 Good point. Done.
+ base::Bind(&ChangeListLoader::OnAboutResourceUpdated,
+ weak_ptr_factory_.GetWeakPtr()));
Load(callback);
+ }
}
void ChangeListLoader::Load(const FileOperationCallback& callback) {
@@ -402,7 +415,7 @@ void ChangeListLoader::LoadAfterGetLargestChangestamp(
base::Bind(&util::EmptyFileOperationCallback));
}
- about_resource_loader_->UpdateAboutResource(
+ about_resource_loader_->GetAboutResource(
base::Bind(&ChangeListLoader::LoadAfterGetAboutResource,
weak_ptr_factory_.GetWeakPtr(),
*local_changestamp));
@@ -463,6 +476,22 @@ void ChangeListLoader::OnChangeListLoadComplete(FileError error) {
}
}
+void ChangeListLoader::OnAboutResourceUpdated(
+ google_apis::GDataErrorCode error,
+ scoped_ptr<google_apis::AboutResource> resource) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ if (drive::GDataToFileError(error) != drive::FILE_ERROR_OK) {
+ logger_->Log(logging::LOG_ERROR,
+ "Failed to update the about resource: %s",
+ google_apis::GDataErrorCodeToString(error).c_str());
+ return;
+ }
+ logger_->Log(logging::LOG_INFO,
+ "About resource updated to: %s",
+ base::Int64ToString(resource->largest_change_id()).c_str());
+}
+
void ChangeListLoader::LoadChangeListFromServer(int64 start_changestamp) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(!change_feed_fetcher_);
« no previous file with comments | « chrome/browser/chromeos/drive/change_list_loader.h ('k') | chrome/browser/chromeos/drive/directory_loader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698