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

Unified Diff: components/offline_pages/core/offline_page_storage_manager.cc

Issue 2700563005: [Offline Pages] Fix storage manager deleting persistent pages. (Closed)
Patch Set: Created 3 years, 10 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: components/offline_pages/core/offline_page_storage_manager.cc
diff --git a/components/offline_pages/core/offline_page_storage_manager.cc b/components/offline_pages/core/offline_page_storage_manager.cc
index 2b99f22e9eae7c81698a17c15526b8dc708859c7..efe9ec2f8565d61abf519493038cc680b9a19527 100644
--- a/components/offline_pages/core/offline_page_storage_manager.cc
+++ b/components/offline_pages/core/offline_page_storage_manager.cc
@@ -102,10 +102,10 @@ void OfflinePageStorageManager::GetPageIdsToClear(
int64_t kept_pages_size = 0;
for (const auto& page : pages) {
- if (!IsExpired(page))
- pages_map[page.client_id.name_space].push_back(page);
- else
+ if (IsExpired(page))
page_ids_to_clear->push_back(page.offline_id);
+ else
+ pages_map[page.client_id.name_space].push_back(page);
}
for (auto& iter : pages_map) {
@@ -114,6 +114,10 @@ void OfflinePageStorageManager::GetPageIdsToClear(
LifetimePolicy policy =
policy_controller_->GetPolicy(name_space).lifetime_policy;
+ // Storage manager only manages temporary offlined pages, so we shouldn't
+ // clear any persistent pages here.
+ if (policy.lifetime_type == LifetimeType::PERSISTENT)
+ continue;
std::sort(page_list.begin(), page_list.end(),
[](const OfflinePageItem& a, const OfflinePageItem& b) -> bool {
@@ -123,8 +127,7 @@ void OfflinePageStorageManager::GetPageIdsToClear(
size_t page_list_size = page_list.size();
size_t pos = 0;
while (pos < page_list_size &&
- (policy.page_limit == kUnlimitedPages || pos < policy.page_limit) &&
- !IsExpired(page_list.at(pos))) {
+ (policy.page_limit == kUnlimitedPages || pos < policy.page_limit)) {
kept_pages_size += page_list.at(pos).file_size;
kept_pages.push_back(page_list.at(pos));
pos++;

Powered by Google App Engine
This is Rietveld 408576698