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

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

Issue 11227020: Set root resource ID upon full feed update. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix for comments Created 8 years, 2 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/drive_feed_loader.cc
diff --git a/chrome/browser/chromeos/drive/drive_feed_loader.cc b/chrome/browser/chromeos/drive/drive_feed_loader.cc
index f92a585b6648fb387d023170fad07a92c3a1ccf0..cafb94573a90ed5cc1cb3b17baa76eaececa9cc2 100644
--- a/chrome/browser/chromeos/drive/drive_feed_loader.cc
+++ b/chrome/browser/chromeos/drive/drive_feed_loader.cc
@@ -381,7 +381,10 @@ void DriveFeedLoader::OnGetAboutResource(
bool changes_detected = true;
int64 largest_changestamp = about_resource->largest_change_id();
- resource_metadata_->InitializeRootEntry(about_resource->root_folder_id());
+
+ // Copy the root resource ID for use in UpdateFromFeed().
+ params->root_resource_id = about_resource->root_folder_id();
+ DCHECK(!params->root_resource_id.empty());
if (local_changestamp >= largest_changestamp) {
if (local_changestamp > largest_changestamp) {
@@ -494,7 +497,8 @@ void DriveFeedLoader::OnFeedFromServerLoaded(scoped_ptr<LoadFeedParams> params,
UpdateFromFeed(params->feed_list,
params->start_changestamp,
- params->root_feed_changestamp);
+ params->root_feed_changestamp,
+ params->root_resource_id);
// Save file system metadata to disk.
SaveFileSystem();
@@ -887,12 +891,25 @@ void DriveFeedLoader::SaveFileSystem() {
void DriveFeedLoader::UpdateFromFeed(
const ScopedVector<google_apis::DocumentFeed>& feed_list,
int64 start_changestamp,
- int64 root_feed_changestamp) {
+ int64 root_feed_changestamp,
+ const std::string& root_resource_id) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DVLOG(1) << "Updating directory with a feed";
std::set<FilePath> changed_dirs;
+ if (start_changestamp == 0) {
+ // This is a full fetch and on full fetch the root has to be initialized
+ // before children are added by DriveFeedProcessor.
+ if (google_apis::util::IsDriveV2ApiEnabled()) {
+ DCHECK(!root_resource_id.empty());
+ resource_metadata_->SetRootResourceId(root_resource_id);
+ } else {
+ // Use fixed root resource ID for WAPI.
+ resource_metadata_->SetRootResourceId(kWAPIRootDirectoryResourceId);
+ }
+ }
+
DriveFeedProcessor feed_processor(resource_metadata_);
feed_processor.ApplyFeeds(
feed_list,

Powered by Google App Engine
This is Rietveld 408576698