Index: components/offline_pages/core/prefetch/prefetch_dispatcher_impl_unittest.cc |
diff --git a/components/offline_pages/core/prefetch/prefetch_dispatcher_impl_unittest.cc b/components/offline_pages/core/prefetch/prefetch_dispatcher_impl_unittest.cc |
index 0a0bd961d48bad5e40043b5722d0a71b2c1c900c..c2c815daea9e37859a5557ee90137e0ee1e65375 100644 |
--- a/components/offline_pages/core/prefetch/prefetch_dispatcher_impl_unittest.cc |
+++ b/components/offline_pages/core/prefetch/prefetch_dispatcher_impl_unittest.cc |
@@ -5,20 +5,81 @@ |
#include "components/offline_pages/core/prefetch/prefetch_dispatcher_impl.h" |
#include "base/memory/ptr_util.h" |
+#include "base/test/test_simple_task_runner.h" |
+#include "base/threading/thread_task_runner_handle.h" |
#include "components/offline_pages/core/client_namespace_constants.h" |
-#include "components/offline_pages/core/prefetch/prefetch_dispatcher.h" |
+#include "components/offline_pages/core/prefetch/prefetch_service.h" |
+#include "components/offline_pages/core/prefetch/prefetch_test_store.h" |
#include "testing/gtest/include/gtest/gtest.h" |
-#include "url/gurl.h" |
namespace offline_pages { |
-TEST(PrefetchDispatcherTest, DispatcherDoesNotCrash) { |
- PrefetchDispatcherImpl dispatcher; |
+class PrefetchDispatcherTest : public testing::Test, public PrefetchService { |
+ public: |
+ PrefetchDispatcherTest(); |
- dispatcher.AddCandidatePrefetchURLs( |
- std::vector<PrefetchDispatcher::PrefetchURL>()); |
- dispatcher.RemoveAllUnprocessedPrefetchURLs(kSuggestedArticlesNamespace); |
- dispatcher.RemovePrefetchURLsByClientId({kSuggestedArticlesNamespace, "123"}); |
+ // Test implementation. |
+ void SetUp() override; |
+ void TearDown() override; |
+ |
+ // PrefetchService implementation. |
+ PrefetchDispatcher* GetDispatcher() override { |
+ return dispatcher_impl_.get(); |
+ } |
+ PrefetchStore* GetStore() override { return test_store_.get(); } |
+ |
+ // KeyedService implementation. |
+ void Shutdown() override {} |
+ |
+ void PumpLoop(); |
+ |
+ TaskQueue* dispatcher_task_queue() { return &dispatcher_impl_->task_queue_; } |
+ |
+ private: |
+ std::unique_ptr<PrefetchTestStore> test_store_; |
+ std::unique_ptr<PrefetchDispatcherImpl> dispatcher_impl_; |
+ |
+ scoped_refptr<base::TestSimpleTaskRunner> task_runner_; |
+ base::ThreadTaskRunnerHandle task_runner_handle_; |
+}; |
+ |
+PrefetchDispatcherTest::PrefetchDispatcherTest() |
+ : task_runner_(new base::TestSimpleTaskRunner), |
+ task_runner_handle_(task_runner_) {} |
+ |
+void PrefetchDispatcherTest::SetUp() { |
+ ASSERT_EQ(base::ThreadTaskRunnerHandle::Get(), task_runner_); |
+ ASSERT_FALSE(task_runner_->HasPendingTask()); |
+ test_store_ = base::MakeUnique<PrefetchTestStore>(); |
+ dispatcher_impl_ = base::MakeUnique<PrefetchDispatcherImpl>(); |
+ dispatcher_impl_->SetService(this); |
+} |
+ |
+void PrefetchDispatcherTest::TearDown() { |
+ task_runner_->ClearPendingTasks(); |
+} |
+ |
+void PrefetchDispatcherTest::PumpLoop() { |
+ task_runner_->RunUntilIdle(); |
+} |
+ |
+TEST_F(PrefetchDispatcherTest, DispatcherDoesNotCrash) { |
+ GetDispatcher()->AddCandidatePrefetchURLs(kSuggestedArticlesNamespace, |
+ std::vector<PrefetchURL>()); |
+ GetDispatcher()->RemoveAllUnprocessedPrefetchURLs( |
+ kSuggestedArticlesNamespace); |
+ GetDispatcher()->RemovePrefetchURLsByClientId(kSuggestedArticlesNamespace, |
+ "123"); |
+} |
+ |
+TEST_F(PrefetchDispatcherTest, AddCandidatePrefetchURLsTask) { |
+ GetDispatcher()->AddCandidatePrefetchURLs(kSuggestedArticlesNamespace, |
+ std::vector<PrefetchURL>()); |
+ EXPECT_TRUE(dispatcher_task_queue()->HasPendingTasks()); |
+ EXPECT_TRUE(dispatcher_task_queue()->HasRunningTask()); |
+ PumpLoop(); |
+ EXPECT_FALSE(dispatcher_task_queue()->HasPendingTasks()); |
+ EXPECT_FALSE(dispatcher_task_queue()->HasRunningTask()); |
} |
} // namespace offline_pages |