| 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 | 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |