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

Side by Side 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, 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 unified diff | Download patch
OLDNEW
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"
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 scoped_ptr<OfflinePageArchiver> archiver, 105 scoped_ptr<OfflinePageArchiver> archiver,
106 const SavePageCallback& callback) { 106 const SavePageCallback& callback) {
107 DCHECK(is_loaded_); 107 DCHECK(is_loaded_);
108 DCHECK(archiver.get()); 108 DCHECK(archiver.get());
109 archiver->CreateArchive(base::Bind(&OfflinePageModel::OnCreateArchiveDone, 109 archiver->CreateArchive(base::Bind(&OfflinePageModel::OnCreateArchiveDone,
110 weak_ptr_factory_.GetWeakPtr(), url, 110 weak_ptr_factory_.GetWeakPtr(), url,
111 bookmark_id, callback)); 111 bookmark_id, callback));
112 pending_archivers_.push_back(archiver.Pass()); 112 pending_archivers_.push_back(archiver.Pass());
113 } 113 }
114 114
115 void OfflinePageModel::MarkPageAccessed(int64 bookmark_id) {
116 DCHECK(is_loaded_);
117 auto iter = offline_pages_.find(bookmark_id);
118 if (iter == offline_pages_.end())
119 return;
120
121 // Make a copy of the cached item and update it. The cached item should only
122 // be updated upon the successful store operation.
123 OfflinePageItem offline_page_item = iter->second;
124 offline_page_item.last_access_time = base::Time::Now();
125 offline_page_item.access_count++;
126 store_->AddOrUpdateOfflinePage(
127 offline_page_item,
128 base::Bind(&OfflinePageModel::OnUpdateOfflinePageDone,
129 weak_ptr_factory_.GetWeakPtr(), offline_page_item));
130 }
131
115 void OfflinePageModel::DeletePageByBookmarkId( 132 void OfflinePageModel::DeletePageByBookmarkId(
116 int64 bookmark_id, 133 int64 bookmark_id,
117 const DeletePageCallback& callback) { 134 const DeletePageCallback& callback) {
118 DCHECK(is_loaded_); 135 DCHECK(is_loaded_);
119 std::vector<int64> bookmark_ids_to_delete; 136 std::vector<int64> bookmark_ids_to_delete;
120 bookmark_ids_to_delete.push_back(bookmark_id); 137 bookmark_ids_to_delete.push_back(bookmark_id);
121 DeletePagesByBookmarkId(bookmark_ids_to_delete, callback); 138 DeletePagesByBookmarkId(bookmark_ids_to_delete, callback);
122 } 139 }
123 140
124 void OfflinePageModel::DeletePagesByBookmarkId( 141 void OfflinePageModel::DeletePagesByBookmarkId(
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 226
210 if (archiver_result != ArchiverResult::SUCCESSFULLY_CREATED) { 227 if (archiver_result != ArchiverResult::SUCCESSFULLY_CREATED) {
211 SavePageResult result = ToSavePageResult(archiver_result); 228 SavePageResult result = ToSavePageResult(archiver_result);
212 InformSavePageDone(callback, result); 229 InformSavePageDone(callback, result);
213 DeletePendingArchiver(archiver); 230 DeletePendingArchiver(archiver);
214 return; 231 return;
215 } 232 }
216 233
217 OfflinePageItem offline_page_item(url, bookmark_id, file_path, file_size, 234 OfflinePageItem offline_page_item(url, bookmark_id, file_path, file_size,
218 base::Time::Now()); 235 base::Time::Now());
219 store_->AddOfflinePage( 236 store_->AddOrUpdateOfflinePage(
220 offline_page_item, 237 offline_page_item,
221 base::Bind(&OfflinePageModel::OnAddOfflinePageDone, 238 base::Bind(&OfflinePageModel::OnAddOfflinePageDone,
222 weak_ptr_factory_.GetWeakPtr(), archiver, callback, 239 weak_ptr_factory_.GetWeakPtr(), archiver, callback,
223 offline_page_item)); 240 offline_page_item));
224 } 241 }
225 242
226 void OfflinePageModel::OnAddOfflinePageDone(OfflinePageArchiver* archiver, 243 void OfflinePageModel::OnAddOfflinePageDone(OfflinePageArchiver* archiver,
227 const SavePageCallback& callback, 244 const SavePageCallback& callback,
228 const OfflinePageItem& offline_page, 245 const OfflinePageItem& offline_page,
229 bool success) { 246 bool success) {
230 SavePageResult result; 247 SavePageResult result;
231 if (success) { 248 if (success) {
232 offline_pages_[offline_page.bookmark_id] = offline_page; 249 offline_pages_[offline_page.bookmark_id] = offline_page;
233 result = SavePageResult::SUCCESS; 250 result = SavePageResult::SUCCESS;
234 UMA_HISTOGRAM_MEMORY_KB( 251 UMA_HISTOGRAM_MEMORY_KB(
235 "OfflinePages.PageSize", offline_page.file_size / 1024); 252 "OfflinePages.PageSize", offline_page.file_size / 1024);
236 } else { 253 } else {
237 result = SavePageResult::STORE_FAILURE; 254 result = SavePageResult::STORE_FAILURE;
238 } 255 }
239 InformSavePageDone(callback, result); 256 InformSavePageDone(callback, result);
240 DeletePendingArchiver(archiver); 257 DeletePendingArchiver(archiver);
241 } 258 }
242 259
260 void OfflinePageModel::OnUpdateOfflinePageDone(
261 const OfflinePageItem& offline_page_item, bool success) {
262 // Update the item in the cache only upon success.
263 if (success)
264 offline_pages_[offline_page_item.bookmark_id] = offline_page_item;
265 }
266
243 void OfflinePageModel::BookmarkModelChanged() { 267 void OfflinePageModel::BookmarkModelChanged() {
244 } 268 }
245 269
246 void OfflinePageModel::BookmarkNodeRemoved( 270 void OfflinePageModel::BookmarkNodeRemoved(
247 bookmarks::BookmarkModel* model, 271 bookmarks::BookmarkModel* model,
248 const bookmarks::BookmarkNode* parent, 272 const bookmarks::BookmarkNode* parent,
249 int old_index, 273 int old_index,
250 const bookmarks::BookmarkNode* node, 274 const bookmarks::BookmarkNode* node,
251 const std::set<GURL>& removed_urls) { 275 const std::set<GURL>& removed_urls) {
252 if (!is_loaded_) { 276 if (!is_loaded_) {
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 void OfflinePageModel::InformDeletePageDone(const DeletePageCallback& callback, 362 void OfflinePageModel::InformDeletePageDone(const DeletePageCallback& callback,
339 DeletePageResult result) { 363 DeletePageResult result) {
340 UMA_HISTOGRAM_ENUMERATION( 364 UMA_HISTOGRAM_ENUMERATION(
341 "OfflinePages.DeletePageResult", 365 "OfflinePages.DeletePageResult",
342 static_cast<int>(result), 366 static_cast<int>(result),
343 static_cast<int>(DeletePageResult::RESULT_COUNT)); 367 static_cast<int>(DeletePageResult::RESULT_COUNT));
344 callback.Run(result); 368 callback.Run(result);
345 } 369 }
346 370
347 } // namespace offline_pages 371 } // namespace offline_pages
OLDNEW
« 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