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 43ccbc9858c34ab0e5d7fe3568fc01217c960794..28af5d9df895d48fa9deb18650138f57fd06f96e 100644 |
--- a/chrome/browser/chromeos/drive/change_list_loader.cc |
+++ b/chrome/browser/chromeos/drive/change_list_loader.cc |
@@ -17,6 +17,7 @@ |
#include "chrome/browser/chromeos/drive/logging.h" |
#include "chrome/browser/chromeos/drive/resource_metadata.h" |
#include "chrome/browser/drive/drive_api_util.h" |
+#include "chrome/browser/drive/drive_service_interface.h" |
#include "chrome/browser/google_apis/drive_api_parser.h" |
#include "content/public/browser/browser_thread.h" |
#include "url/gurl.h" |
@@ -178,9 +179,11 @@ class DeltaFeedFetcher : public ChangeListLoader::FeedFetcher { |
class FastFetchFeedFetcher : public ChangeListLoader::FeedFetcher { |
public: |
FastFetchFeedFetcher(JobScheduler* scheduler, |
+ DriveServiceInterface* drive_service, |
const std::string& directory_resource_id, |
const std::string& root_folder_id) |
: scheduler_(scheduler), |
+ drive_service_(drive_service), |
directory_resource_id_(directory_resource_id), |
root_folder_id_(root_folder_id), |
weak_ptr_factory_(this) { |
@@ -279,32 +282,31 @@ class FastFetchFeedFetcher : public ChangeListLoader::FeedFetcher { |
callback.Run(FILE_ERROR_OK, change_lists_.Pass()); |
} |
+ // Fixes resource IDs in |change_list| into the format that |drive_service_| |
+ // can understand. Note that |change_list| contains IDs in GData WAPI format |
+ // since currently we always use WAPI for fast fetch, regardless of the flag. |
void FixResourceIdInChangeList(ChangeList* change_list) { |
std::vector<ResourceEntry>* entries = change_list->mutable_entries(); |
for (size_t i = 0; i < entries->size(); ++i) { |
ResourceEntry* entry = &(*entries)[i]; |
- if (entry->has_resource_id()) { |
- entry->set_resource_id(UpgradeResourceIdFromGDataWapiToDriveApiV2( |
- entry->resource_id())); |
- } |
+ if (entry->has_resource_id()) |
+ entry->set_resource_id(FixResourceId(entry->resource_id())); |
// Currently parent local id is the parent's resource id. |
// It will be replaced by actual local id. (crbug.com/260514). |
- if (entry->has_parent_local_id()) { |
- entry->set_parent_local_id(UpgradeResourceIdFromGDataWapiToDriveApiV2( |
- entry->parent_local_id())); |
- } |
+ if (entry->has_parent_local_id()) |
+ entry->set_parent_local_id(FixResourceId(entry->parent_local_id())); |
} |
} |
- std::string UpgradeResourceIdFromGDataWapiToDriveApiV2( |
- const std::string& resource_id) { |
+ std::string FixResourceId(const std::string& resource_id) { |
if (resource_id == util::kWapiRootDirectoryResourceId) |
return root_folder_id_; |
- return drive::util::CanonicalizeResourceId(resource_id); |
+ return drive_service_->CanonicalizeResourceId(resource_id); |
} |
JobScheduler* scheduler_; |
+ DriveServiceInterface* drive_service_; |
std::string directory_resource_id_; |
std::string root_folder_id_; |
ScopedVector<ChangeList> change_lists_; |
@@ -317,10 +319,12 @@ class FastFetchFeedFetcher : public ChangeListLoader::FeedFetcher { |
ChangeListLoader::ChangeListLoader( |
base::SequencedTaskRunner* blocking_task_runner, |
ResourceMetadata* resource_metadata, |
- JobScheduler* scheduler) |
+ JobScheduler* scheduler, |
+ DriveServiceInterface* drive_service) |
: blocking_task_runner_(blocking_task_runner), |
resource_metadata_(resource_metadata), |
scheduler_(scheduler), |
+ drive_service_(drive_service), |
last_known_remote_changestamp_(0), |
loaded_(false), |
weak_ptr_factory_(this) { |
@@ -769,6 +773,7 @@ void ChangeListLoader::DoLoadDirectoryFromServer( |
FastFetchFeedFetcher* fetcher = new FastFetchFeedFetcher( |
scheduler_, |
+ drive_service_, |
directory_fetch_info.resource_id(), |
root_folder_id_); |
fast_fetch_feed_fetcher_set_.insert(fetcher); |