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

Unified Diff: components/offline_pages/offline_page_model.cc

Issue 1345043002: Update access info when an offline page is being visited (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Some more fixes Created 5 years, 3 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 f4d787050f1a2f70574b8710b053f20349f1e03c..a3eac9486398fe786dd25e4fe748fb5d0e330972 100644
--- a/components/offline_pages/offline_page_model.cc
+++ b/components/offline_pages/offline_page_model.cc
@@ -112,6 +112,23 @@ void OfflinePageModel::SavePage(const GURL& url,
pending_archivers_.push_back(archiver.Pass());
}
+void OfflinePageModel::MarkPageAccessed(int64 bookmark_id) {
+ DCHECK(is_loaded_);
+ auto iter = offline_pages_.find(bookmark_id);
+ if (iter == offline_pages_.end())
+ return;
+
+ // Make a copy of the cached item and update it. The cached item should only
+ // be updated upon the successful store operation.
+ OfflinePageItem offline_page_item = iter->second;
+ offline_page_item.last_access_time = base::Time::Now();
+ offline_page_item.access_count++;
+ store_->AddOrUpdateOfflinePage(
+ offline_page_item,
+ base::Bind(&OfflinePageModel::OnUpdateOfflinePageDone,
+ weak_ptr_factory_.GetWeakPtr(), offline_page_item));
+}
+
void OfflinePageModel::DeletePageByBookmarkId(
int64 bookmark_id,
const DeletePageCallback& callback) {
@@ -216,7 +233,7 @@ void OfflinePageModel::OnCreateArchiveDone(const GURL& requested_url,
OfflinePageItem offline_page_item(url, bookmark_id, file_path, file_size,
base::Time::Now());
- store_->AddOfflinePage(
+ store_->AddOrUpdateOfflinePage(
offline_page_item,
base::Bind(&OfflinePageModel::OnAddOfflinePageDone,
weak_ptr_factory_.GetWeakPtr(), archiver, callback,
@@ -240,6 +257,13 @@ void OfflinePageModel::OnAddOfflinePageDone(OfflinePageArchiver* archiver,
DeletePendingArchiver(archiver);
}
+void OfflinePageModel::OnUpdateOfflinePageDone(
+ const OfflinePageItem& offline_page_item, bool success) {
+ // Update the item in the cache only upon success.
+ if (success)
+ offline_pages_[offline_page_item.bookmark_id] = offline_page_item;
+}
+
void OfflinePageModel::BookmarkModelChanged() {
}
« no previous file with comments | « components/offline_pages/offline_page_model.h ('k') | components/offline_pages/offline_page_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698