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

Side by Side Diff: components/offline_pages/offline_page_storage_manager.cc

Issue 1965633002: [Offline Pages] Introducing StorageManagerClient interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Simplifying interface per suggestion. Created 4 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/offline_pages/offline_page_storage_manager.h" 5 #include "components/offline_pages/offline_page_storage_manager.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "components/offline_pages/client_policy_controller.h" 8 #include "components/offline_pages/client_policy_controller.h"
9 #include "components/offline_pages/offline_page_client_policy.h" 9 #include "components/offline_pages/offline_page_client_policy.h"
10 #include "components/offline_pages/offline_page_item.h" 10 #include "components/offline_pages/offline_page_item.h"
11 #include "components/offline_pages/offline_page_model.h"
12 #include "components/offline_pages/offline_page_types.h" 11 #include "components/offline_pages/offline_page_types.h"
13 12
14 namespace offline_pages { 13 namespace offline_pages {
15 14
16 OfflinePageStorageManager::OfflinePageStorageManager(OfflinePageModel* model) 15 OfflinePageStorageManager::OfflinePageStorageManager(
17 : model_(model), 16 Client* client,
18 policy_controller_(model->GetPolicyController()), 17 ClientPolicyController* policy_controller)
18 : client_(client),
19 policy_controller_(policy_controller),
19 in_progress_(false), 20 in_progress_(false),
20 weak_ptr_factory_(this) {} 21 weak_ptr_factory_(this) {}
21 22
22 OfflinePageStorageManager::~OfflinePageStorageManager() { 23 OfflinePageStorageManager::~OfflinePageStorageManager() {}
23 }
24 24
25 void OfflinePageStorageManager::ClearPagesIfNeeded( 25 void OfflinePageStorageManager::ClearPagesIfNeeded(
26 const ClearPageCallback& callback) { 26 const ClearPageCallback& callback) {
27 if (!ShouldClearPages()) 27 if (!ShouldClearPages())
28 return; 28 return;
29 in_progress_ = true; 29 in_progress_ = true;
30 model_->GetAllPages(base::Bind(&OfflinePageStorageManager::ClearExpiredPages, 30 client_->GetAllPages(base::Bind(&OfflinePageStorageManager::ClearExpiredPages,
31 weak_ptr_factory_.GetWeakPtr(), callback)); 31 weak_ptr_factory_.GetWeakPtr(), callback));
32 } 32 }
33 33
34 void OfflinePageStorageManager::ClearExpiredPages( 34 void OfflinePageStorageManager::ClearExpiredPages(
35 const ClearPageCallback& callback, 35 const ClearPageCallback& callback,
36 const MultipleOfflinePageItemResult& pages) { 36 const MultipleOfflinePageItemResult& pages) {
37 DCHECK(in_progress_); 37 DCHECK(in_progress_);
38 std::vector<int64_t> offline_ids; 38 std::vector<int64_t> offline_ids;
39 GetExpiredPageIds(pages, offline_ids); 39 GetExpiredPageIds(pages, offline_ids);
40 model_->DeletePagesByOfflineId( 40 client_->DeletePagesByOfflineId(
41 offline_ids, 41 offline_ids,
42 base::Bind(&OfflinePageStorageManager::OnExpiredPagesDeleted, 42 base::Bind(&OfflinePageStorageManager::OnExpiredPagesDeleted,
43 weak_ptr_factory_.GetWeakPtr(), callback, offline_ids.size())); 43 weak_ptr_factory_.GetWeakPtr(), callback, offline_ids.size()));
44 } 44 }
45 45
46 void OfflinePageStorageManager::GetExpiredPageIds( 46 void OfflinePageStorageManager::GetExpiredPageIds(
47 const MultipleOfflinePageItemResult& pages, 47 const MultipleOfflinePageItemResult& pages,
48 std::vector<int64_t>& offline_ids) { 48 std::vector<int64_t>& offline_ids) {
49 for (const auto& page : pages) { 49 for (const auto& page : pages) {
50 if (IsPageExpired(page)) 50 if (IsPageExpired(page))
51 offline_ids.push_back(page.offline_id); 51 offline_ids.push_back(page.offline_id);
52 } 52 }
53 } 53 }
54 54
55 void OfflinePageStorageManager::OnExpiredPagesDeleted( 55 void OfflinePageStorageManager::OnExpiredPagesDeleted(
56 const ClearPageCallback& callback, 56 const ClearPageCallback& callback,
57 int pages_cleared, 57 int pages_cleared,
58 DeletePageResult result) { 58 DeletePageResult result) {
59 in_progress_ = false; 59 in_progress_ = false;
60 callback.Run(pages_cleared, result); 60 callback.Run(pages_cleared, result);
61 } 61 }
62 62
63 bool OfflinePageStorageManager::ShouldClearPages() { 63 bool OfflinePageStorageManager::ShouldClearPages() {
64 return !in_progress_ && model_->is_loaded(); 64 return !in_progress_;
65 } 65 }
66 66
67 bool OfflinePageStorageManager::IsPageExpired(const OfflinePageItem& page) { 67 bool OfflinePageStorageManager::IsPageExpired(const OfflinePageItem& page) {
68 base::Time now = base::Time::Now(); 68 base::Time now = base::Time::Now();
69 const LifetimePolicy& policy = 69 const LifetimePolicy& policy =
70 policy_controller_->GetPolicy(page.client_id.name_space).lifetime_policy; 70 policy_controller_->GetPolicy(page.client_id.name_space).lifetime_policy;
71 return now - page.last_access_time > policy.expiration_period; 71 return now - page.last_access_time > policy.expiration_period;
72 } 72 }
73 73
74 } // namespace offline_pages 74 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698