Index: content/browser/cache_storage/cache_storage_scheduler_unittest.cc |
diff --git a/content/browser/cache_storage/cache_storage_scheduler_unittest.cc b/content/browser/cache_storage/cache_storage_scheduler_unittest.cc |
index 5557e06885be272eec22df89de216317d791b249..b04e8e7321f091197cae087cd7c4644e09b8907e 100644 |
--- a/content/browser/cache_storage/cache_storage_scheduler_unittest.cc |
+++ b/content/browser/cache_storage/cache_storage_scheduler_unittest.cc |
@@ -7,18 +7,20 @@ |
#include "base/bind.h" |
#include "base/callback.h" |
#include "base/run_loop.h" |
+#include "content/public/test/test_browser_thread_bundle.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace content { |
namespace { |
-class JobStats { |
+class TestTask { |
public: |
- JobStats(CacheStorageScheduler* scheduler) |
+ TestTask(CacheStorageScheduler* scheduler) |
: scheduler_(scheduler), callback_count_(0) {} |
- virtual void Run() = 0; |
+ virtual void Run() { callback_count_++; } |
+ void Done() { scheduler_->CompleteOperationAndRunNext(); } |
int callback_count() const { return callback_count_; } |
@@ -27,59 +29,53 @@ class JobStats { |
int callback_count_; |
}; |
-class SyncJob : public JobStats { |
- public: |
- SyncJob(CacheStorageScheduler* scheduler) : JobStats(scheduler) {} |
- |
- void Run() override { |
- callback_count_++; |
- scheduler_->CompleteOperationAndRunNext(); |
- } |
-}; |
- |
-class AsyncJob : public JobStats { |
- public: |
- AsyncJob(CacheStorageScheduler* scheduler) : JobStats(scheduler) {} |
- |
- void Run() override { callback_count_++; } |
- void Done() { scheduler_->CompleteOperationAndRunNext(); } |
-}; |
- |
} // namespace |
class CacheStorageSchedulerTest : public testing::Test { |
protected: |
CacheStorageSchedulerTest() |
- : async_job_(AsyncJob(&scheduler_)), sync_job_(SyncJob(&scheduler_)) {} |
+ : browser_thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), |
+ task1_(TestTask(&scheduler_)), |
+ task2_(TestTask(&scheduler_)) {} |
+ TestBrowserThreadBundle browser_thread_bundle_; |
CacheStorageScheduler scheduler_; |
- AsyncJob async_job_; |
- SyncJob sync_job_; |
+ TestTask task1_; |
+ TestTask task2_; |
}; |
TEST_F(CacheStorageSchedulerTest, ScheduleOne) { |
scheduler_.ScheduleOperation( |
- base::Bind(&JobStats::Run, base::Unretained(&sync_job_))); |
- EXPECT_EQ(1, sync_job_.callback_count()); |
+ base::Bind(&TestTask::Run, base::Unretained(&task1_))); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(1, task1_.callback_count()); |
} |
TEST_F(CacheStorageSchedulerTest, ScheduleTwo) { |
scheduler_.ScheduleOperation( |
- base::Bind(&JobStats::Run, base::Unretained(&sync_job_))); |
+ base::Bind(&TestTask::Run, base::Unretained(&task1_))); |
scheduler_.ScheduleOperation( |
- base::Bind(&JobStats::Run, base::Unretained(&sync_job_))); |
- EXPECT_EQ(2, sync_job_.callback_count()); |
+ base::Bind(&TestTask::Run, base::Unretained(&task2_))); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(1, task1_.callback_count()); |
+ EXPECT_EQ(0, task2_.callback_count()); |
+ |
+ task1_.Done(); |
+ EXPECT_TRUE(scheduler_.ScheduledOperations()); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(1, task1_.callback_count()); |
+ EXPECT_EQ(1, task2_.callback_count()); |
} |
-TEST_F(CacheStorageSchedulerTest, Block) { |
- scheduler_.ScheduleOperation( |
- base::Bind(&JobStats::Run, base::Unretained(&async_job_))); |
- EXPECT_EQ(1, async_job_.callback_count()); |
+TEST_F(CacheStorageSchedulerTest, ScheduledOperations) { |
scheduler_.ScheduleOperation( |
- base::Bind(&JobStats::Run, base::Unretained(&sync_job_))); |
- EXPECT_EQ(0, sync_job_.callback_count()); |
- async_job_.Done(); |
- EXPECT_EQ(1, sync_job_.callback_count()); |
+ base::Bind(&TestTask::Run, base::Unretained(&task1_))); |
+ EXPECT_TRUE(scheduler_.ScheduledOperations()); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(1, task1_.callback_count()); |
+ EXPECT_TRUE(scheduler_.ScheduledOperations()); |
+ task1_.Done(); |
+ EXPECT_FALSE(scheduler_.ScheduledOperations()); |
} |
} // namespace content |