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

Unified Diff: components/offline_pages/offline_page_model.cc

Issue 1420003004: Wipe out offline page data on clearing cookie and site data (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
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 c007366c99bae9358ce43e51af940b7d7aa5f5f9..e09e314cc85770a02144e6f293a821a5f4911531 100644
--- a/components/offline_pages/offline_page_model.cc
+++ b/components/offline_pages/offline_page_model.cc
@@ -219,6 +219,19 @@ void OfflinePageModel::DeletePagesByBookmarkId(
base::Owned(success)));
}
+void OfflinePageModel::ClearAll(const base::Closure& callback) {
+ DCHECK(is_loaded_);
+
+ std::vector<int64> bookmark_ids;
+ for (const auto& id_page_pair : offline_pages_)
+ bookmark_ids.push_back(id_page_pair.second.bookmark_id);
fgorski 2015/10/23 20:55:03 bookmark_ids.push_back(id_page_pair.first);
jianli 2015/10/26 21:42:43 Done.
+ DeletePagesByBookmarkId(
+ bookmark_ids,
+ base::Bind(&OfflinePageModel::OnRemoveAllFilesDoneForClearAll,
+ weak_ptr_factory_.GetWeakPtr(),
+ callback));
+}
+
const std::vector<OfflinePageItem> OfflinePageModel::GetAllPages() const {
DCHECK(is_loaded_);
std::vector<OfflinePageItem> offline_pages;
@@ -442,10 +455,10 @@ void OfflinePageModel::OnLoadDone(
DCHECK(!is_loaded_);
is_loaded_ = true;
- if (success) {
- for (const auto& offline_page : offline_pages)
- offline_pages_[offline_page.bookmark_id] = offline_page;
- }
+ // TODO(jianli): rebuild the store upon failure.
+
+ if (success)
+ CacheLoadedData(offline_pages);
// Run all the delayed tasks.
for (const auto& delayed_task : delayed_tasks_)
@@ -554,4 +567,36 @@ void OfflinePageModel::OnRemoveOfflinePagesMissingArchiveFileDone(
}
}
+void OfflinePageModel::OnRemoveAllFilesDoneForClearAll(
+ const base::Closure& callback,
+ DeletePageResult result) {
+ store_->Reset(base::Bind(&OfflinePageModel::OnResetStoreDoneForClearAll,
+ weak_ptr_factory_.GetWeakPtr(),
fgorski 2015/10/23 20:55:03 nit: alignment is off
jianli 2015/10/26 21:42:43 Done.
+ callback));
+}
+
+void OfflinePageModel::OnResetStoreDoneForClearAll(
+ const base::Closure& callback, bool success) {
fgorski 2015/10/23 20:55:03 can you more explicitly ignore success here?
jianli 2015/10/26 21:42:43 Done.
+ offline_pages_.clear();
+ store_->Load(base::Bind(&OfflinePageModel::OnReloadStoreDoneForClearAll,
+ weak_ptr_factory_.GetWeakPtr(),
+ callback));
+}
+
+void OfflinePageModel::OnReloadStoreDoneForClearAll(
+ const base::Closure& callback,
+ bool success,
+ const std::vector<OfflinePageItem>& offline_pages) {
+ DCHECK(success);
+
+ CacheLoadedData(offline_pages);
+ callback.Run();
+}
+
+void OfflinePageModel::CacheLoadedData(
+ const std::vector<OfflinePageItem>& offline_pages) {
fgorski 2015/10/23 20:55:03 offline_pages.clear(); should probably go here as
jianli 2015/10/26 21:42:44 Done.
+ for (const auto& offline_page : offline_pages)
+ offline_pages_[offline_page.bookmark_id] = offline_page;
+}
+
} // namespace offline_pages

Powered by Google App Engine
This is Rietveld 408576698