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