Index: components/offline_pages/core/cached_offline_page_utils.cc |
diff --git a/components/offline_pages/core/cached_offline_page_utils.cc b/components/offline_pages/core/cached_offline_page_utils.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5f81e305516d403f7167be1d4b5f12b2473b5166 |
--- /dev/null |
+++ b/components/offline_pages/core/cached_offline_page_utils.cc |
@@ -0,0 +1,70 @@ |
+// Copyright 2017 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. |
+ |
+#include "components/offline_pages/core/cached_offline_page_utils.h" |
+ |
+#include <stdint.h> |
+ |
+#include "base/bind.h" |
+#include "base/time/time.h" |
+#include "components/offline_pages/core/offline_page_item.h" |
+#include "components/offline_pages/core/offline_page_model.h" |
+#include "components/offline_pages/core/offline_page_types.h" |
+ |
+namespace { |
+ |
+void DoCalculateSizeBetween( |
+ const offline_pages::SizeCalculatedCallback& 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) |
carlosk
2017/05/03 18:13:52
nit: use < instead of <= to avoid overlapping rang
romax
2017/05/03 19:46:21
Done.
|
+ total_size += page.file_size; |
+ } |
+ callback.Run(total_size); |
+} |
+ |
+} // namespace |
+ |
+namespace offline_pages { |
+ |
+// static |
+void CachedOfflinePageUtils::GetCachedOfflinePageSizeBetween( |
+ OfflinePageModel* model, |
+ const SizeCalculatedCallback& callback, |
+ const base::Time& begin_time, |
+ const base::Time& end_time) { |
+ if (!model) |
+ callback.Run(0); |
carlosk
2017/05/03 18:13:52
Change this to a DCHECK instead. It should be the
romax
2017/05/03 19:46:21
Done.
|
+ OfflinePageModelQueryBuilder builder; |
+ builder.RequireRemovedOnCacheReset( |
+ OfflinePageModelQuery::Requirement::INCLUDE_MATCHING); |
+ model->GetPagesMatchingQuery( |
+ builder.Build(model->GetPolicyController()), |
+ base::Bind(&DoCalculateSizeBetween, callback, begin_time, end_time)); |
+} |
+ |
+// static |
+void CachedOfflinePageUtils::GetCachedOfflinePageSize( |
+ OfflinePageModel* model, |
+ const SizeCalculatedCallback& callback) { |
+ GetCachedOfflinePageSizeBetween(model, callback, base::Time(), |
+ base::Time::Now()); |
carlosk
2017/05/03 18:13:52
Switch to base::Time::Max() for unbounded upper li
romax
2017/05/03 19:46:21
Done.
|
+} |
+ |
+// static |
+void CachedOfflinePageUtils::DeleteCachedOfflinePage( |
+ OfflinePageModel* model, |
+ const DeletePageCallback& callback) { |
+ if (!model) |
+ callback.Run(DeletePageResult::STORE_FAILURE); |
carlosk
2017/05/03 18:13:52
nit: should probably change this to a DCHECK too?
romax
2017/05/03 19:46:21
Removed the unused methods.
|
+ OfflinePageModelQueryBuilder builder; |
+ builder.RequireRemovedOnCacheReset( |
+ OfflinePageModelQuery::Requirement::INCLUDE_MATCHING); |
+ model->DeletePagesMatchingQuery(builder.Build(model->GetPolicyController()), |
+ callback); |
+} |
+} // namespace offline_pages |