| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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_model.h" | 5 #include "components/offline_pages/offline_page_model.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
| 11 #include "base/location.h" | 11 #include "base/location.h" |
| 12 #include "base/logging.h" | 12 #include "base/logging.h" |
| 13 #include "base/sequenced_task_runner.h" | 13 #include "base/sequenced_task_runner.h" |
| 14 #include "components/bookmarks/browser/bookmark_model.h" | 14 #include "components/bookmarks/browser/bookmark_model.h" |
| 15 #include "components/bookmarks/browser/bookmark_node.h" | 15 #include "components/bookmarks/browser/bookmark_node.h" |
| 16 #include "components/offline_pages/offline_page_item.h" | 16 #include "components/offline_pages/offline_page_item.h" |
| 17 #include "components/offline_pages/offline_page_metadata_store.h" | 17 #include "components/offline_pages/offline_page_metadata_store.h" |
| 18 #include "url/gurl.h" | 18 #include "url/gurl.h" |
| 19 | 19 |
| 20 using ArchiverResult = offline_pages::OfflinePageArchiver::ArchiverResult; | 20 using ArchiverResult = offline_pages::OfflinePageArchiver::ArchiverResult; |
| 21 using SavePageResult = offline_pages::OfflinePageModel::SavePageResult; | 21 using SavePageResult = offline_pages::OfflinePageModel::SavePageResult; |
| 22 | 22 |
| 23 namespace offline_pages { | 23 namespace offline_pages { |
| 24 | 24 |
| 25 namespace { | 25 namespace { |
| 26 | 26 |
| 27 // Threshold for how old offline copy of a page should be before we offer to |
| 28 // delete it to free up space. |
| 29 const base::TimeDelta kPageCleanUpThreshold = base::TimeDelta::FromDays(30); |
| 30 |
| 27 SavePageResult ToSavePageResult(ArchiverResult archiver_result) { | 31 SavePageResult ToSavePageResult(ArchiverResult archiver_result) { |
| 28 SavePageResult result; | 32 SavePageResult result; |
| 29 switch (archiver_result) { | 33 switch (archiver_result) { |
| 30 case ArchiverResult::SUCCESSFULLY_CREATED: | 34 case ArchiverResult::SUCCESSFULLY_CREATED: |
| 31 result = SavePageResult::SUCCESS; | 35 result = SavePageResult::SUCCESS; |
| 32 break; | 36 break; |
| 33 case ArchiverResult::ERROR_DEVICE_FULL: | 37 case ArchiverResult::ERROR_DEVICE_FULL: |
| 34 result = SavePageResult::DEVICE_FULL; | 38 result = SavePageResult::DEVICE_FULL; |
| 35 break; | 39 break; |
| 36 case ArchiverResult::ERROR_CONTENT_UNAVAILABLE: | 40 case ArchiverResult::ERROR_CONTENT_UNAVAILABLE: |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 } | 149 } |
| 146 | 150 |
| 147 const std::vector<OfflinePageItem> OfflinePageModel::GetAllPages() const { | 151 const std::vector<OfflinePageItem> OfflinePageModel::GetAllPages() const { |
| 148 DCHECK(is_loaded_); | 152 DCHECK(is_loaded_); |
| 149 std::vector<OfflinePageItem> offline_pages; | 153 std::vector<OfflinePageItem> offline_pages; |
| 150 for (const auto& id_page_pair : offline_pages_) | 154 for (const auto& id_page_pair : offline_pages_) |
| 151 offline_pages.push_back(id_page_pair.second); | 155 offline_pages.push_back(id_page_pair.second); |
| 152 return offline_pages; | 156 return offline_pages; |
| 153 } | 157 } |
| 154 | 158 |
| 159 const std::vector<OfflinePageItem> OfflinePageModel::GetPagesToCleanUp() const { |
| 160 DCHECK(is_loaded_); |
| 161 std::vector<OfflinePageItem> offline_pages; |
| 162 base::Time now = base::Time::Now(); |
| 163 for (const auto& id_page_pair : offline_pages_) { |
| 164 if (now - id_page_pair.second.creation_time > kPageCleanUpThreshold) |
| 165 offline_pages.push_back(id_page_pair.second); |
| 166 } |
| 167 return offline_pages; |
| 168 } |
| 169 |
| 155 bool OfflinePageModel::GetPageByBookmarkId( | 170 bool OfflinePageModel::GetPageByBookmarkId( |
| 156 int64 bookmark_id, | 171 int64 bookmark_id, |
| 157 OfflinePageItem* offline_page) const { | 172 OfflinePageItem* offline_page) const { |
| 158 DCHECK(offline_page); | 173 DCHECK(offline_page); |
| 159 | 174 |
| 160 const auto iter = offline_pages_.find(bookmark_id); | 175 const auto iter = offline_pages_.find(bookmark_id); |
| 161 if (iter != offline_pages_.end()) { | 176 if (iter != offline_pages_.end()) { |
| 162 *offline_page = iter->second; | 177 *offline_page = iter->second; |
| 163 return true; | 178 return true; |
| 164 } | 179 } |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 306 for (int64 bookmark_id : bookmark_ids) | 321 for (int64 bookmark_id : bookmark_ids) |
| 307 offline_pages_.erase(bookmark_id); | 322 offline_pages_.erase(bookmark_id); |
| 308 // Deleting multiple pages always succeeds when it gets to this point. | 323 // Deleting multiple pages always succeeds when it gets to this point. |
| 309 if (success || bookmark_ids.size() > 1) | 324 if (success || bookmark_ids.size() > 1) |
| 310 callback.Run(DeletePageResult::SUCCESS); | 325 callback.Run(DeletePageResult::SUCCESS); |
| 311 else | 326 else |
| 312 callback.Run(DeletePageResult::STORE_FAILURE); | 327 callback.Run(DeletePageResult::STORE_FAILURE); |
| 313 } | 328 } |
| 314 | 329 |
| 315 } // namespace offline_pages | 330 } // namespace offline_pages |
| OLD | NEW |