Index: components/offline_pages/offline_page_model.cc |
diff --git a/components/offline_pages/offline_page_model.cc b/components/offline_pages/offline_page_model.cc |
index 242ade295c21c5ffb70575f1147708045042b194..60a9b2e4a01cc2f1edbdf8730bc85b5944df228e 100644 |
--- a/components/offline_pages/offline_page_model.cc |
+++ b/components/offline_pages/offline_page_model.cc |
@@ -253,7 +253,13 @@ void OfflinePageModel::ClearAll(const base::Closure& callback) { |
bool OfflinePageModel::HasOfflinePages() const { |
DCHECK(is_loaded_); |
- return !offline_pages_.empty(); |
+ // Check that at least one page is not marked for deletion. Because we have |
+ // pages marked for deletion, we cannot simply invert result of |empty()|. |
+ for (const auto& id_page_pair : offline_pages_) { |
+ if (!id_page_pair.second.IsMarkedForDeletion()) |
+ return true; |
+ } |
+ return false; |
} |
const std::vector<OfflinePageItem> OfflinePageModel::GetAllPages() const { |
@@ -283,7 +289,9 @@ const std::vector<OfflinePageItem> OfflinePageModel::GetPagesToCleanUp() const { |
const OfflinePageItem* OfflinePageModel::GetPageByBookmarkId( |
int64 bookmark_id) const { |
const auto iter = offline_pages_.find(bookmark_id); |
- return iter != offline_pages_.end() ? &(iter->second) : nullptr; |
+ return iter != offline_pages_.end() && !iter->second.IsMarkedForDeletion() |
+ ? &(iter->second) |
+ : nullptr; |
} |
const OfflinePageItem* OfflinePageModel::GetPageByOfflineURL( |
@@ -291,8 +299,10 @@ const OfflinePageItem* OfflinePageModel::GetPageByOfflineURL( |
for (auto iter = offline_pages_.begin(); |
iter != offline_pages_.end(); |
++iter) { |
- if (iter->second.GetOfflineURL() == offline_url) |
+ if (iter->second.GetOfflineURL() == offline_url && |
+ !iter->second.IsMarkedForDeletion()) { |
return &(iter->second); |
+ } |
} |
return nullptr; |
} |
@@ -301,7 +311,7 @@ const OfflinePageItem* OfflinePageModel::GetPageByOnlineURL( |
const GURL& online_url) const { |
for (auto iter = offline_pages_.begin(); iter != offline_pages_.end(); |
++iter) { |
- if (iter->second.url == online_url) |
+ if (iter->second.url == online_url && !iter->second.IsMarkedForDeletion()) |
return &(iter->second); |
} |
return nullptr; |