| Index: content/browser/background_fetch/background_fetch_service_unittest.cc
|
| diff --git a/content/browser/background_fetch/background_fetch_service_unittest.cc b/content/browser/background_fetch/background_fetch_service_unittest.cc
|
| index 61725ede26da84035a6ba9c4dc8b59b4208477ba..8e5149142314f8f3db97af65ed528d0a0a707d59 100644
|
| --- a/content/browser/background_fetch/background_fetch_service_unittest.cc
|
| +++ b/content/browser/background_fetch/background_fetch_service_unittest.cc
|
| @@ -6,12 +6,8 @@
|
| #include <memory>
|
| #include <utility>
|
|
|
| -#include "base/files/file_util.h"
|
| -#include "base/files/scoped_temp_dir.h"
|
| -#include "base/guid.h"
|
| #include "base/macros.h"
|
| #include "base/memory/ptr_util.h"
|
| -#include "base/memory/weak_ptr.h"
|
| #include "base/run_loop.h"
|
| #include "base/time/time.h"
|
| #include "content/browser/background_fetch/background_fetch_context.h"
|
| @@ -22,8 +18,6 @@
|
| #include "content/browser/service_worker/service_worker_context_wrapper.h"
|
| #include "content/browser/storage_partition_impl.h"
|
| #include "content/common/service_worker/service_worker_types.h"
|
| -#include "content/public/test/fake_download_item.h"
|
| -#include "content/public/test/mock_download_manager.h"
|
|
|
| namespace content {
|
| namespace {
|
| @@ -31,97 +25,6 @@ namespace {
|
| const char kExampleTag[] = "my-background-fetch";
|
| const char kAlternativeTag[] = "my-alternative-fetch";
|
|
|
| -// Faked download manager that will respond to known HTTP requests with a test-
|
| -// defined response. See CreateRequestWithProvidedResponse().
|
| -class RespondingDownloadManager : public MockDownloadManager {
|
| - public:
|
| - RespondingDownloadManager() : weak_ptr_factory_(this) {}
|
| - ~RespondingDownloadManager() override = default;
|
| -
|
| - // Responds to requests to |url| with the |status_code| and |response_text|.
|
| - void RegisterResponse(const GURL& url,
|
| - int status_code,
|
| - const std::string& response_text) {
|
| - DCHECK_EQ(registered_responses_.count(url), 0u);
|
| - registered_responses_[url] = std::make_pair(status_code, response_text);
|
| - }
|
| -
|
| - // Called when the Background Fetch system starts a download, all information
|
| - // for which is contained in the |params|.
|
| - void DownloadUrl(std::unique_ptr<DownloadUrlParameters> params) override {
|
| - auto iter = registered_responses_.find(params->url());
|
| - if (iter == registered_responses_.end())
|
| - return;
|
| -
|
| - std::unique_ptr<FakeDownloadItem> download_item =
|
| - base::MakeUnique<FakeDownloadItem>();
|
| -
|
| - download_item->SetURL(params->url());
|
| - download_item->SetUrlChain({params->url()});
|
| - download_item->SetState(DownloadItem::DownloadState::IN_PROGRESS);
|
| - download_item->SetGuid(base::GenerateGUID());
|
| - download_item->SetStartTime(base::Time::Now());
|
| -
|
| - // Asynchronously invoke the callback set on the |params|, and then continue
|
| - // dealing with the response in this class.
|
| - BrowserThread::PostTaskAndReply(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::Bind(params->callback(), download_item.get(),
|
| - DOWNLOAD_INTERRUPT_REASON_NONE),
|
| - base::Bind(&RespondingDownloadManager::DidStartDownload,
|
| - weak_ptr_factory_.GetWeakPtr(), download_item.get()));
|
| -
|
| - download_items_.push_back(std::move(download_item));
|
| - }
|
| -
|
| - private:
|
| - // Called when the download has been "started" by the download manager. This
|
| - // is where we finish the download by sending a single update.
|
| - void DidStartDownload(FakeDownloadItem* download_item) {
|
| - auto iter = registered_responses_.find(download_item->GetURL());
|
| - DCHECK(iter != registered_responses_.end());
|
| -
|
| - const ResponseInfo& response_info = iter->second;
|
| -
|
| - download_item->SetState(DownloadItem::DownloadState::COMPLETE);
|
| - download_item->SetEndTime(base::Time::Now());
|
| -
|
| - base::FilePath response_path;
|
| - if (!temp_directory_.IsValid())
|
| - ASSERT_TRUE(temp_directory_.CreateUniqueTempDir());
|
| -
|
| - // Write the |response_info|'s response_text to a temporary file.
|
| - ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_directory_.GetPath(),
|
| - &response_path));
|
| -
|
| - ASSERT_NE(-1 /* error */,
|
| - base::WriteFile(response_path, response_info.second.c_str(),
|
| - response_info.second.size()));
|
| -
|
| - download_item->SetTargetFilePath(response_path);
|
| - download_item->SetReceivedBytes(response_info.second.size());
|
| -
|
| - // Notify the Job Controller about the download having been updated.
|
| - download_item->NotifyDownloadUpdated();
|
| - }
|
| -
|
| - using ResponseInfo =
|
| - std::pair<int /* status_code */, std::string /* response_text */>;
|
| -
|
| - // Map of URL to the response information associated with that URL.
|
| - std::map<GURL, ResponseInfo> registered_responses_;
|
| -
|
| - // Only used to guarantee the lifetime of the created FakeDownloadItems.
|
| - std::vector<std::unique_ptr<FakeDownloadItem>> download_items_;
|
| -
|
| - // Temporary directory in which successfully downloaded files will be stored.
|
| - base::ScopedTempDir temp_directory_;
|
| -
|
| - base::WeakPtrFactory<RespondingDownloadManager> weak_ptr_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(RespondingDownloadManager);
|
| -};
|
| -
|
| IconDefinition CreateIcon(std::string src,
|
| std::string sizes,
|
| std::string type) {
|
| @@ -214,36 +117,10 @@ class BackgroundFetchServiceTest : public BackgroundFetchTestBase {
|
| run_loop.Run();
|
| }
|
|
|
| - // Creates a ServiceWorkerFetchRequest instance for the given details and
|
| - // provides a faked response with |status_code| and |response_text| to the
|
| - // download manager, that will resolve the download with that information.
|
| - ServiceWorkerFetchRequest CreateRequestWithProvidedResponse(
|
| - const std::string& method,
|
| - const std::string& url_string,
|
| - int status_code,
|
| - const std::string& response_text) {
|
| - GURL url(url_string);
|
| -
|
| - // Register the |status_code| and |response_text| with the download manager.
|
| - download_manager_->RegisterResponse(GURL(url_string), status_code,
|
| - response_text);
|
| -
|
| - // Create a ServiceWorkerFetchRequest request with the same information.
|
| - return ServiceWorkerFetchRequest(url, method, ServiceWorkerHeaderMap(),
|
| - Referrer(), false /* is_reload */);
|
| - }
|
| -
|
| // BackgroundFetchTestBase overrides:
|
| void SetUp() override {
|
| BackgroundFetchTestBase::SetUp();
|
|
|
| - download_manager_ = new RespondingDownloadManager();
|
| -
|
| - // The |download_manager_| ownership is given to the BrowserContext, and the
|
| - // BrowserContext will take care of deallocating it.
|
| - BrowserContext::SetDownloadManagerForTesting(browser_context(),
|
| - download_manager_);
|
| -
|
| StoragePartitionImpl* storage_partition =
|
| static_cast<StoragePartitionImpl*>(
|
| BrowserContext::GetDefaultStoragePartition(browser_context()));
|
| @@ -256,17 +133,15 @@ class BackgroundFetchServiceTest : public BackgroundFetchTestBase {
|
| }
|
|
|
| void TearDown() override {
|
| - service_.reset();
|
| + BackgroundFetchTestBase::TearDown();
|
|
|
| - EXPECT_CALL(*download_manager_, Shutdown()).Times(1);
|
| + service_.reset();
|
|
|
| context_->Shutdown();
|
| context_ = nullptr;
|
|
|
| // Give pending shutdown operations a chance to finish.
|
| base::RunLoop().RunUntilIdle();
|
| -
|
| - BackgroundFetchTestBase::TearDown();
|
| }
|
|
|
| private:
|
| @@ -306,8 +181,6 @@ class BackgroundFetchServiceTest : public BackgroundFetchTestBase {
|
| scoped_refptr<BackgroundFetchContext> context_;
|
| std::unique_ptr<BackgroundFetchServiceImpl> service_;
|
|
|
| - RespondingDownloadManager* download_manager_; // BrowserContext owned
|
| -
|
| DISALLOW_COPY_AND_ASSIGN(BackgroundFetchServiceTest);
|
| };
|
|
|
|
|