Index: chrome/browser/android/offline_pages/offline_page_utils.cc |
diff --git a/chrome/browser/android/offline_pages/offline_page_utils.cc b/chrome/browser/android/offline_pages/offline_page_utils.cc |
index 48dda928449c6dea04058e40600f8323dc871da5..645041f9ca8f1005a1554293d4d742aa7cde0a5e 100644 |
--- a/chrome/browser/android/offline_pages/offline_page_utils.cc |
+++ b/chrome/browser/android/offline_pages/offline_page_utils.cc |
@@ -129,6 +129,19 @@ void CheckDuplicateOngoingDownloads( |
request_coordinator_continuation, browser_context, url, callback)); |
} |
+void DoCalculateSizeBetween( |
+ const offline_pages::SizeInBytesCallback& callback, |
+ const base::Time& begin_time, |
+ const base::Time& end_time, |
+ const offline_pages::MultipleOfflinePageItemResult& result) { |
+ int64_t total_size = 0; |
+ for (auto& page : result) { |
+ if (begin_time <= page.creation_time && page.creation_time < end_time) |
+ total_size += page.file_size; |
+ } |
+ callback.Run(total_size); |
+} |
+ |
} // namespace |
// static |
@@ -308,4 +321,23 @@ bool OfflinePageUtils::CanDownloadAsOfflinePage( |
net::MatchesMimeType(contents_mime_type, "application/xhtml+xml")); |
} |
+// static |
+bool OfflinePageUtils::GetCachedOfflinePageSizeBetween( |
+ content::BrowserContext* browser_context, |
+ const SizeInBytesCallback& callback, |
+ const base::Time& begin_time, |
+ const base::Time& end_time) { |
+ OfflinePageModel* offline_page_model = |
+ OfflinePageModelFactory::GetForBrowserContext(browser_context); |
+ if (!offline_page_model || begin_time > end_time) |
+ return false; |
+ OfflinePageModelQueryBuilder builder; |
+ builder.RequireRemovedOnCacheReset( |
+ OfflinePageModelQuery::Requirement::INCLUDE_MATCHING); |
+ offline_page_model->GetPagesMatchingQuery( |
+ builder.Build(offline_page_model->GetPolicyController()), |
+ base::Bind(&DoCalculateSizeBetween, callback, begin_time, end_time)); |
+ return true; |
+} |
+ |
} // namespace offline_pages |