Chromium Code Reviews| Index: content/browser/background_fetch/background_fetch_job_controller_unittest.cc |
| diff --git a/content/browser/background_fetch/background_fetch_job_controller_unittest.cc b/content/browser/background_fetch/background_fetch_job_controller_unittest.cc |
| index d8fa7c9cb5c9fa5276c6139d89790bc274f3b817..537e61041d6294b4f000857d03e627fb95274e7a 100644 |
| --- a/content/browser/background_fetch/background_fetch_job_controller_unittest.cc |
| +++ b/content/browser/background_fetch/background_fetch_job_controller_unittest.cc |
| @@ -12,6 +12,7 @@ |
| #include "content/browser/background_fetch/background_fetch_job_info.h" |
| #include "content/browser/background_fetch/background_fetch_request_info.h" |
| #include "content/public/browser/browser_thread.h" |
| +#include "content/public/test/mock_download_item.h" |
| #include "content/public/test/mock_download_manager.h" |
| #include "content/public/test/test_browser_context.h" |
| #include "content/public/test/test_browser_thread_bundle.h" |
| @@ -29,10 +30,39 @@ const char kTag[] = "testTag"; |
| namespace content { |
| +// Use the basic MockDownloadItem, but override it to provide a valid GUID. |
| +class MockDownloadItemWithValues : public MockDownloadItem { |
|
Peter Beverloo
2017/03/08 14:58:19
WithValues -> WithGuid?
harkness
2017/03/10 13:33:54
We'll be adding more state to this item, so I'd ra
|
| + public: |
| + const std::string& GetGuid() const override { return guid_; } |
| + void SetGuid(const std::string& guid) { guid_ = guid; } |
| + |
| + private: |
| + std::string guid_; |
| +}; |
| + |
| +// Use the basic MockDownloadManager, but override it so that it implements the |
| +// functionality that the JobController requires. |
| +class MockDownloadManagerWithCallback : public MockDownloadManager { |
| + public: |
| + void DownloadUrl(std::unique_ptr<DownloadUrlParameters> params) override { |
| + DownloadUrlMock(params.get()); |
| + params->callback().Run(&download_item_, DOWNLOAD_INTERRUPT_REASON_NONE); |
|
Peter Beverloo
2017/03/08 14:58:19
Should this perhaps be a PostTask() to make sure w
harkness
2017/03/10 13:33:54
Good idea.
|
| + } |
| + |
| + DownloadItem* GetDownloadByGuid(const std::string& guid) override { |
| + return &download_item_; |
|
Peter Beverloo
2017/03/08 14:58:19
DCHECK on the `guid`?
harkness
2017/03/10 13:33:54
Done.
|
| + } |
| + |
| + MockDownloadItemWithValues* download_item() { return &download_item_; } |
| + |
| + private: |
| + MockDownloadItemWithValues download_item_; |
| +}; |
| + |
| class BackgroundFetchJobControllerTest : public ::testing::Test { |
| public: |
| BackgroundFetchJobControllerTest() |
| - : download_manager_(new MockDownloadManager()) {} |
| + : download_manager_(new MockDownloadManagerWithCallback()) {} |
| ~BackgroundFetchJobControllerTest() override = default; |
| void SetUp() override { |
| @@ -42,6 +72,8 @@ class BackgroundFetchJobControllerTest : public ::testing::Test { |
| download_manager_); |
| } |
| + void TearDown() override { job_controller_->Shutdown(); } |
| + |
| void InitializeJobController(BackgroundFetchJobData* job_data) { |
| job_controller_.reset(new BackgroundFetchJobController( |
| kJobGuid, &browser_context_, |
| @@ -66,13 +98,17 @@ class BackgroundFetchJobControllerTest : public ::testing::Test { |
| BackgroundFetchJobController* job_controller() { |
| return job_controller_.get(); |
| } |
| - MockDownloadManager* download_manager() { return download_manager_; } |
| + MockDownloadManagerWithCallback* download_manager() { |
| + return download_manager_; |
| + } |
| + |
| + DownloadItem::Observer* ItemObserver() const { return job_controller_.get(); } |
| private: |
| TestBrowserThreadBundle thread_bundle_; |
| TestBrowserContext browser_context_; |
| std::unique_ptr<BackgroundFetchJobController> job_controller_; |
| - MockDownloadManager* download_manager_; |
| + MockDownloadManagerWithCallback* download_manager_; |
| }; |
| TEST_F(BackgroundFetchJobControllerTest, StartDownload) { |
| @@ -81,6 +117,10 @@ TEST_F(BackgroundFetchJobControllerTest, StartDownload) { |
| BackgroundFetchRequestInfo request_info(GURL(kTestUrl), kJobGuid); |
| std::vector<BackgroundFetchRequestInfo> request_infos{request_info}; |
| + // Create a MockDownloadItem that the test can manipulate. |
| + MockDownloadItemWithValues* item = download_manager()->download_item(); |
| + item->SetGuid("foo"); |
| + |
| // Get a JobData to give to the JobController. The JobController then gets |
| // the BackgroundFetchRequestInfos from the JobData. The JobController will |
| // take ownership of the JobData. |