123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // Copyright 2021 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef WEBLAYER_BROWSER_PERSISTENT_DOWNLOAD_H_
- #define WEBLAYER_BROWSER_PERSISTENT_DOWNLOAD_H_
- #include "base/memory/raw_ptr.h"
- #include "weblayer/browser/download_impl.h"
- namespace download {
- class DownloadItem;
- }
- namespace weblayer {
- // A DownloadImpl that is persisted to disk. It will be backed by a
- // download::DownloadItem for which IsTransient returns false. This is used when
- // a user downloads a file from the web.
- class PersistentDownload : public DownloadImpl {
- public:
- PersistentDownload(const PersistentDownload& other) = delete;
- PersistentDownload& operator=(const PersistentDownload& other) = delete;
- ~PersistentDownload() override;
- static void Create(download::DownloadItem* item);
- static PersistentDownload* Get(download::DownloadItem* item);
- // Download:
- DownloadState GetState() override;
- int64_t GetTotalBytes() override;
- int64_t GetReceivedBytes() override;
- void Pause() override;
- void Resume() override;
- void Cancel() override;
- base::FilePath GetLocation() override;
- std::u16string GetFileNameToReportToUser() override;
- std::string GetMimeType() override;
- DownloadError GetError() override;
- // DownloadImpl:
- int GetNotificationId() override;
- bool IsTransient() override;
- GURL GetSourceUrl() override;
- const SkBitmap* GetLargeIcon() override;
- void OnFinished(bool activated) override;
- private:
- explicit PersistentDownload(download::DownloadItem* item);
- void PauseInternal();
- void ResumeInternal();
- void CancelInternal();
- raw_ptr<download::DownloadItem> item_;
- bool pause_pending_ = false;
- bool resume_pending_ = false;
- bool cancel_pending_ = false;
- base::WeakPtrFactory<PersistentDownload> weak_ptr_factory_{this};
- };
- } // namespace weblayer
- #endif // WEBLAYER_BROWSER_PERSISTENT_DOWNLOAD_H_
|