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 |