Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(306)

Unified Diff: content/browser/download/download_manager_impl.cc

Issue 1251243003: Support restricting browsing data removal for downloads by origin. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/download/download_manager_impl.cc
diff --git a/content/browser/download/download_manager_impl.cc b/content/browser/download/download_manager_impl.cc
index ce39612f65fec16ac9b6887d8034575d3c119ba1..02300f573b17059d5c25cad1c33c3e68b2b085f9 100644
--- a/content/browser/download/download_manager_impl.cc
+++ b/content/browser/download/download_manager_impl.cc
@@ -474,6 +474,13 @@ void DownloadManagerImpl::OnFileExistenceChecked(uint32 download_id,
}
}
+bool DownloadManagerImpl::IsRestrictedUrl(
+ const GURL& url, const std::set<GURL>& restricted_urls) {
+ DCHECK(!restricted_urls.empty());
+
+ return restricted_urls.find(url.GetOrigin()) != restricted_urls.end();
+}
+
BrowserContext* DownloadManagerImpl::GetBrowserContext() const {
return browser_context_;
}
@@ -565,8 +572,10 @@ void DownloadManagerImpl::DownloadRemoved(DownloadItemImpl* download) {
delete download;
}
-int DownloadManagerImpl::RemoveDownloadsBetween(base::Time remove_begin,
- base::Time remove_end) {
+int DownloadManagerImpl::RemoveDownloadsBetween(
+ const std::set<GURL>& restricted_urls,
+ base::Time remove_begin,
+ base::Time remove_end) {
int count = 0;
DownloadMap::const_iterator it = downloads_.begin();
while (it != downloads_.end()) {
@@ -575,7 +584,9 @@ int DownloadManagerImpl::RemoveDownloadsBetween(base::Time remove_begin,
// Increment done here to protect against invalidation below.
++it;
- if (download->GetStartTime() >= remove_begin &&
+ if ((restricted_urls.empty() || IsRestrictedUrl(download->GetURL(),
+ restricted_urls)) &&
+ download->GetStartTime() >= remove_begin &&
(remove_end.is_null() || download->GetStartTime() < remove_end) &&
(download->GetState() != DownloadItem::IN_PROGRESS)) {
// Erases the download from downloads_.
@@ -587,12 +598,13 @@ int DownloadManagerImpl::RemoveDownloadsBetween(base::Time remove_begin,
}
int DownloadManagerImpl::RemoveDownloads(base::Time remove_begin) {
- return RemoveDownloadsBetween(remove_begin, base::Time());
+ return RemoveDownloadsBetween(std::set<GURL>(), remove_begin, base::Time());
}
int DownloadManagerImpl::RemoveAllDownloads() {
// The null times make the date range unbounded.
- int num_deleted = RemoveDownloadsBetween(base::Time(), base::Time());
+ int num_deleted = RemoveDownloadsBetween(
+ std::set<GURL>(), base::Time(), base::Time());
RecordClearAllSize(num_deleted);
return num_deleted;
}

Powered by Google App Engine
This is Rietveld 408576698