| Index: chrome/browser/chromeos/drive/sync_client.cc
|
| diff --git a/chrome/browser/chromeos/drive/sync_client.cc b/chrome/browser/chromeos/drive/sync_client.cc
|
| index b00147cfa0c0483415db859a479269e0850e18f6..d56621452e3b8751700c79d23812d931b221638c 100644
|
| --- a/chrome/browser/chromeos/drive/sync_client.cc
|
| +++ b/chrome/browser/chromeos/drive/sync_client.cc
|
| @@ -13,7 +13,6 @@
|
| #include "chrome/browser/chromeos/drive/file_system/download_operation.h"
|
| #include "chrome/browser/chromeos/drive/file_system/operation_observer.h"
|
| #include "chrome/browser/chromeos/drive/file_system_util.h"
|
| -#include "chrome/browser/chromeos/drive/sync/content_update_performer.h"
|
| #include "chrome/browser/chromeos/drive/sync/entry_update_performer.h"
|
| #include "content/public/browser/browser_thread.h"
|
| #include "google_apis/drive/task_util.h"
|
| @@ -45,14 +44,11 @@ const int kDelaySeconds = 5;
|
| const int kLongDelaySeconds = 600;
|
|
|
| // Iterates entries and appends IDs to |to_fetch| if the file is pinned but not
|
| -// fetched (not present locally), to |to_upload| if the file is dirty but not
|
| -// uploaded, or to |to_remove| if the entry is in the trash.
|
| +// fetched (not present locally), to |to_update| if the file needs update.
|
| void CollectBacklog(ResourceMetadata* metadata,
|
| std::vector<std::string>* to_fetch,
|
| - std::vector<std::string>* to_upload,
|
| std::vector<std::string>* to_update) {
|
| DCHECK(to_fetch);
|
| - DCHECK(to_upload);
|
| DCHECK(to_update);
|
|
|
| scoped_ptr<ResourceMetadata::Iterator> it = metadata->GetIterator();
|
| @@ -64,12 +60,13 @@ void CollectBacklog(ResourceMetadata* metadata,
|
| continue;
|
| }
|
|
|
| + bool should_update = false;
|
| switch (entry.metadata_edit_state()) {
|
| case ResourceEntry::CLEAN:
|
| break;
|
| case ResourceEntry::SYNCING:
|
| case ResourceEntry::DIRTY:
|
| - to_update->push_back(local_id);
|
| + should_update = true;
|
| break;
|
| }
|
|
|
| @@ -79,8 +76,10 @@ void CollectBacklog(ResourceMetadata* metadata,
|
| to_fetch->push_back(local_id);
|
|
|
| if (cache_entry.is_dirty())
|
| - to_upload->push_back(local_id);
|
| + should_update = true;
|
| }
|
| + if (should_update)
|
| + to_update->push_back(local_id);
|
| }
|
| DCHECK(!it->HasError());
|
| }
|
| @@ -149,15 +148,11 @@ SyncClient::SyncClient(base::SequencedTaskRunner* blocking_task_runner,
|
| metadata,
|
| cache,
|
| temporary_file_directory)),
|
| - content_update_performer_(
|
| - new file_system::ContentUpdatePerformer(blocking_task_runner,
|
| - scheduler,
|
| - metadata,
|
| - cache)),
|
| entry_update_performer_(new EntryUpdatePerformer(blocking_task_runner,
|
| observer,
|
| scheduler,
|
| - metadata)),
|
| + metadata,
|
| + cache)),
|
| delay_(base::TimeDelta::FromSeconds(kDelaySeconds)),
|
| long_delay_(base::TimeDelta::FromSeconds(kLongDelaySeconds)),
|
| weak_ptr_factory_(this) {
|
| @@ -172,16 +167,14 @@ void SyncClient::StartProcessingBacklog() {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
|
|
| std::vector<std::string>* to_fetch = new std::vector<std::string>;
|
| - std::vector<std::string>* to_upload = new std::vector<std::string>;
|
| - std::vector<std::string>* to_remove = new std::vector<std::string>;
|
| + std::vector<std::string>* to_update = new std::vector<std::string>;
|
| blocking_task_runner_->PostTaskAndReply(
|
| FROM_HERE,
|
| - base::Bind(&CollectBacklog, metadata_, to_fetch, to_upload, to_remove),
|
| + base::Bind(&CollectBacklog, metadata_, to_fetch, to_update),
|
| base::Bind(&SyncClient::OnGetLocalIdsOfBacklog,
|
| weak_ptr_factory_.GetWeakPtr(),
|
| base::Owned(to_fetch),
|
| - base::Owned(to_upload),
|
| - base::Owned(to_remove)));
|
| + base::Owned(to_update)));
|
| }
|
|
|
| void SyncClient::StartCheckingExistingPinnedFiles() {
|
| @@ -225,13 +218,14 @@ void SyncClient::RemoveFetchTask(const std::string& local_id) {
|
| void SyncClient::AddUploadTask(const ClientContext& context,
|
| const std::string& local_id) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - AddUploadTaskInternal(context, local_id, delay_);
|
| + // TODO(hashimoto): Remove this method.
|
| + AddUpdateTask(context, local_id);
|
| }
|
|
|
| void SyncClient::AddUpdateTask(const ClientContext& context,
|
| const std::string& local_id) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - AddUpdateTaskInternal(context, local_id, base::TimeDelta::FromSeconds(0));
|
| + AddUpdateTaskInternal(context, local_id, delay_);
|
| }
|
|
|
| void SyncClient::AddFetchTaskInternal(const std::string& local_id,
|
| @@ -252,23 +246,6 @@ void SyncClient::AddFetchTaskInternal(const std::string& local_id,
|
| AddTask(SyncTasks::key_type(FETCH, local_id), task, delay);
|
| }
|
|
|
| -void SyncClient::AddUploadTaskInternal(const ClientContext& context,
|
| - const std::string& local_id,
|
| - const base::TimeDelta& delay) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| -
|
| - SyncTask task;
|
| - task.task = base::Bind(
|
| - &file_system::ContentUpdatePerformer::UpdateFileByLocalId,
|
| - base::Unretained(content_update_performer_.get()),
|
| - local_id,
|
| - context,
|
| - base::Bind(&SyncClient::OnUploadFileComplete,
|
| - weak_ptr_factory_.GetWeakPtr(),
|
| - local_id));
|
| - AddTask(SyncTasks::key_type(UPLOAD, local_id), task, delay);
|
| -}
|
| -
|
| void SyncClient::AddUpdateTaskInternal(const ClientContext& context,
|
| const std::string& local_id,
|
| const base::TimeDelta& delay) {
|
| @@ -330,16 +307,15 @@ void SyncClient::StartTask(const SyncTasks::key_type& key) {
|
|
|
| void SyncClient::OnGetLocalIdsOfBacklog(
|
| const std::vector<std::string>* to_fetch,
|
| - const std::vector<std::string>* to_upload,
|
| const std::vector<std::string>* to_update) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
|
|
| // Give priority to upload tasks over fetch tasks, so that dirty files are
|
| // uploaded as soon as possible.
|
| - for (size_t i = 0; i < to_upload->size(); ++i) {
|
| - const std::string& local_id = (*to_upload)[i];
|
| - DVLOG(1) << "Queuing to upload: " << local_id;
|
| - AddUploadTaskInternal(ClientContext(BACKGROUND), local_id, delay_);
|
| + for (size_t i = 0; i < to_update->size(); ++i) {
|
| + const std::string& local_id = (*to_update)[i];
|
| + DVLOG(1) << "Queuing to update: " << local_id;
|
| + AddUpdateTask(ClientContext(BACKGROUND), local_id);
|
| }
|
|
|
| for (size_t i = 0; i < to_fetch->size(); ++i) {
|
| @@ -347,12 +323,6 @@ void SyncClient::OnGetLocalIdsOfBacklog(
|
| DVLOG(1) << "Queuing to fetch: " << local_id;
|
| AddFetchTaskInternal(local_id, delay_);
|
| }
|
| -
|
| - for (size_t i = 0; i < to_update->size(); ++i) {
|
| - const std::string& local_id = (*to_update)[i];
|
| - DVLOG(1) << "Queuing to update: " << local_id;
|
| - AddUpdateTask(ClientContext(BACKGROUND), local_id);
|
| - }
|
| }
|
|
|
| void SyncClient::AddFetchTasks(const std::vector<std::string>* local_ids) {
|
| @@ -423,38 +393,6 @@ void SyncClient::OnFetchFileComplete(const std::string& local_id,
|
| }
|
| }
|
|
|
| -void SyncClient::OnUploadFileComplete(const std::string& local_id,
|
| - FileError error) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| -
|
| - if (!OnTaskComplete(UPLOAD, local_id))
|
| - return;
|
| -
|
| - if (error == FILE_ERROR_OK) {
|
| - DVLOG(1) << "Uploaded " << local_id;
|
| - } else {
|
| - switch (error) {
|
| - case FILE_ERROR_NO_CONNECTION:
|
| - // Add the task again so that we'll retry once the connection is back.
|
| - AddUploadTaskInternal(ClientContext(BACKGROUND), local_id, delay_);
|
| - break;
|
| - case FILE_ERROR_SERVICE_UNAVAILABLE:
|
| - // Add the task again so that we'll retry once the service is back.
|
| - AddUploadTaskInternal(ClientContext(BACKGROUND), local_id, long_delay_);
|
| - operation_observer_->OnDriveSyncError(
|
| - file_system::DRIVE_SYNC_ERROR_SERVICE_UNAVAILABLE,
|
| - local_id);
|
| - break;
|
| - default:
|
| - operation_observer_->OnDriveSyncError(
|
| - file_system::DRIVE_SYNC_ERROR_MISC,
|
| - local_id);
|
| - LOG(WARNING) << "Failed to upload " << local_id << ": "
|
| - << FileErrorToString(error);
|
| - }
|
| - }
|
| -}
|
| -
|
| void SyncClient::OnUpdateComplete(const std::string& local_id,
|
| FileError error) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
|
|