| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // DownloadHistory manages persisting DownloadItems to the history service by | 5 // DownloadHistory manages persisting DownloadItems to the history service by |
| 6 // observing a single DownloadManager and all its DownloadItems using an | 6 // observing a single DownloadManager and all its DownloadItems using an |
| 7 // AllDownloadItemNotifier. | 7 // AllDownloadItemNotifier. |
| 8 // | 8 // |
| 9 // DownloadHistory decides whether and when to add items to, remove items from, | 9 // DownloadHistory decides whether and when to add items to, remove items from, |
| 10 // and update items in the database. DownloadHistory uses DownloadHistoryData to | 10 // and update items in the database. DownloadHistory uses DownloadHistoryData to |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 #include "base/macros.h" | 33 #include "base/macros.h" |
| 34 #include "base/metrics/histogram_macros.h" | 34 #include "base/metrics/histogram_macros.h" |
| 35 #include "chrome/browser/download/download_crx_util.h" | 35 #include "chrome/browser/download/download_crx_util.h" |
| 36 #include "components/history/content/browser/download_constants_utils.h" | 36 #include "components/history/content/browser/download_constants_utils.h" |
| 37 #include "components/history/core/browser/download_database.h" | 37 #include "components/history/core/browser/download_database.h" |
| 38 #include "components/history/core/browser/download_row.h" | 38 #include "components/history/core/browser/download_row.h" |
| 39 #include "components/history/core/browser/history_service.h" | 39 #include "components/history/core/browser/history_service.h" |
| 40 #include "content/public/browser/browser_thread.h" | 40 #include "content/public/browser/browser_thread.h" |
| 41 #include "content/public/browser/download_item.h" | 41 #include "content/public/browser/download_item.h" |
| 42 #include "content/public/browser/download_manager.h" | 42 #include "content/public/browser/download_manager.h" |
| 43 #include "extensions/features/features.h" |
| 43 | 44 |
| 44 #if defined(ENABLE_EXTENSIONS) | 45 #if BUILDFLAG(ENABLE_EXTENSIONS) |
| 45 #include "chrome/browser/extensions/api/downloads/downloads_api.h" | 46 #include "chrome/browser/extensions/api/downloads/downloads_api.h" |
| 46 #endif | 47 #endif |
| 47 | 48 |
| 48 namespace { | 49 namespace { |
| 49 | 50 |
| 50 // Per-DownloadItem data. This information does not belong inside DownloadItem, | 51 // Per-DownloadItem data. This information does not belong inside DownloadItem, |
| 51 // and keeping maps in DownloadHistory from DownloadItem to this information is | 52 // and keeping maps in DownloadHistory from DownloadItem to this information is |
| 52 // error-prone and complicated. Unfortunately, DownloadHistory::removing_*_ and | 53 // error-prone and complicated. Unfortunately, DownloadHistory::removing_*_ and |
| 53 // removed_while_adding_ cannot be moved into this class partly because | 54 // removed_while_adding_ cannot be moved into this class partly because |
| 54 // DownloadHistoryData is destroyed when DownloadItems are destroyed, and we | 55 // DownloadHistoryData is destroyed when DownloadItems are destroyed, and we |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 | 111 |
| 111 DISALLOW_COPY_AND_ASSIGN(DownloadHistoryData); | 112 DISALLOW_COPY_AND_ASSIGN(DownloadHistoryData); |
| 112 }; | 113 }; |
| 113 | 114 |
| 114 const char DownloadHistoryData::kKey[] = | 115 const char DownloadHistoryData::kKey[] = |
| 115 "DownloadItem DownloadHistoryData"; | 116 "DownloadItem DownloadHistoryData"; |
| 116 | 117 |
| 117 history::DownloadRow GetDownloadRow( | 118 history::DownloadRow GetDownloadRow( |
| 118 content::DownloadItem* item) { | 119 content::DownloadItem* item) { |
| 119 std::string by_ext_id, by_ext_name; | 120 std::string by_ext_id, by_ext_name; |
| 120 #if defined(ENABLE_EXTENSIONS) | 121 #if BUILDFLAG(ENABLE_EXTENSIONS) |
| 121 extensions::DownloadedByExtension* by_ext = | 122 extensions::DownloadedByExtension* by_ext = |
| 122 extensions::DownloadedByExtension::Get(item); | 123 extensions::DownloadedByExtension::Get(item); |
| 123 if (by_ext) { | 124 if (by_ext) { |
| 124 by_ext_id = by_ext->id(); | 125 by_ext_id = by_ext->id(); |
| 125 by_ext_name = by_ext->name(); | 126 by_ext_name = by_ext->name(); |
| 126 } | 127 } |
| 127 #endif | 128 #endif |
| 128 | 129 |
| 129 return history::DownloadRow( | 130 return history::DownloadRow( |
| 130 item->GetFullPath(), item->GetTargetFilePath(), item->GetUrlChain(), | 131 item->GetFullPath(), item->GetTargetFilePath(), item->GetUrlChain(), |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 it->referrer_url, it->site_url, it->tab_url, it->tab_referrer_url, | 269 it->referrer_url, it->site_url, it->tab_url, it->tab_referrer_url, |
| 269 it->mime_type, it->original_mime_type, it->start_time, it->end_time, | 270 it->mime_type, it->original_mime_type, it->start_time, it->end_time, |
| 270 it->etag, it->last_modified, it->received_bytes, it->total_bytes, | 271 it->etag, it->last_modified, it->received_bytes, it->total_bytes, |
| 271 std::string(), // TODO(asanka): Need to persist and restore hash of | 272 std::string(), // TODO(asanka): Need to persist and restore hash of |
| 272 // partial file for an interrupted download. No need to | 273 // partial file for an interrupted download. No need to |
| 273 // store hash for a completed file. | 274 // store hash for a completed file. |
| 274 history::ToContentDownloadState(it->state), | 275 history::ToContentDownloadState(it->state), |
| 275 history::ToContentDownloadDangerType(it->danger_type), | 276 history::ToContentDownloadDangerType(it->danger_type), |
| 276 history::ToContentDownloadInterruptReason(it->interrupt_reason), | 277 history::ToContentDownloadInterruptReason(it->interrupt_reason), |
| 277 it->opened); | 278 it->opened); |
| 278 #if defined(ENABLE_EXTENSIONS) | 279 #if BUILDFLAG(ENABLE_EXTENSIONS) |
| 279 if (!it->by_ext_id.empty() && !it->by_ext_name.empty()) { | 280 if (!it->by_ext_id.empty() && !it->by_ext_name.empty()) { |
| 280 new extensions::DownloadedByExtension( | 281 new extensions::DownloadedByExtension( |
| 281 item, it->by_ext_id, it->by_ext_name); | 282 item, it->by_ext_id, it->by_ext_name); |
| 282 item->UpdateObservers(); | 283 item->UpdateObservers(); |
| 283 } | 284 } |
| 284 #endif | 285 #endif |
| 285 DCHECK_EQ(DownloadHistoryData::PERSISTED, | 286 DCHECK_EQ(DownloadHistoryData::PERSISTED, |
| 286 DownloadHistoryData::Get(item)->state()); | 287 DownloadHistoryData::Get(item)->state()); |
| 287 ++history_size_; | 288 ++history_size_; |
| 288 } | 289 } |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 463 } | 464 } |
| 464 | 465 |
| 465 void DownloadHistory::RemoveDownloadsBatch() { | 466 void DownloadHistory::RemoveDownloadsBatch() { |
| 466 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 467 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 467 IdSet remove_ids; | 468 IdSet remove_ids; |
| 468 removing_ids_.swap(remove_ids); | 469 removing_ids_.swap(remove_ids); |
| 469 history_->RemoveDownloads(remove_ids); | 470 history_->RemoveDownloads(remove_ids); |
| 470 for (Observer& observer : observers_) | 471 for (Observer& observer : observers_) |
| 471 observer.OnDownloadsRemoved(remove_ids); | 472 observer.OnDownloadsRemoved(remove_ids); |
| 472 } | 473 } |
| OLD | NEW |