Index: content/browser/loader/upload_progress_tracker_unittest.cc |
diff --git a/content/browser/loader/upload_progress_tracker_unittest.cc b/content/browser/loader/upload_progress_tracker_unittest.cc |
index cf556db2c94ec8b2366a01218c5d16530662715a..363ae990eb1231c564c59167c90100a869ef61cf 100644 |
--- a/content/browser/loader/upload_progress_tracker_unittest.cc |
+++ b/content/browser/loader/upload_progress_tracker_unittest.cc |
@@ -9,7 +9,8 @@ |
#include "base/macros.h" |
#include "base/memory/ref_counted.h" |
#include "base/single_thread_task_runner.h" |
-#include "base/test/test_simple_task_runner.h" |
+#include "base/test/test_mock_time_task_runner.h" |
+#include "base/threading/thread_task_runner_handle.h" |
#include "net/base/upload_progress.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -54,13 +55,13 @@ class TestingUploadProgressTracker : public UploadProgressTracker { |
class UploadProgressTrackerTest : public ::testing::Test { |
public: |
UploadProgressTrackerTest() |
- : task_runner_(new base::TestSimpleTaskRunner), |
+ : task_runner_handle_(mock_task_runner_), |
upload_progress_tracker_( |
FROM_HERE, |
base::BindRepeating( |
&UploadProgressTrackerTest::OnUploadProgressReported, |
base::Unretained(this)), |
- task_runner_) {} |
+ mock_task_runner_) {} |
private: |
void OnUploadProgressReported(const net::UploadProgress& progress) { |
@@ -74,7 +75,12 @@ class UploadProgressTrackerTest : public ::testing::Test { |
int64_t reported_position_ = 0; |
int64_t reported_total_size_ = 0; |
- scoped_refptr<base::TestSimpleTaskRunner> task_runner_; |
+ // Mocks the current thread's task runner which will also be used as the |
+ // UploadProgressTracker's task runner. |
+ scoped_refptr<base::TestMockTimeTaskRunner> mock_task_runner_ = |
+ new base::TestMockTimeTaskRunner; |
+ base::ThreadTaskRunnerHandle task_runner_handle_; |
+ |
TestingUploadProgressTracker upload_progress_tracker_; |
DISALLOW_COPY_AND_ASSIGN(UploadProgressTrackerTest); |
@@ -85,7 +91,8 @@ TEST_F(UploadProgressTrackerTest, NoACK) { |
// The first timer task calls ReportUploadProgress. |
EXPECT_EQ(0, report_count_); |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(1, report_count_); |
EXPECT_EQ(500, reported_position_); |
EXPECT_EQ(1000, reported_total_size_); |
@@ -94,7 +101,8 @@ TEST_F(UploadProgressTrackerTest, NoACK) { |
// The second timer task does nothing, since the first report didn't send the |
// ACK. |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(1, report_count_); |
} |
@@ -103,7 +111,8 @@ TEST_F(UploadProgressTrackerTest, NoUpload) { |
// UploadProgressTracker does nothing on the empty upload content. |
EXPECT_EQ(0, report_count_); |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(0, report_count_); |
} |
@@ -112,7 +121,8 @@ TEST_F(UploadProgressTrackerTest, NoProgress) { |
// The first timer task calls ReportUploadProgress. |
EXPECT_EQ(0, report_count_); |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(1, report_count_); |
EXPECT_EQ(500, reported_position_); |
EXPECT_EQ(1000, reported_total_size_); |
@@ -122,7 +132,8 @@ TEST_F(UploadProgressTrackerTest, NoProgress) { |
// The second time doesn't call ReportUploadProgress since there's no |
// progress. |
EXPECT_EQ(1, report_count_); |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(1, report_count_); |
} |
@@ -131,7 +142,8 @@ TEST_F(UploadProgressTrackerTest, Finished) { |
// The first timer task calls ReportUploadProgress. |
EXPECT_EQ(0, report_count_); |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(1, report_count_); |
EXPECT_EQ(999, reported_position_); |
EXPECT_EQ(1000, reported_total_size_); |
@@ -142,7 +154,8 @@ TEST_F(UploadProgressTrackerTest, Finished) { |
// The second timer task calls ReportUploadProgress for reporting the |
// completion. |
EXPECT_EQ(1, report_count_); |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(2, report_count_); |
EXPECT_EQ(1000, reported_position_); |
EXPECT_EQ(1000, reported_total_size_); |
@@ -153,7 +166,8 @@ TEST_F(UploadProgressTrackerTest, Progress) { |
// The first timer task calls ReportUploadProgress. |
EXPECT_EQ(0, report_count_); |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(1, report_count_); |
EXPECT_EQ(500, reported_position_); |
EXPECT_EQ(1000, reported_total_size_); |
@@ -164,7 +178,8 @@ TEST_F(UploadProgressTrackerTest, Progress) { |
// The second timer task calls ReportUploadProgress since the progress is |
// big enough to report. |
EXPECT_EQ(1, report_count_); |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(2, report_count_); |
EXPECT_EQ(750, reported_position_); |
EXPECT_EQ(1000, reported_total_size_); |
@@ -175,7 +190,8 @@ TEST_F(UploadProgressTrackerTest, TimePassed) { |
// The first timer task calls ReportUploadProgress. |
EXPECT_EQ(0, report_count_); |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(1, report_count_); |
EXPECT_EQ(500, reported_position_); |
EXPECT_EQ(1000, reported_total_size_); |
@@ -186,7 +202,8 @@ TEST_F(UploadProgressTrackerTest, TimePassed) { |
// The second timer task doesn't call ReportUploadProgress since the progress |
// is too small to report it. |
EXPECT_EQ(1, report_count_); |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(1, report_count_); |
upload_progress_tracker_.set_current_time(base::TimeTicks::Now() + |
@@ -195,7 +212,8 @@ TEST_F(UploadProgressTrackerTest, TimePassed) { |
// The third timer task calls ReportUploadProgress since it's been long time |
// from the last report. |
EXPECT_EQ(1, report_count_); |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(2, report_count_); |
EXPECT_EQ(501, reported_position_); |
EXPECT_EQ(1000, reported_total_size_); |
@@ -206,7 +224,8 @@ TEST_F(UploadProgressTrackerTest, Rewound) { |
// The first timer task calls ReportUploadProgress. |
EXPECT_EQ(0, report_count_); |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(1, report_count_); |
EXPECT_EQ(500, reported_position_); |
EXPECT_EQ(1000, reported_total_size_); |
@@ -217,7 +236,8 @@ TEST_F(UploadProgressTrackerTest, Rewound) { |
// The second timer task doesn't call ReportUploadProgress since the progress |
// was rewound. |
EXPECT_EQ(1, report_count_); |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(1, report_count_); |
upload_progress_tracker_.set_current_time(base::TimeTicks::Now() + |
@@ -226,7 +246,8 @@ TEST_F(UploadProgressTrackerTest, Rewound) { |
// Even after a good amount of time passed, the rewound progress should not be |
// reported. |
EXPECT_EQ(1, report_count_); |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(1, report_count_); |
} |
@@ -235,7 +256,8 @@ TEST_F(UploadProgressTrackerTest, Completed) { |
// The first timer task calls ReportUploadProgress. |
EXPECT_EQ(0, report_count_); |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(1, report_count_); |
EXPECT_EQ(500, reported_position_); |
EXPECT_EQ(1000, reported_total_size_); |
@@ -248,9 +270,10 @@ TEST_F(UploadProgressTrackerTest, Completed) { |
EXPECT_EQ(1000, reported_position_); |
EXPECT_EQ(1000, reported_total_size_); |
- task_runner_->RunPendingTasks(); |
+ mock_task_runner_->FastForwardBy( |
+ UploadProgressTracker::GetUploadProgressIntervalForTesting()); |
EXPECT_EQ(2, report_count_); |
- EXPECT_FALSE(task_runner_->HasPendingTask()); |
+ EXPECT_FALSE(mock_task_runner_->HasPendingTask()); |
} |
} // namespace context |