| 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 753ed548dbb1801765f00a2f1a2830969a49b64c..18513b2b8f8477d47b396a9070cdbf202b870163 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,42 @@ const char kTag[] = "testTag";
|
|
|
| namespace content {
|
|
|
| +// Use the basic MockDownloadItem, but override it to provide a valid GUID.
|
| +class MockDownloadItemWithValues : public MockDownloadItem {
|
| + 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());
|
| + BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
|
| + base::Bind(params->callback(), &download_item_,
|
| + DOWNLOAD_INTERRUPT_REASON_NONE));
|
| + }
|
| +
|
| + DownloadItem* GetDownloadByGuid(const std::string& guid) override {
|
| + DCHECK_EQ(download_item_.GetGuid(), guid);
|
| + return &download_item_;
|
| + }
|
| +
|
| + 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 +75,8 @@ class BackgroundFetchJobControllerTest : public ::testing::Test {
|
| download_manager_);
|
| }
|
|
|
| + void TearDown() override { job_controller_->Shutdown(); }
|
| +
|
| void InitializeJobController(
|
| std::unique_ptr<BackgroundFetchJobData> job_data) {
|
| job_controller_ = base::MakeUnique<BackgroundFetchJobController>(
|
| @@ -67,13 +102,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) {
|
| @@ -82,6 +121,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.
|
| std::unique_ptr<BackgroundFetchJobData> job_data =
|
|
|