diff options
author | fgorski <fgorski@chromium.org> | 2015-11-20 16:19:41 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-11-21 00:20:50 +0000 |
commit | eb74216daa0f0606140d53cf36494b51b2b2dc8f (patch) | |
tree | 8d95510b1f37d03cbc99402a11e7b5ecb65e5bd2 /components/offline_pages | |
parent | 910bd999c1fed7f0211b636184072f35a506023f (diff) | |
download | chromium_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.cc | 6 | ||||
-rw-r--r-- | components/offline_pages/offline_page_model_unittest.cc | 2 |
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()); } |