| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/drive/job_scheduler.h" | 5 #include "components/drive/job_scheduler.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <set> | 10 #include <set> |
| (...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 580 ConnectToCellular(); | 580 ConnectToCellular(); |
| 581 | 581 |
| 582 // Disable fetching over cellular network. | 582 // Disable fetching over cellular network. |
| 583 pref_service_->SetBoolean(prefs::kDisableDriveOverCellular, true); | 583 pref_service_->SetBoolean(prefs::kDisableDriveOverCellular, true); |
| 584 | 584 |
| 585 // Try to get a file in the background | 585 // Try to get a file in the background |
| 586 base::ScopedTempDir temp_dir; | 586 base::ScopedTempDir temp_dir; |
| 587 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 587 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 588 | 588 |
| 589 const base::FilePath kOutputFilePath = | 589 const base::FilePath kOutputFilePath = |
| 590 temp_dir.path().AppendASCII("whatever.txt"); | 590 temp_dir.GetPath().AppendASCII("whatever.txt"); |
| 591 google_apis::DriveApiErrorCode download_error = | 591 google_apis::DriveApiErrorCode download_error = |
| 592 google_apis::DRIVE_OTHER_ERROR; | 592 google_apis::DRIVE_OTHER_ERROR; |
| 593 base::FilePath output_file_path; | 593 base::FilePath output_file_path; |
| 594 scheduler_->DownloadFile( | 594 scheduler_->DownloadFile( |
| 595 base::FilePath::FromUTF8Unsafe("drive/whatever.txt"), // virtual path | 595 base::FilePath::FromUTF8Unsafe("drive/whatever.txt"), // virtual path |
| 596 kDummyDownloadFileSize, | 596 kDummyDownloadFileSize, |
| 597 kOutputFilePath, | 597 kOutputFilePath, |
| 598 "2_file_resource_id", | 598 "2_file_resource_id", |
| 599 ClientContext(BACKGROUND), | 599 ClientContext(BACKGROUND), |
| 600 google_apis::test_util::CreateCopyResultCallback( | 600 google_apis::test_util::CreateCopyResultCallback( |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 635 ConnectToWimax(); | 635 ConnectToWimax(); |
| 636 | 636 |
| 637 // Disable fetching over cellular network. | 637 // Disable fetching over cellular network. |
| 638 pref_service_->SetBoolean(prefs::kDisableDriveOverCellular, true); | 638 pref_service_->SetBoolean(prefs::kDisableDriveOverCellular, true); |
| 639 | 639 |
| 640 // Try to get a file in the background | 640 // Try to get a file in the background |
| 641 base::ScopedTempDir temp_dir; | 641 base::ScopedTempDir temp_dir; |
| 642 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 642 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 643 | 643 |
| 644 const base::FilePath kOutputFilePath = | 644 const base::FilePath kOutputFilePath = |
| 645 temp_dir.path().AppendASCII("whatever.txt"); | 645 temp_dir.GetPath().AppendASCII("whatever.txt"); |
| 646 google_apis::DriveApiErrorCode download_error = | 646 google_apis::DriveApiErrorCode download_error = |
| 647 google_apis::DRIVE_OTHER_ERROR; | 647 google_apis::DRIVE_OTHER_ERROR; |
| 648 base::FilePath output_file_path; | 648 base::FilePath output_file_path; |
| 649 scheduler_->DownloadFile( | 649 scheduler_->DownloadFile( |
| 650 base::FilePath::FromUTF8Unsafe("drive/whatever.txt"), // virtual path | 650 base::FilePath::FromUTF8Unsafe("drive/whatever.txt"), // virtual path |
| 651 kDummyDownloadFileSize, | 651 kDummyDownloadFileSize, |
| 652 kOutputFilePath, | 652 kOutputFilePath, |
| 653 "2_file_resource_id", | 653 "2_file_resource_id", |
| 654 ClientContext(BACKGROUND), | 654 ClientContext(BACKGROUND), |
| 655 google_apis::test_util::CreateCopyResultCallback( | 655 google_apis::test_util::CreateCopyResultCallback( |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 690 ConnectToCellular(); | 690 ConnectToCellular(); |
| 691 | 691 |
| 692 // Enable fetching over cellular network. | 692 // Enable fetching over cellular network. |
| 693 pref_service_->SetBoolean(prefs::kDisableDriveOverCellular, false); | 693 pref_service_->SetBoolean(prefs::kDisableDriveOverCellular, false); |
| 694 | 694 |
| 695 // Try to get a file in the background | 695 // Try to get a file in the background |
| 696 base::ScopedTempDir temp_dir; | 696 base::ScopedTempDir temp_dir; |
| 697 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 697 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 698 | 698 |
| 699 const base::FilePath kOutputFilePath = | 699 const base::FilePath kOutputFilePath = |
| 700 temp_dir.path().AppendASCII("whatever.txt"); | 700 temp_dir.GetPath().AppendASCII("whatever.txt"); |
| 701 google_apis::DriveApiErrorCode download_error = | 701 google_apis::DriveApiErrorCode download_error = |
| 702 google_apis::DRIVE_OTHER_ERROR; | 702 google_apis::DRIVE_OTHER_ERROR; |
| 703 base::FilePath output_file_path; | 703 base::FilePath output_file_path; |
| 704 scheduler_->DownloadFile( | 704 scheduler_->DownloadFile( |
| 705 base::FilePath::FromUTF8Unsafe("drive/whatever.txt"), // virtual path | 705 base::FilePath::FromUTF8Unsafe("drive/whatever.txt"), // virtual path |
| 706 kDummyDownloadFileSize, | 706 kDummyDownloadFileSize, |
| 707 kOutputFilePath, | 707 kOutputFilePath, |
| 708 "2_file_resource_id", | 708 "2_file_resource_id", |
| 709 ClientContext(BACKGROUND), | 709 ClientContext(BACKGROUND), |
| 710 google_apis::test_util::CreateCopyResultCallback( | 710 google_apis::test_util::CreateCopyResultCallback( |
| (...skipping 26 matching lines...) Expand all Loading... |
| 737 ConnectToWimax(); | 737 ConnectToWimax(); |
| 738 | 738 |
| 739 // Enable fetching over cellular network. | 739 // Enable fetching over cellular network. |
| 740 pref_service_->SetBoolean(prefs::kDisableDriveOverCellular, false); | 740 pref_service_->SetBoolean(prefs::kDisableDriveOverCellular, false); |
| 741 | 741 |
| 742 // Try to get a file in the background | 742 // Try to get a file in the background |
| 743 base::ScopedTempDir temp_dir; | 743 base::ScopedTempDir temp_dir; |
| 744 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 744 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 745 | 745 |
| 746 const base::FilePath kOutputFilePath = | 746 const base::FilePath kOutputFilePath = |
| 747 temp_dir.path().AppendASCII("whatever.txt"); | 747 temp_dir.GetPath().AppendASCII("whatever.txt"); |
| 748 google_apis::DriveApiErrorCode download_error = | 748 google_apis::DriveApiErrorCode download_error = |
| 749 google_apis::DRIVE_OTHER_ERROR; | 749 google_apis::DRIVE_OTHER_ERROR; |
| 750 base::FilePath output_file_path; | 750 base::FilePath output_file_path; |
| 751 scheduler_->DownloadFile( | 751 scheduler_->DownloadFile( |
| 752 base::FilePath::FromUTF8Unsafe("drive/whatever.txt"), // virtual path | 752 base::FilePath::FromUTF8Unsafe("drive/whatever.txt"), // virtual path |
| 753 kDummyDownloadFileSize, | 753 kDummyDownloadFileSize, |
| 754 kOutputFilePath, | 754 kOutputFilePath, |
| 755 "2_file_resource_id", | 755 "2_file_resource_id", |
| 756 ClientContext(BACKGROUND), | 756 ClientContext(BACKGROUND), |
| 757 google_apis::test_util::CreateCopyResultCallback( | 757 google_apis::test_util::CreateCopyResultCallback( |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 810 &error, &about_resource)); | 810 &error, &about_resource)); |
| 811 expected_types.insert(TYPE_UPDATE_RESOURCE); | 811 expected_types.insert(TYPE_UPDATE_RESOURCE); |
| 812 scheduler_->UpdateResource( | 812 scheduler_->UpdateResource( |
| 813 "2_file_resource_id", std::string(), "New Title", base::Time(), | 813 "2_file_resource_id", std::string(), "New Title", base::Time(), |
| 814 base::Time(), google_apis::drive::Properties(), | 814 base::Time(), google_apis::drive::Properties(), |
| 815 ClientContext(USER_INITIATED), | 815 ClientContext(USER_INITIATED), |
| 816 google_apis::test_util::CreateCopyResultCallback(&error, &entry)); | 816 google_apis::test_util::CreateCopyResultCallback(&error, &entry)); |
| 817 expected_types.insert(TYPE_DOWNLOAD_FILE); | 817 expected_types.insert(TYPE_DOWNLOAD_FILE); |
| 818 scheduler_->DownloadFile( | 818 scheduler_->DownloadFile( |
| 819 base::FilePath::FromUTF8Unsafe("drive/whatever.txt"), // virtual path | 819 base::FilePath::FromUTF8Unsafe("drive/whatever.txt"), // virtual path |
| 820 kDummyDownloadFileSize, | 820 kDummyDownloadFileSize, temp_dir.GetPath().AppendASCII("whatever.txt"), |
| 821 temp_dir.path().AppendASCII("whatever.txt"), | 821 "2_file_resource_id", ClientContext(BACKGROUND), |
| 822 "2_file_resource_id", | |
| 823 ClientContext(BACKGROUND), | |
| 824 google_apis::test_util::CreateCopyResultCallback(&error, &path), | 822 google_apis::test_util::CreateCopyResultCallback(&error, &path), |
| 825 google_apis::GetContentCallback()); | 823 google_apis::GetContentCallback()); |
| 826 | 824 |
| 827 // The number of jobs queued so far. | 825 // The number of jobs queued so far. |
| 828 EXPECT_EQ(4U, scheduler_->GetJobInfoList().size()); | 826 EXPECT_EQ(4U, scheduler_->GetJobInfoList().size()); |
| 829 EXPECT_TRUE(logger.Has(JobListLogger::ADDED, TYPE_ADD_NEW_DIRECTORY)); | 827 EXPECT_TRUE(logger.Has(JobListLogger::ADDED, TYPE_ADD_NEW_DIRECTORY)); |
| 830 EXPECT_TRUE(logger.Has(JobListLogger::ADDED, TYPE_GET_ABOUT_RESOURCE)); | 828 EXPECT_TRUE(logger.Has(JobListLogger::ADDED, TYPE_GET_ABOUT_RESOURCE)); |
| 831 EXPECT_TRUE(logger.Has(JobListLogger::ADDED, TYPE_UPDATE_RESOURCE)); | 829 EXPECT_TRUE(logger.Has(JobListLogger::ADDED, TYPE_UPDATE_RESOURCE)); |
| 832 EXPECT_TRUE(logger.Has(JobListLogger::ADDED, TYPE_DOWNLOAD_FILE)); | 830 EXPECT_TRUE(logger.Has(JobListLogger::ADDED, TYPE_DOWNLOAD_FILE)); |
| 833 EXPECT_FALSE(logger.Has(JobListLogger::DONE, TYPE_ADD_NEW_DIRECTORY)); | 831 EXPECT_FALSE(logger.Has(JobListLogger::DONE, TYPE_ADD_NEW_DIRECTORY)); |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 907 | 905 |
| 908 base::ScopedTempDir temp_dir; | 906 base::ScopedTempDir temp_dir; |
| 909 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 907 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 910 | 908 |
| 911 google_apis::DriveApiErrorCode error = google_apis::DRIVE_OTHER_ERROR; | 909 google_apis::DriveApiErrorCode error = google_apis::DRIVE_OTHER_ERROR; |
| 912 base::FilePath path; | 910 base::FilePath path; |
| 913 | 911 |
| 914 // Download job. | 912 // Download job. |
| 915 scheduler_->DownloadFile( | 913 scheduler_->DownloadFile( |
| 916 base::FilePath::FromUTF8Unsafe("drive/whatever.txt"), // virtual path | 914 base::FilePath::FromUTF8Unsafe("drive/whatever.txt"), // virtual path |
| 917 kDummyDownloadFileSize, | 915 kDummyDownloadFileSize, temp_dir.GetPath().AppendASCII("whatever.txt"), |
| 918 temp_dir.path().AppendASCII("whatever.txt"), | 916 "2_file_resource_id", ClientContext(BACKGROUND), |
| 919 "2_file_resource_id", | |
| 920 ClientContext(BACKGROUND), | |
| 921 google_apis::test_util::CreateCopyResultCallback(&error, &path), | 917 google_apis::test_util::CreateCopyResultCallback(&error, &path), |
| 922 google_apis::GetContentCallback()); | 918 google_apis::GetContentCallback()); |
| 923 base::RunLoop().RunUntilIdle(); | 919 base::RunLoop().RunUntilIdle(); |
| 924 | 920 |
| 925 std::vector<int64_t> download_progress; | 921 std::vector<int64_t> download_progress; |
| 926 logger.GetProgressInfo(TYPE_DOWNLOAD_FILE, &download_progress); | 922 logger.GetProgressInfo(TYPE_DOWNLOAD_FILE, &download_progress); |
| 927 ASSERT_TRUE(!download_progress.empty()); | 923 ASSERT_TRUE(!download_progress.empty()); |
| 928 EXPECT_TRUE(base::STLIsSorted(download_progress)); | 924 EXPECT_TRUE(base::STLIsSorted(download_progress)); |
| 929 EXPECT_GE(download_progress.front(), 0); | 925 EXPECT_GE(download_progress.front(), 0); |
| 930 EXPECT_LE(download_progress.back(), 26); | 926 EXPECT_LE(download_progress.back(), 26); |
| 931 | 927 |
| 932 // Upload job. | 928 // Upload job. |
| 933 path = temp_dir.path().AppendASCII("new_file.txt"); | 929 path = temp_dir.GetPath().AppendASCII("new_file.txt"); |
| 934 ASSERT_TRUE(google_apis::test_util::WriteStringToFile(path, kHello)); | 930 ASSERT_TRUE(google_apis::test_util::WriteStringToFile(path, kHello)); |
| 935 google_apis::DriveApiErrorCode upload_error = | 931 google_apis::DriveApiErrorCode upload_error = |
| 936 google_apis::DRIVE_OTHER_ERROR; | 932 google_apis::DRIVE_OTHER_ERROR; |
| 937 std::unique_ptr<google_apis::FileResource> entry; | 933 std::unique_ptr<google_apis::FileResource> entry; |
| 938 | 934 |
| 939 scheduler_->UploadNewFile( | 935 scheduler_->UploadNewFile( |
| 940 fake_drive_service_->GetRootResourceId(), kHelloLen, | 936 fake_drive_service_->GetRootResourceId(), kHelloLen, |
| 941 base::FilePath::FromUTF8Unsafe("drive/new_file.txt"), path, "dummy title", | 937 base::FilePath::FromUTF8Unsafe("drive/new_file.txt"), path, "dummy title", |
| 942 "plain/plain", UploadNewFileOptions(), ClientContext(BACKGROUND), | 938 "plain/plain", UploadNewFileOptions(), ClientContext(BACKGROUND), |
| 943 google_apis::test_util::CreateCopyResultCallback(&upload_error, &entry)); | 939 google_apis::test_util::CreateCopyResultCallback(&upload_error, &entry)); |
| 944 base::RunLoop().RunUntilIdle(); | 940 base::RunLoop().RunUntilIdle(); |
| 945 | 941 |
| 946 std::vector<int64_t> upload_progress; | 942 std::vector<int64_t> upload_progress; |
| 947 logger.GetProgressInfo(TYPE_UPLOAD_NEW_FILE, &upload_progress); | 943 logger.GetProgressInfo(TYPE_UPLOAD_NEW_FILE, &upload_progress); |
| 948 ASSERT_TRUE(!upload_progress.empty()); | 944 ASSERT_TRUE(!upload_progress.empty()); |
| 949 EXPECT_TRUE(base::STLIsSorted(upload_progress)); | 945 EXPECT_TRUE(base::STLIsSorted(upload_progress)); |
| 950 EXPECT_GE(upload_progress.front(), 0); | 946 EXPECT_GE(upload_progress.front(), 0); |
| 951 EXPECT_LE(upload_progress.back(), 13); | 947 EXPECT_LE(upload_progress.back(), 13); |
| 952 } | 948 } |
| 953 | 949 |
| 954 TEST_F(JobSchedulerTest, CancelPendingJob) { | 950 TEST_F(JobSchedulerTest, CancelPendingJob) { |
| 955 base::ScopedTempDir temp_dir; | 951 base::ScopedTempDir temp_dir; |
| 956 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 952 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 957 base::FilePath upload_path = temp_dir.path().AppendASCII("new_file.txt"); | 953 base::FilePath upload_path = temp_dir.GetPath().AppendASCII("new_file.txt"); |
| 958 ASSERT_TRUE(google_apis::test_util::WriteStringToFile(upload_path, kHello)); | 954 ASSERT_TRUE(google_apis::test_util::WriteStringToFile(upload_path, kHello)); |
| 959 | 955 |
| 960 // To create a pending job for testing, set the mode to cellular connection | 956 // To create a pending job for testing, set the mode to cellular connection |
| 961 // and issue BACKGROUND jobs. | 957 // and issue BACKGROUND jobs. |
| 962 ConnectToCellular(); | 958 ConnectToCellular(); |
| 963 pref_service_->SetBoolean(prefs::kDisableDriveOverCellular, true); | 959 pref_service_->SetBoolean(prefs::kDisableDriveOverCellular, true); |
| 964 | 960 |
| 965 // Start the first job and record its job ID. | 961 // Start the first job and record its job ID. |
| 966 google_apis::DriveApiErrorCode error1 = google_apis::DRIVE_OTHER_ERROR; | 962 google_apis::DriveApiErrorCode error1 = google_apis::DRIVE_OTHER_ERROR; |
| 967 std::unique_ptr<google_apis::FileResource> entry; | 963 std::unique_ptr<google_apis::FileResource> entry; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 995 EXPECT_EQ(google_apis::DRIVE_CANCELLED, error1); | 991 EXPECT_EQ(google_apis::DRIVE_CANCELLED, error1); |
| 996 EXPECT_EQ(google_apis::HTTP_SUCCESS, error2); | 992 EXPECT_EQ(google_apis::HTTP_SUCCESS, error2); |
| 997 EXPECT_TRUE(scheduler_->GetJobInfoList().empty()); | 993 EXPECT_TRUE(scheduler_->GetJobInfoList().empty()); |
| 998 } | 994 } |
| 999 | 995 |
| 1000 TEST_F(JobSchedulerTest, CancelRunningJob) { | 996 TEST_F(JobSchedulerTest, CancelRunningJob) { |
| 1001 ConnectToWifi(); | 997 ConnectToWifi(); |
| 1002 | 998 |
| 1003 base::ScopedTempDir temp_dir; | 999 base::ScopedTempDir temp_dir; |
| 1004 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); | 1000 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
| 1005 base::FilePath upload_path = temp_dir.path().AppendASCII("new_file.txt"); | 1001 base::FilePath upload_path = temp_dir.GetPath().AppendASCII("new_file.txt"); |
| 1006 ASSERT_TRUE(google_apis::test_util::WriteStringToFile(upload_path, kHello)); | 1002 ASSERT_TRUE(google_apis::test_util::WriteStringToFile(upload_path, kHello)); |
| 1007 | 1003 |
| 1008 // Run as a cancelable task. | 1004 // Run as a cancelable task. |
| 1009 fake_drive_service_->set_upload_new_file_cancelable(true); | 1005 fake_drive_service_->set_upload_new_file_cancelable(true); |
| 1010 google_apis::DriveApiErrorCode error1 = google_apis::DRIVE_OTHER_ERROR; | 1006 google_apis::DriveApiErrorCode error1 = google_apis::DRIVE_OTHER_ERROR; |
| 1011 std::unique_ptr<google_apis::FileResource> entry; | 1007 std::unique_ptr<google_apis::FileResource> entry; |
| 1012 scheduler_->UploadNewFile( | 1008 scheduler_->UploadNewFile( |
| 1013 fake_drive_service_->GetRootResourceId(), kHelloLen, | 1009 fake_drive_service_->GetRootResourceId(), kHelloLen, |
| 1014 base::FilePath::FromUTF8Unsafe("dummy/path"), upload_path, | 1010 base::FilePath::FromUTF8Unsafe("dummy/path"), upload_path, |
| 1015 "dummy title 1", "text/plain", UploadNewFileOptions(), | 1011 "dummy title 1", "text/plain", UploadNewFileOptions(), |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1035 scheduler_->CancelJob(first_job_id); | 1031 scheduler_->CancelJob(first_job_id); |
| 1036 | 1032 |
| 1037 // Only the first job should be cancelled. | 1033 // Only the first job should be cancelled. |
| 1038 base::RunLoop().RunUntilIdle(); | 1034 base::RunLoop().RunUntilIdle(); |
| 1039 EXPECT_EQ(google_apis::DRIVE_CANCELLED, error1); | 1035 EXPECT_EQ(google_apis::DRIVE_CANCELLED, error1); |
| 1040 EXPECT_EQ(google_apis::HTTP_SUCCESS, error2); | 1036 EXPECT_EQ(google_apis::HTTP_SUCCESS, error2); |
| 1041 EXPECT_TRUE(scheduler_->GetJobInfoList().empty()); | 1037 EXPECT_TRUE(scheduler_->GetJobInfoList().empty()); |
| 1042 } | 1038 } |
| 1043 | 1039 |
| 1044 } // namespace drive | 1040 } // namespace drive |
| OLD | NEW |