Chromium Code Reviews| 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 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 246 bookmark_ids.push_back(id_page_pair.first); | 246 bookmark_ids.push_back(id_page_pair.first); |
| 247 DeletePagesByBookmarkId( | 247 DeletePagesByBookmarkId( |
| 248 bookmark_ids, | 248 bookmark_ids, |
| 249 base::Bind(&OfflinePageModel::OnRemoveAllFilesDoneForClearAll, | 249 base::Bind(&OfflinePageModel::OnRemoveAllFilesDoneForClearAll, |
| 250 weak_ptr_factory_.GetWeakPtr(), | 250 weak_ptr_factory_.GetWeakPtr(), |
| 251 callback)); | 251 callback)); |
| 252 } | 252 } |
| 253 | 253 |
| 254 bool OfflinePageModel::HasOfflinePages() const { | 254 bool OfflinePageModel::HasOfflinePages() const { |
| 255 DCHECK(is_loaded_); | 255 DCHECK(is_loaded_); |
| 256 return !offline_pages_.empty(); | 256 // Check that at least one page is not marked for deletion. Because we have |
| 257 // pages marked for deletion, we cannot simply invert result of |empty()|. | |
| 258 for (const auto& iter : offline_pages_) { | |
|
Michael Courage
2015/11/25 19:00:58
optional nit: seems like there's a pretty even spl
fgorski
2015/11/25 19:27:26
Done.
| |
| 259 if (!iter.second.IsMarkedForDeletion()) | |
| 260 return true; | |
| 261 } | |
| 262 return false; | |
| 257 } | 263 } |
| 258 | 264 |
| 259 const std::vector<OfflinePageItem> OfflinePageModel::GetAllPages() const { | 265 const std::vector<OfflinePageItem> OfflinePageModel::GetAllPages() const { |
| 260 DCHECK(is_loaded_); | 266 DCHECK(is_loaded_); |
| 261 std::vector<OfflinePageItem> offline_pages; | 267 std::vector<OfflinePageItem> offline_pages; |
| 262 for (const auto& id_page_pair : offline_pages_) { | 268 for (const auto& id_page_pair : offline_pages_) { |
| 263 if (id_page_pair.second.IsMarkedForDeletion()) | 269 if (id_page_pair.second.IsMarkedForDeletion()) |
| 264 continue; | 270 continue; |
| 265 offline_pages.push_back(id_page_pair.second); | 271 offline_pages.push_back(id_page_pair.second); |
| 266 } | 272 } |
| 267 return offline_pages; | 273 return offline_pages; |
| 268 } | 274 } |
| 269 | 275 |
| 270 const std::vector<OfflinePageItem> OfflinePageModel::GetPagesToCleanUp() const { | 276 const std::vector<OfflinePageItem> OfflinePageModel::GetPagesToCleanUp() const { |
| 271 DCHECK(is_loaded_); | 277 DCHECK(is_loaded_); |
| 272 std::vector<OfflinePageItem> offline_pages; | 278 std::vector<OfflinePageItem> offline_pages; |
| 273 base::Time now = base::Time::Now(); | 279 base::Time now = base::Time::Now(); |
| 274 for (const auto& id_page_pair : offline_pages_) { | 280 for (const auto& id_page_pair : offline_pages_) { |
| 275 if (!id_page_pair.second.IsMarkedForDeletion() && | 281 if (!id_page_pair.second.IsMarkedForDeletion() && |
| 276 now - id_page_pair.second.last_access_time > kPageCleanUpThreshold) { | 282 now - id_page_pair.second.last_access_time > kPageCleanUpThreshold) { |
| 277 offline_pages.push_back(id_page_pair.second); | 283 offline_pages.push_back(id_page_pair.second); |
| 278 } | 284 } |
| 279 } | 285 } |
| 280 return offline_pages; | 286 return offline_pages; |
| 281 } | 287 } |
| 282 | 288 |
| 283 const OfflinePageItem* OfflinePageModel::GetPageByBookmarkId( | 289 const OfflinePageItem* OfflinePageModel::GetPageByBookmarkId( |
| 284 int64 bookmark_id) const { | 290 int64 bookmark_id) const { |
| 285 const auto iter = offline_pages_.find(bookmark_id); | 291 const auto iter = offline_pages_.find(bookmark_id); |
| 286 return iter != offline_pages_.end() ? &(iter->second) : nullptr; | 292 return iter != offline_pages_.end() && !iter->second.IsMarkedForDeletion() |
| 293 ? &(iter->second) | |
| 294 : nullptr; | |
| 287 } | 295 } |
| 288 | 296 |
| 289 const OfflinePageItem* OfflinePageModel::GetPageByOfflineURL( | 297 const OfflinePageItem* OfflinePageModel::GetPageByOfflineURL( |
| 290 const GURL& offline_url) const { | 298 const GURL& offline_url) const { |
| 291 for (auto iter = offline_pages_.begin(); | 299 for (auto iter = offline_pages_.begin(); |
| 292 iter != offline_pages_.end(); | 300 iter != offline_pages_.end(); |
| 293 ++iter) { | 301 ++iter) { |
| 294 if (iter->second.GetOfflineURL() == offline_url) | 302 if (iter->second.GetOfflineURL() == offline_url && |
| 303 !iter->second.IsMarkedForDeletion()) { | |
| 295 return &(iter->second); | 304 return &(iter->second); |
| 305 } | |
| 296 } | 306 } |
| 297 return nullptr; | 307 return nullptr; |
| 298 } | 308 } |
| 299 | 309 |
| 300 const OfflinePageItem* OfflinePageModel::GetPageByOnlineURL( | 310 const OfflinePageItem* OfflinePageModel::GetPageByOnlineURL( |
| 301 const GURL& online_url) const { | 311 const GURL& online_url) const { |
| 302 for (auto iter = offline_pages_.begin(); iter != offline_pages_.end(); | 312 for (auto iter = offline_pages_.begin(); iter != offline_pages_.end(); |
| 303 ++iter) { | 313 ++iter) { |
| 304 if (iter->second.url == online_url) | 314 if (iter->second.url == online_url && !iter->second.IsMarkedForDeletion()) { |
| 305 return &(iter->second); | 315 return &(iter->second); |
| 316 } | |
| 306 } | 317 } |
| 307 return nullptr; | 318 return nullptr; |
| 308 } | 319 } |
| 309 | 320 |
| 310 void OfflinePageModel::CheckForExternalFileDeletion() { | 321 void OfflinePageModel::CheckForExternalFileDeletion() { |
| 311 DCHECK(is_loaded_); | 322 DCHECK(is_loaded_); |
| 312 | 323 |
| 313 std::vector<std::pair<int64, base::FilePath>> id_path_pairs; | 324 std::vector<std::pair<int64, base::FilePath>> id_path_pairs; |
| 314 for (const auto& id_page_pair : offline_pages_) { | 325 for (const auto& id_page_pair : offline_pages_) { |
| 315 id_path_pairs.push_back( | 326 id_path_pairs.push_back( |
| (...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 689 } | 700 } |
| 690 | 701 |
| 691 void OfflinePageModel::CacheLoadedData( | 702 void OfflinePageModel::CacheLoadedData( |
| 692 const std::vector<OfflinePageItem>& offline_pages) { | 703 const std::vector<OfflinePageItem>& offline_pages) { |
| 693 offline_pages_.clear(); | 704 offline_pages_.clear(); |
| 694 for (const auto& offline_page : offline_pages) | 705 for (const auto& offline_page : offline_pages) |
| 695 offline_pages_[offline_page.bookmark_id] = offline_page; | 706 offline_pages_[offline_page.bookmark_id] = offline_page; |
| 696 } | 707 } |
| 697 | 708 |
| 698 } // namespace offline_pages | 709 } // namespace offline_pages |
| OLD | NEW |