| OLD | NEW |
| 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 #ifndef COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_MODEL_IMPL_H_ | 5 #ifndef COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_MODEL_IMPL_H_ |
| 6 #define COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_MODEL_IMPL_H_ | 6 #define COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_MODEL_IMPL_H_ |
| 7 | 7 |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <map> | 10 #include <map> |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 const std::vector<ClientId>& client_ids, | 82 const std::vector<ClientId>& client_ids, |
| 83 const MultipleOfflinePageItemCallback& callback) override; | 83 const MultipleOfflinePageItemCallback& callback) override; |
| 84 | 84 |
| 85 void DeleteCachedPagesByURLPredicate( | 85 void DeleteCachedPagesByURLPredicate( |
| 86 const UrlPredicate& predicate, | 86 const UrlPredicate& predicate, |
| 87 const DeletePageCallback& callback) override; | 87 const DeletePageCallback& callback) override; |
| 88 void CheckPagesExistOffline( | 88 void CheckPagesExistOffline( |
| 89 const std::set<GURL>& urls, | 89 const std::set<GURL>& urls, |
| 90 const CheckPagesExistOfflineCallback& callback) override; | 90 const CheckPagesExistOfflineCallback& callback) override; |
| 91 void GetAllPages(const MultipleOfflinePageItemCallback& callback) override; | 91 void GetAllPages(const MultipleOfflinePageItemCallback& callback) override; |
| 92 void GetAllPagesWithExpired( | |
| 93 const MultipleOfflinePageItemCallback& callback) override; | |
| 94 void GetOfflineIdsForClientId( | 92 void GetOfflineIdsForClientId( |
| 95 const ClientId& client_id, | 93 const ClientId& client_id, |
| 96 const MultipleOfflineIdCallback& callback) override; | 94 const MultipleOfflineIdCallback& callback) override; |
| 97 void GetPageByOfflineId( | 95 void GetPageByOfflineId( |
| 98 int64_t offline_id, | 96 int64_t offline_id, |
| 99 const SingleOfflinePageItemCallback& callback) override; | 97 const SingleOfflinePageItemCallback& callback) override; |
| 100 void GetPagesByURL( | 98 void GetPagesByURL( |
| 101 const GURL& url, | 99 const GURL& url, |
| 102 URLSearchMode url_search_mode, | 100 URLSearchMode url_search_mode, |
| 103 const MultipleOfflinePageItemCallback& callback) override; | 101 const MultipleOfflinePageItemCallback& callback) override; |
| 104 void ExpirePages(const std::vector<int64_t>& offline_ids, | |
| 105 const base::Time& expiration_time, | |
| 106 const base::Callback<void(bool)>& callback) override; | |
| 107 ClientPolicyController* GetPolicyController() override; | 102 ClientPolicyController* GetPolicyController() override; |
| 108 | 103 |
| 109 // Methods for testing only: | 104 // Methods for testing only: |
| 110 OfflinePageMetadataStore* GetStoreForTesting(); | 105 OfflinePageMetadataStore* GetStoreForTesting(); |
| 111 void set_testing_clock(base::Clock* clock) { testing_clock_ = clock; } | 106 void set_testing_clock(base::Clock* clock) { testing_clock_ = clock; } |
| 112 | 107 |
| 113 OfflinePageStorageManager* GetStorageManager(); | 108 OfflinePageStorageManager* GetStorageManager(); |
| 114 | 109 |
| 115 bool is_loaded() const override; | 110 bool is_loaded() const override; |
| 116 | 111 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 136 const ClientId& client_id, | 131 const ClientId& client_id, |
| 137 const MultipleOfflineIdCallback& callback) const; | 132 const MultipleOfflineIdCallback& callback) const; |
| 138 const std::vector<int64_t> MaybeGetOfflineIdsForClientId( | 133 const std::vector<int64_t> MaybeGetOfflineIdsForClientId( |
| 139 const ClientId& client_id) const; | 134 const ClientId& client_id) const; |
| 140 void GetPagesByURLWhenLoadDone( | 135 void GetPagesByURLWhenLoadDone( |
| 141 const GURL& url, | 136 const GURL& url, |
| 142 URLSearchMode url_search_mode, | 137 URLSearchMode url_search_mode, |
| 143 const MultipleOfflinePageItemCallback& callback) const; | 138 const MultipleOfflinePageItemCallback& callback) const; |
| 144 void MarkPageAccessedWhenLoadDone(int64_t offline_id); | 139 void MarkPageAccessedWhenLoadDone(int64_t offline_id); |
| 145 | 140 |
| 141 // Check the consistency between metadata store and archives on disk, |
| 142 // would delete the metadata entries which don't have an associated |
| 143 // archive and the archives which doesn't have a metadata in the store. |
| 144 // The expired pages (from previous versions) would also be cleared |
| 145 // during this process. |
| 146 void CheckMetadataConsistency(); | 146 void CheckMetadataConsistency(); |
| 147 | 147 |
| 148 // Callback for loading pages from the offline page metadata store. | 148 // Callback for loading pages from the offline page metadata store. |
| 149 void OnStoreInitialized(const base::TimeTicks& start_time, | 149 void OnStoreInitialized(const base::TimeTicks& start_time, |
| 150 int reset_attempts_left, | 150 int reset_attempts_left, |
| 151 bool success); | 151 bool success); |
| 152 void OnStoreResetDone(const base::TimeTicks& start_time, | 152 void OnStoreResetDone(const base::TimeTicks& start_time, |
| 153 int reset_attempts_left, | 153 int reset_attempts_left, |
| 154 bool success); | 154 bool success); |
| 155 void OnInitialGetOfflinePagesDone( | 155 void OnInitialGetOfflinePagesDone( |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 187 std::unique_ptr<OfflinePagesUpdateResult> result); | 187 std::unique_ptr<OfflinePagesUpdateResult> result); |
| 188 void InformDeletePageDone(const DeletePageCallback& callback, | 188 void InformDeletePageDone(const DeletePageCallback& callback, |
| 189 DeletePageResult result); | 189 DeletePageResult result); |
| 190 | 190 |
| 191 void OnMarkPageAccesseDone(const OfflinePageItem& offline_page_item, | 191 void OnMarkPageAccesseDone(const OfflinePageItem& offline_page_item, |
| 192 std::unique_ptr<OfflinePagesUpdateResult> result); | 192 std::unique_ptr<OfflinePagesUpdateResult> result); |
| 193 | 193 |
| 194 // Callbacks for checking metadata consistency. | 194 // Callbacks for checking metadata consistency. |
| 195 void CheckMetadataConsistencyForArchivePaths( | 195 void CheckMetadataConsistencyForArchivePaths( |
| 196 const std::set<base::FilePath>& archive_paths); | 196 const std::set<base::FilePath>& archive_paths); |
| 197 // Callback called after headless archives deleted. Orphaned archives are | 197 // Callbacks which would be called after orphaned archives are deleted. |
| 198 // archives files on disk which are not pointed to by any of the page items | 198 // Orphaned archives are the files on disk which are not pointed to by any of |
| 199 // in metadata store. | 199 // the page entries in the metadata store. |
| 200 void ExpirePagesMissingArchiveFile( | 200 void DeletePagesMissingArchiveFile( |
| 201 const std::set<base::FilePath>& archive_paths); | 201 const std::set<base::FilePath>& archive_paths); |
| 202 void OnExpirePagesMissingArchiveFileDone( | 202 void OnDeletePagesMissingArchiveFileDone( |
| 203 const std::vector<int64_t>& offline_ids, | 203 const std::vector<int64_t>& offline_ids, |
| 204 bool success); | 204 DeletePageResult result); |
| 205 void DeleteOrphanedArchives(const std::set<base::FilePath>& archive_paths); | 205 void DeleteOrphanedArchives(const std::set<base::FilePath>& archive_paths); |
| 206 void OnDeleteOrphanedArchivesDone(const std::vector<base::FilePath>& archives, | 206 void OnDeleteOrphanedArchivesDone(const std::vector<base::FilePath>& archives, |
| 207 bool success); | 207 bool success); |
| 208 | 208 |
| 209 // Callbacks for deleting pages with same URL when saving pages. | 209 // Callbacks for deleting pages with same URL when saving pages. |
| 210 void DeleteExistingPagesWithSameURL(const OfflinePageItem& offline_page); | 210 void DeleteExistingPagesWithSameURL(const OfflinePageItem& offline_page); |
| 211 void OnPagesFoundWithSameURL(const OfflinePageItem& offline_page, | 211 void OnPagesFoundWithSameURL(const OfflinePageItem& offline_page, |
| 212 size_t pages_allowed, | 212 size_t pages_allowed, |
| 213 const MultipleOfflinePageItemResult& items); | 213 const MultipleOfflinePageItemResult& items); |
| 214 void OnDeleteOldPagesWithSameURL(DeletePageResult result); | 214 void OnDeleteOldPagesWithSameURL(DeletePageResult result); |
| 215 | 215 |
| 216 void CacheLoadedData(const std::vector<OfflinePageItem>& offline_pages); | 216 void CacheLoadedData(const std::vector<OfflinePageItem>& offline_pages); |
| 217 | 217 |
| 218 // Actually does the work of deleting, requires the model is loaded. | 218 // Actually does the work of deleting, requires the model is loaded. |
| 219 void DoDeletePagesByOfflineId(const std::vector<int64_t>& offline_ids, | 219 void DoDeletePagesByOfflineId(const std::vector<int64_t>& offline_ids, |
| 220 const DeletePageCallback& callback); | 220 const DeletePageCallback& callback); |
| 221 | 221 |
| 222 // Actually does the work of deleting, requires the model is loaded. | 222 // Actually does the work of deleting, requires the model is loaded. |
| 223 void DeletePages(const DeletePageCallback& callback, | 223 void DeletePages(const DeletePageCallback& callback, |
| 224 const MultipleOfflinePageItemResult& items); | 224 const MultipleOfflinePageItemResult& items); |
| 225 | 225 |
| 226 void DoGetPagesByClientIds(const std::vector<ClientId>& client_ids, | 226 void DoGetPagesByClientIds(const std::vector<ClientId>& client_ids, |
| 227 const MultipleOfflinePageItemCallback& callback); | 227 const MultipleOfflinePageItemCallback& callback); |
| 228 | 228 |
| 229 // Similar to DoDeletePagesByOfflineId, does actual work of deleting, and | 229 // Similar to DoDeletePagesByOfflineId, does actual work of deleting, and |
| 230 // requires that the model is loaded. | 230 // requires that the model is loaded. |
| 231 void DoDeleteCachedPagesByURLPredicate(const UrlPredicate& predicate, | 231 void DoDeleteCachedPagesByURLPredicate(const UrlPredicate& predicate, |
| 232 const DeletePageCallback& callback); | 232 const DeletePageCallback& callback); |
| 233 | 233 |
| 234 // Callback completing page expiration. | 234 // Clears expired pages if there are any or we're running out of storage. |
| 235 void OnExpirePageDone(const base::Time& expiration_time, | |
| 236 std::unique_ptr<OfflinePagesUpdateResult> result); | |
| 237 | |
| 238 // Clears expired pages if there are any. | |
| 239 void ClearStorageIfNeeded( | 235 void ClearStorageIfNeeded( |
| 240 const OfflinePageStorageManager::ClearStorageCallback& callback); | 236 const OfflinePageStorageManager::ClearStorageCallback& callback); |
| 241 | 237 |
| 242 // Callback completing storage clearing. | 238 // Callback completing storage clearing. |
| 243 void OnStorageCleared(size_t expired_page_count, | 239 void OnStorageCleared(size_t cleared_page_count, |
| 244 OfflinePageStorageManager::ClearStorageResult result); | 240 OfflinePageStorageManager::ClearStorageResult result); |
| 245 | 241 |
| 246 // Post task to clear storage. | 242 // Post task to clear storage. |
| 247 void PostClearStorageIfNeededTask(bool delayed); | 243 void PostClearStorageIfNeededTask(bool delayed); |
| 248 | 244 |
| 249 // Check if |offline_page| should be removed on cache reset by user. | 245 // Check if |offline_page| should be removed on cache reset by user. |
| 250 bool IsRemovedOnCacheReset(const OfflinePageItem& offline_page) const; | 246 bool IsRemovedOnCacheReset(const OfflinePageItem& offline_page) const; |
| 251 | 247 |
| 252 void RunWhenLoaded(const base::Closure& job); | 248 void RunWhenLoaded(const base::Closure& job); |
| 253 | 249 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 291 base::Clock* testing_clock_; | 287 base::Clock* testing_clock_; |
| 292 | 288 |
| 293 base::WeakPtrFactory<OfflinePageModelImpl> weak_ptr_factory_; | 289 base::WeakPtrFactory<OfflinePageModelImpl> weak_ptr_factory_; |
| 294 | 290 |
| 295 DISALLOW_COPY_AND_ASSIGN(OfflinePageModelImpl); | 291 DISALLOW_COPY_AND_ASSIGN(OfflinePageModelImpl); |
| 296 }; | 292 }; |
| 297 | 293 |
| 298 } // namespace offline_pages | 294 } // namespace offline_pages |
| 299 | 295 |
| 300 #endif // COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_MODEL_IMPL_H_ | 296 #endif // COMPONENTS_OFFLINE_PAGES_OFFLINE_PAGE_MODEL_IMPL_H_ |
| OLD | NEW |