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

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

Issue 14148006: Add an observer interface for DriveScheduler. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Review fix/ Created 7 years, 8 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_scheduler_unittest.cc
diff --git a/chrome/browser/chromeos/drive/drive_scheduler_unittest.cc b/chrome/browser/chromeos/drive/drive_scheduler_unittest.cc
index 6529e157e9eda8d2b4808192e23aaaccbb489d91..9450fca330ee6683a8e35dc34cefbb7edf0a41a6 100644
--- a/chrome/browser/chromeos/drive/drive_scheduler_unittest.cc
+++ b/chrome/browser/chromeos/drive/drive_scheduler_unittest.cc
@@ -4,6 +4,8 @@
#include "chrome/browser/chromeos/drive/drive_scheduler.h"
+#include <set>
+
#include "base/bind.h"
#include "base/file_util.h"
#include "base/json/json_reader.h"
@@ -648,4 +650,82 @@ TEST_F(DriveSchedulerTest, DownloadFileWimaxEnabled) {
EXPECT_EQ("xxxxxxxxxx", content);
}
+TEST_F(DriveSchedulerTest, JobInfo) {
+ // Disable background upload/download.
+ ConnectToWimax();
+ profile_->GetPrefs()->SetBoolean(prefs::kDisableDriveOverCellular, true);
+
+ base::ScopedTempDir temp_dir;
+ ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
+
+ google_apis::GDataErrorCode error = google_apis::GDATA_OTHER_ERROR;
+ scoped_ptr<google_apis::ResourceEntry> entry;
+ scoped_ptr<google_apis::AccountMetadata> account_metadata;
+ base::FilePath path;
+
+ std::set<JobType> expected_types;
+
+ // Add many jobs.
+ expected_types.insert(TYPE_ADD_NEW_DIRECTORY);
+ scheduler_->AddNewDirectory(
+ fake_drive_service_->GetRootResourceId(),
+ "New Directory",
+ google_apis::test_util::CreateCopyResultCallback(&error, &entry));
+ expected_types.insert(TYPE_GET_ACCOUNT_METADATA);
+ scheduler_->GetAccountMetadata(
+ google_apis::test_util::CreateCopyResultCallback(
+ &error, &account_metadata));
+ expected_types.insert(TYPE_RENAME_RESOURCE);
+ scheduler_->RenameResource(
+ "file:2_file_resource_id",
+ "New Name",
+ google_apis::test_util::CreateCopyResultCallback(&error));
+ expected_types.insert(TYPE_DOWNLOAD_FILE);
+ scheduler_->DownloadFile(
+ base::FilePath::FromUTF8Unsafe("/drive/whatever.txt"), // virtual path
+ temp_dir.path().AppendASCII("whatever.txt"),
+ GURL("https://file_content_url/"),
+ DriveClientContext(BACKGROUND),
+ google_apis::test_util::CreateCopyResultCallback(&error, &path),
+ google_apis::GetContentCallback());
+
+ // The number of jobs queued so far.
+ EXPECT_EQ(4U, scheduler_->GetJobInfoList().size());
+
+ // Add more jobs.
+ expected_types.insert(TYPE_ADD_RESOURCE_TO_DIRECTORY);
+ scheduler_->AddResourceToDirectory(
+ "folder:1_folder_resource_id",
+ "file:2_file_resource_id",
+ google_apis::test_util::CreateCopyResultCallback(&error));
+ expected_types.insert(TYPE_COPY_HOSTED_DOCUMENT);
+ scheduler_->CopyHostedDocument(
+ "document:5_document_resource_id",
+ "New Document",
+ google_apis::test_util::CreateCopyResultCallback(&error, &entry));
+
+ // 6 jobs in total were queued.
+ std::vector<JobInfo> jobs = scheduler_->GetJobInfoList();
+ EXPECT_EQ(6U, jobs.size());
+ std::set<JobType> actual_types;
+ for (size_t i = 0; i < jobs.size(); ++i)
+ actual_types.insert(jobs[i].job_type);
+ EXPECT_EQ(expected_types, actual_types);
+
+ // Run the jobs.
+ google_apis::test_util::RunBlockingPoolTask();
+
+ // All jobs except the BACKGROUND job should have finished.
+ jobs = scheduler_->GetJobInfoList();
+ ASSERT_EQ(1U, jobs.size());
+ EXPECT_EQ(TYPE_DOWNLOAD_FILE, jobs[0].job_type);
+
+ // Run the background downloading job as well.
+ ConnectToWifi();
+ google_apis::test_util::RunBlockingPoolTask();
+
+ // All jobs should have finished.
+ EXPECT_EQ(0U, scheduler_->GetJobInfoList().size());
+}
+
} // namespace drive

Powered by Google App Engine
This is Rietveld 408576698