summaryrefslogtreecommitdiffstats
path: root/components/offline_pages
diff options
context:
space:
mode:
authorfgorski <fgorski@chromium.org>2015-11-20 16:19:41 -0800
committerCommit bot <commit-bot@chromium.org>2015-11-21 00:20:50 +0000
commiteb74216daa0f0606140d53cf36494b51b2b2dc8f (patch)
tree8d95510b1f37d03cbc99402a11e7b5ecb65e5bd2 /components/offline_pages
parent910bd999c1fed7f0211b636184072f35a506023f (diff)
downloadchromium_src-eb74216daa0f0606140d53cf36494b51b2b2dc8f.zip
chromium_src-eb74216daa0f0606140d53cf36494b51b2b2dc8f.tar.gz
chromium_src-eb74216daa0f0606140d53cf36494b51b2b2dc8f.tar.bz2
[Offline pages] Properly informing observers when offline page is deleted
Currently the OfflinePageModel::Observer::OfflinePageDeleted is only issued when a page is marked for deletion (for bookmark delete undo). This page also issues it when the offline copy is directly removed and takes care that it not duplicated when a page has been previously marked for deletion. BUG=559100 R=jianli@chromium.org Review URL: https://codereview.chromium.org/1460413002 Cr-Commit-Position: refs/heads/master@{#360959}
Diffstat (limited to 'components/offline_pages')
-rw-r--r--components/offline_pages/offline_page_model.cc6
-rw-r--r--components/offline_pages/offline_page_model_unittest.cc2
2 files changed, 8 insertions, 0 deletions
diff --git a/components/offline_pages/offline_page_model.cc b/components/offline_pages/offline_page_model.cc
index 7b0922e..3ea2d6e 100644
--- a/components/offline_pages/offline_page_model.cc
+++ b/components/offline_pages/offline_page_model.cc
@@ -569,6 +569,12 @@ void OfflinePageModel::OnRemoveOfflinePagesDone(
"OfflinePages.DeletePage.PageSize", iter->second.file_size / 1024);
UMA_HISTOGRAM_COUNTS(
"OfflinePages.DeletePage.AccessCount", iter->second.access_count);
+ // If the page is not marked for deletion at this point, the model has not
+ // yet informed the observer that the offline page is deleted.
+ if (!iter->second.IsMarkedForDeletion()) {
+ FOR_EACH_OBSERVER(Observer, observers_,
+ OfflinePageDeleted(iter->second.bookmark_id));
+ }
offline_pages_.erase(iter);
}
if (bookmark_ids.size() > 1) {
diff --git a/components/offline_pages/offline_page_model_unittest.cc b/components/offline_pages/offline_page_model_unittest.cc
index 2da4fd0..b6b6a8a 100644
--- a/components/offline_pages/offline_page_model_unittest.cc
+++ b/components/offline_pages/offline_page_model_unittest.cc
@@ -671,6 +671,7 @@ TEST_F(OfflinePageModelTest, DeletePageSuccessful) {
PumpLoop();
+ EXPECT_EQ(last_deleted_bookmark_id(), kTestPageBookmarkId1);
EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result());
ASSERT_EQ(1u, store->offline_pages().size());
EXPECT_EQ(kTestUrl2, store->offline_pages()[0].url);
@@ -684,6 +685,7 @@ TEST_F(OfflinePageModelTest, DeletePageSuccessful) {
PumpLoop();
+ EXPECT_EQ(last_deleted_bookmark_id(), kTestPageBookmarkId2);
EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result());
EXPECT_EQ(0u, store->offline_pages().size());
}