Chromium Code Reviews| 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 |