OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef COMPONENTS_OFFLINE_PAGES_CORE_DOWNLOADS_DOWNLOAD_UI_ITEM_H_ | 5 #ifndef COMPONENTS_OFFLINE_PAGES_CORE_DOWNLOADS_DOWNLOAD_UI_ITEM_H_ |
6 #define COMPONENTS_OFFLINE_PAGES_CORE_DOWNLOADS_DOWNLOAD_UI_ITEM_H_ | 6 #define COMPONENTS_OFFLINE_PAGES_CORE_DOWNLOADS_DOWNLOAD_UI_ITEM_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <string> | 10 #include <string> |
11 | 11 |
12 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
13 #include "base/time/time.h" | 13 #include "base/time/time.h" |
14 #include "url/gurl.h" | 14 #include "url/gurl.h" |
15 | 15 |
16 namespace offline_pages { | 16 namespace offline_pages { |
17 | 17 |
18 struct OfflinePageItem; | 18 struct OfflinePageItem; |
19 class SavePageRequest; | 19 class SavePageRequest; |
20 | 20 |
| 21 // The abstract "download item" that may be a media file, a web page (together |
| 22 // with all the resources) or a PWA web package. This is a data bag that exposes |
| 23 // only bits potentially visible by the user, not the internal data. |
21 struct DownloadUIItem { | 24 struct DownloadUIItem { |
22 public: | 25 public: |
| 26 // All Items start from PENDING and terminate at COMPLETED or are removed. |
| 27 // In sync with state values in Java OfflinePageDownloadItem class. |
| 28 enum DownloadState { |
| 29 PENDING = 0, |
| 30 DOWNLOADING = 1, |
| 31 PAUSED = 2, |
| 32 COMPLETED = 3, |
| 33 }; |
| 34 |
| 35 // The abstract notion of download progress. The |current| is always less |
| 36 // than |max|, the download 'percentage' at any moment is current/max. |
| 37 // Note the |max| can change over time, as more resources are discovered from |
| 38 // the bytes already loaded (which is often happening when a web page is |
| 39 // loaded and more resources are found in the markup). |
| 40 struct DownloadProgress { |
| 41 DownloadProgress(int64_t current, int64_t max) |
| 42 : current(current), |
| 43 max(max) {} |
| 44 |
| 45 int64_t current; |
| 46 int64_t max; |
| 47 }; |
| 48 |
23 DownloadUIItem(); | 49 DownloadUIItem(); |
24 explicit DownloadUIItem(const OfflinePageItem& page); | 50 explicit DownloadUIItem(const OfflinePageItem& page); |
25 explicit DownloadUIItem(const SavePageRequest& request); | 51 explicit DownloadUIItem(const SavePageRequest& request); |
26 DownloadUIItem(const DownloadUIItem& other); | 52 DownloadUIItem(const DownloadUIItem& other); |
27 ~DownloadUIItem(); | 53 ~DownloadUIItem(); |
28 | 54 |
29 // Unique id. | 55 // Unique id. Not necesarily a GUID, may be any string unique in the Chrome |
| 56 // instance across all DownloadUIItem providers. |
30 std::string guid; | 57 std::string guid; |
31 | 58 |
32 // The URL of the captured page. | 59 // The URL of the captured page. |
33 GURL url; | 60 GURL url; |
34 | 61 |
| 62 DownloadState download_state; |
| 63 |
| 64 DownloadProgress download_progress; |
| 65 |
35 // The Title of the captured page, if any. It can be empty string either | 66 // The Title of the captured page, if any. It can be empty string either |
36 // because the page is not yet fully loaded, or because it doesn't have any. | 67 // because the page is not yet fully loaded, or because it doesn't have any. |
37 base::string16 title; | 68 base::string16 title; |
38 | 69 |
39 // The file path to the archive with a local copy of the page. | 70 // The file path to the archive with a local copy of the page. |
40 base::FilePath target_path; | 71 base::FilePath target_path; |
41 | 72 |
42 // The time when the offline archive was created. | 73 // The time when the offline archive was created. |
43 base::Time start_time; | 74 base::Time start_time; |
44 | 75 |
45 // The size of the offline copy. | 76 // The size of the offline copy. |
46 int64_t total_bytes; | 77 int64_t total_bytes; |
47 }; | 78 }; |
48 | 79 |
49 } // namespace offline_pages | 80 } // namespace offline_pages |
50 | 81 |
51 #endif // COMPONENTS_OFFLINE_PAGES_CORE_DOWNLOADS_DOWNLOAD_UI_ITEM_H_ | 82 #endif // COMPONENTS_OFFLINE_PAGES_CORE_DOWNLOADS_DOWNLOAD_UI_ITEM_H_ |
OLD | NEW |