summaryrefslogtreecommitdiff
path: root/chromium/content/browser/download/download_manager_impl.h
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-05-15 10:20:33 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-05-15 10:28:57 +0000
commitd17ea114e5ef69ad5d5d7413280a13e6428098aa (patch)
tree2c01a75df69f30d27b1432467cfe7c1467a498da /chromium/content/browser/download/download_manager_impl.h
parent8c5c43c7b138c9b4b0bf56d946e61d3bbc111bec (diff)
downloadqtwebengine-chromium-d17ea114e5ef69ad5d5d7413280a13e6428098aa.tar.gz
BASELINE: Update Chromium to 67.0.3396.47
Change-Id: Idcb1341782e417561a2473eeecc82642dafda5b7 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'chromium/content/browser/download/download_manager_impl.h')
-rw-r--r--chromium/content/browser/download/download_manager_impl.h108
1 files changed, 66 insertions, 42 deletions
diff --git a/chromium/content/browser/download/download_manager_impl.h b/chromium/content/browser/download/download_manager_impl.h
index f9698955656..13ae60ba113 100644
--- a/chromium/content/browser/download/download_manager_impl.h
+++ b/chromium/content/browser/download/download_manager_impl.h
@@ -20,9 +20,9 @@
#include "base/observer_list.h"
#include "base/sequenced_task_runner_helpers.h"
#include "base/synchronization/lock.h"
+#include "components/download/public/common/download_item_impl_delegate.h"
#include "components/download/public/common/download_url_parameters.h"
-#include "content/browser/download/download_item_impl_delegate.h"
-#include "content/browser/download/url_download_handler.h"
+#include "components/download/public/common/url_download_handler.h"
#include "content/browser/loader/navigation_url_loader.h"
#include "content/common/content_export.h"
#include "content/public/browser/browser_thread.h"
@@ -33,22 +33,24 @@
#include "services/network/public/mojom/url_loader.mojom.h"
namespace download {
+class DownloadFileFactory;
+class DownloadItemFactory;
+class DownloadItemImpl;
class DownloadRequestHandleInterface;
}
namespace content {
-class DownloadFileFactory;
-class DownloadItemFactory;
-class DownloadItemImpl;
class ResourceContext;
+class StoragePartitionImpl;
+class URLLoaderFactoryGetter;
-class CONTENT_EXPORT DownloadManagerImpl : public DownloadManager,
- public UrlDownloadHandler::Delegate,
- private DownloadItemImplDelegate {
+class CONTENT_EXPORT DownloadManagerImpl
+ : public DownloadManager,
+ public download::UrlDownloadHandler::Delegate,
+ private download::DownloadItemImplDelegate {
public:
- using DownloadItemImplCreated = base::Callback<void(DownloadItemImpl*)>;
- using UniqueUrlDownloadHandlerPtr =
- std::unique_ptr<UrlDownloadHandler, BrowserThread::DeleteOnIOThread>;
+ using DownloadItemImplCreated =
+ base::Callback<void(download::DownloadItemImpl*)>;
// Caller guarantees that |net_log| will remain valid
// for the lifetime of DownloadManagerImpl (until Shutdown() is called).
@@ -75,10 +77,12 @@ class CONTENT_EXPORT DownloadManagerImpl : public DownloadManager,
DownloadManagerDelegate* GetDelegate() const override;
void Shutdown() override;
void GetAllDownloads(DownloadVector* result) override;
- void StartDownload(std::unique_ptr<download::DownloadCreateInfo> info,
- std::unique_ptr<DownloadManager::InputStream> stream,
- const download::DownloadUrlParameters::OnStartedCallback&
- on_started) override;
+ void StartDownload(
+ std::unique_ptr<download::DownloadCreateInfo> info,
+ std::unique_ptr<download::InputStream> stream,
+ scoped_refptr<network::SharedURLLoaderFactory> shared_url_loader_factory,
+ const download::DownloadUrlParameters::OnStartedCallback& on_started)
+ override;
int RemoveDownloadsByURLAndTime(
const base::Callback<bool(const GURL&)>& url_filter,
@@ -130,17 +134,21 @@ class CONTENT_EXPORT DownloadManagerImpl : public DownloadManager,
// UrlDownloadHandler::Delegate implementation.
void OnUrlDownloadStarted(
std::unique_ptr<download::DownloadCreateInfo> download_create_info,
- std::unique_ptr<DownloadManager::InputStream> stream,
+ std::unique_ptr<download::InputStream> stream,
+ scoped_refptr<network::SharedURLLoaderFactory> shared_url_loader_factory,
const download::DownloadUrlParameters::OnStartedCallback& callback)
override;
- void OnUrlDownloadStopped(UrlDownloadHandler* downloader) override;
+ void OnUrlDownloadStopped(download::UrlDownloadHandler* downloader) override;
+ void OnUrlDownloadHandlerCreated(
+ download::UrlDownloadHandler::UniqueUrlDownloadHandlerPtr downloader)
+ override;
// For testing; specifically, accessed from TestFileErrorInjector.
void SetDownloadItemFactoryForTesting(
- std::unique_ptr<DownloadItemFactory> item_factory);
+ std::unique_ptr<download::DownloadItemFactory> item_factory);
void SetDownloadFileFactoryForTesting(
- std::unique_ptr<DownloadFileFactory> file_factory);
- virtual DownloadFileFactory* GetDownloadFileFactoryForTesting();
+ std::unique_ptr<download::DownloadFileFactory> file_factory);
+ virtual download::DownloadFileFactory* GetDownloadFileFactoryForTesting();
// Helper function to initiate a download request. This function initiates
// the download using functionality provided by the
@@ -165,8 +173,9 @@ class CONTENT_EXPORT DownloadManagerImpl : public DownloadManager,
private:
using DownloadSet = std::set<download::DownloadItem*>;
- using DownloadGuidMap = std::unordered_map<std::string, DownloadItemImpl*>;
- using DownloadItemImplVector = std::vector<DownloadItemImpl*>;
+ using DownloadGuidMap =
+ std::unordered_map<std::string, download::DownloadItemImpl*>;
+ using DownloadItemImplVector = std::vector<download::DownloadItemImpl*>;
// For testing.
friend class DownloadManagerTest;
@@ -174,7 +183,8 @@ class CONTENT_EXPORT DownloadManagerImpl : public DownloadManager,
void StartDownloadWithId(
std::unique_ptr<download::DownloadCreateInfo> info,
- std::unique_ptr<DownloadManager::InputStream> stream,
+ std::unique_ptr<download::InputStream> stream,
+ scoped_refptr<network::SharedURLLoaderFactory> shared_url_loader_factory,
const download::DownloadUrlParameters::OnStartedCallback& on_started,
bool new_download,
uint32_t id);
@@ -196,8 +206,9 @@ class CONTENT_EXPORT DownloadManagerImpl : public DownloadManager,
// Create a new active item based on the info. Separate from
// StartDownload() for testing.
- DownloadItemImpl* CreateActiveItem(uint32_t id,
- const download::DownloadCreateInfo& info);
+ download::DownloadItemImpl* CreateActiveItem(
+ uint32_t id,
+ const download::DownloadCreateInfo& info);
// Get next download id. |callback| is called on the UI thread and may
// be called synchronously.
@@ -210,30 +221,36 @@ class CONTENT_EXPORT DownloadManagerImpl : public DownloadManager,
// Overridden from DownloadItemImplDelegate
// (Note that |GetBrowserContext| are present in both interfaces.)
- void DetermineDownloadTarget(DownloadItemImpl* item,
+ void DetermineDownloadTarget(download::DownloadItemImpl* item,
const DownloadTargetCallback& callback) override;
- bool ShouldCompleteDownload(DownloadItemImpl* item,
+ bool ShouldCompleteDownload(download::DownloadItemImpl* item,
const base::Closure& complete_callback) override;
bool ShouldOpenFileBasedOnExtension(const base::FilePath& path) override;
- bool ShouldOpenDownload(DownloadItemImpl* item,
+ bool ShouldOpenDownload(download::DownloadItemImpl* item,
const ShouldOpenDownloadCallback& callback) override;
- void CheckForFileRemoval(DownloadItemImpl* download_item) override;
+ void CheckForFileRemoval(download::DownloadItemImpl* download_item) override;
std::string GetApplicationClientIdForFileScanning() const override;
void ResumeInterruptedDownload(
std::unique_ptr<download::DownloadUrlParameters> params,
- uint32_t id) override;
- void OpenDownload(DownloadItemImpl* download) override;
- bool IsMostRecentDownloadItemAtFilePath(DownloadItemImpl* download) override;
- void ShowDownloadInShell(DownloadItemImpl* download) override;
- void DownloadRemoved(DownloadItemImpl* download) override;
-
- void AddUrlDownloadHandler(UniqueUrlDownloadHandlerPtr downloader);
+ uint32_t id,
+ const GURL& site_url) override;
+ void OpenDownload(download::DownloadItemImpl* download) override;
+ bool IsMostRecentDownloadItemAtFilePath(
+ download::DownloadItemImpl* download) override;
+ void ShowDownloadInShell(download::DownloadItemImpl* download) override;
+ void DownloadRemoved(download::DownloadItemImpl* download) override;
+ void DownloadInterrupted(download::DownloadItemImpl* download) override;
+ base::Optional<download::DownloadEntry> GetInProgressEntry(
+ download::DownloadItemImpl* download) override;
+ bool IsOffTheRecord() const override;
+ void ReportBytesWasted(download::DownloadItemImpl* download) override;
// Helper method to start or resume a download.
void BeginDownloadInternal(
std::unique_ptr<download::DownloadUrlParameters> params,
std::unique_ptr<storage::BlobDataHandle> blob_data_handle,
- uint32_t id);
+ uint32_t id,
+ StoragePartitionImpl* storage_partition);
void InterceptNavigationOnChecksComplete(
ResourceRequestInfo::WebContentsGetter web_contents_getter,
@@ -253,17 +270,22 @@ class CONTENT_EXPORT DownloadManagerImpl : public DownloadManager,
std::unique_ptr<network::ResourceRequest> resource_request,
int render_process_id,
int render_frame_id,
+ const GURL& site_url,
+ const GURL& tab_url,
+ const GURL& tab_referrer_url,
std::vector<GURL> url_chain,
const base::Optional<std::string>& suggested_filename,
scoped_refptr<network::ResourceResponse> response,
net::CertStatus cert_status,
- network::mojom::URLLoaderClientEndpointsPtr url_loader_client_endpoints);
+ network::mojom::URLLoaderClientEndpointsPtr url_loader_client_endpoints,
+ scoped_refptr<URLLoaderFactoryGetter> url_loader_factory_getter,
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner);
// Factory for creation of downloads items.
- std::unique_ptr<DownloadItemFactory> item_factory_;
+ std::unique_ptr<download::DownloadItemFactory> item_factory_;
// Factory for the creation of download files.
- std::unique_ptr<DownloadFileFactory> file_factory_;
+ std::unique_ptr<download::DownloadFileFactory> file_factory_;
// |downloads_| is the owning set for all downloads known to the
// DownloadManager. This includes downloads started by the user in
@@ -271,7 +293,8 @@ class CONTENT_EXPORT DownloadManagerImpl : public DownloadManager,
// "save page as" downloads.
// TODO(asanka): Remove this container in favor of downloads_by_guid_ as a
// part of http://crbug.com/593020.
- std::unordered_map<uint32_t, std::unique_ptr<DownloadItemImpl>> downloads_;
+ std::unordered_map<uint32_t, std::unique_ptr<download::DownloadItemImpl>>
+ downloads_;
// Same as the above, but maps from GUID to download item. Note that the
// container is case sensitive. Hence the key needs to be normalized to
@@ -302,7 +325,8 @@ class CONTENT_EXPORT DownloadManagerImpl : public DownloadManager,
// Allows an embedder to control behavior. Guaranteed to outlive this object.
DownloadManagerDelegate* delegate_;
- std::vector<UniqueUrlDownloadHandlerPtr> url_download_handlers_;
+ std::vector<download::UrlDownloadHandler::UniqueUrlDownloadHandlerPtr>
+ url_download_handlers_;
base::WeakPtrFactory<DownloadManagerImpl> weak_factory_;