| Index: components/offline_pages/offline_page_metadata_store_impl_unittest.cc
|
| diff --git a/components/offline_pages/offline_page_metadata_store_impl_unittest.cc b/components/offline_pages/offline_page_metadata_store_impl_unittest.cc
|
| index 8ea31cf7a38ea69cbff9f03bd957490de261a36a..f0f15c49214a9673df3fa8bc2442d994f1245148 100644
|
| --- a/components/offline_pages/offline_page_metadata_store_impl_unittest.cc
|
| +++ b/components/offline_pages/offline_page_metadata_store_impl_unittest.cc
|
| @@ -41,7 +41,7 @@ class OfflinePageMetadataStoreImplTest : public testing::Test {
|
| scoped_ptr<OfflinePageMetadataStoreImpl> BuildStore();
|
| void PumpLoop();
|
|
|
| - void LoadCallback(bool success,
|
| + void LoadCallback(OfflinePageMetadataStore::LoadStatus load_status,
|
| const std::vector<OfflinePageItem>& offline_pages);
|
| void UpdateCallback(CalledCallback called_callback, bool success);
|
|
|
| @@ -66,26 +66,27 @@ OfflinePageMetadataStoreImplTest::~OfflinePageMetadataStoreImplTest() {
|
| }
|
|
|
| void OfflinePageMetadataStoreImplTest::PumpLoop() {
|
| - run_loop_.reset(new base::RunLoop());
|
| - run_loop_->Run();
|
| + base::RunLoop().RunUntilIdle();
|
| }
|
|
|
| scoped_ptr<OfflinePageMetadataStoreImpl>
|
| OfflinePageMetadataStoreImplTest::BuildStore() {
|
| - scoped_ptr<ProtoDatabaseImpl<offline_pages::OfflinePageEntry>> db(
|
| - new ProtoDatabaseImpl<offline_pages::OfflinePageEntry>(
|
| - message_loop_.task_runner()));
|
| - return scoped_ptr<OfflinePageMetadataStoreImpl>(
|
| - new OfflinePageMetadataStoreImpl(db.Pass(), temp_directory_.path()));
|
| + scoped_ptr<OfflinePageMetadataStoreImpl> store(
|
| + new OfflinePageMetadataStoreImpl(message_loop_.task_runner(),
|
| + temp_directory_.path()));
|
| + store->Load(base::Bind(&OfflinePageMetadataStoreImplTest::LoadCallback,
|
| + base::Unretained(this)));
|
| + PumpLoop();
|
| + return store.Pass();
|
| }
|
|
|
| void OfflinePageMetadataStoreImplTest::LoadCallback(
|
| - bool status,
|
| + OfflinePageMetadataStore::LoadStatus load_status,
|
| const std::vector<OfflinePageItem>& offline_pages) {
|
| last_called_callback_ = LOAD;
|
| - last_status_ = status ? STATUS_TRUE : STATUS_FALSE;
|
| + last_status_ = load_status == OfflinePageMetadataStore::LOAD_SUCCEEDED ?
|
| + STATUS_TRUE : STATUS_FALSE;
|
| offline_pages_.swap(const_cast<std::vector<OfflinePageItem>&>(offline_pages));
|
| - run_loop_->Quit();
|
| }
|
|
|
| void OfflinePageMetadataStoreImplTest::UpdateCallback(
|
| @@ -93,7 +94,6 @@ void OfflinePageMetadataStoreImplTest::UpdateCallback(
|
| bool status) {
|
| last_called_callback_ = called_callback;
|
| last_status_ = status ? STATUS_TRUE : STATUS_FALSE;
|
| - run_loop_->Quit();
|
| }
|
|
|
| void OfflinePageMetadataStoreImplTest::ClearResults() {
|
| @@ -106,18 +106,14 @@ void OfflinePageMetadataStoreImplTest::ClearResults() {
|
| // it.
|
| TEST_F(OfflinePageMetadataStoreImplTest, LoadEmptyStore) {
|
| scoped_ptr<OfflinePageMetadataStoreImpl> store(BuildStore());
|
| - store->Load(base::Bind(&OfflinePageMetadataStoreImplTest::LoadCallback,
|
| - base::Unretained(this)));
|
| - PumpLoop();
|
| -
|
| EXPECT_EQ(LOAD, last_called_callback_);
|
| EXPECT_EQ(STATUS_TRUE, last_status_);
|
| EXPECT_EQ(0U, offline_pages_.size());
|
| }
|
|
|
| -// Adds metadata of an offline page into a store and then loads from the
|
| -// store to make sure the metadata is preserved.
|
| -TEST_F(OfflinePageMetadataStoreImplTest, AddOfflinePageThenLoad) {
|
| +// Adds metadata of an offline page into a store and then opens the store
|
| +// again to make sure that stored metadata survives store restarts.
|
| +TEST_F(OfflinePageMetadataStoreImplTest, AddOfflinePage) {
|
| scoped_ptr<OfflinePageMetadataStoreImpl> store(BuildStore());
|
|
|
| OfflinePageItem offline_page(GURL(kTestURL), kTestBookmarkId,
|
| @@ -131,8 +127,10 @@ TEST_F(OfflinePageMetadataStoreImplTest, AddOfflinePageThenLoad) {
|
| EXPECT_EQ(STATUS_TRUE, last_status_);
|
|
|
| ClearResults();
|
| - store->Load(base::Bind(&OfflinePageMetadataStoreImplTest::LoadCallback,
|
| - base::Unretained(this)));
|
| +
|
| + // Close the store first to ensure file lock is removed.
|
| + store.reset();
|
| + store = BuildStore().Pass();
|
| PumpLoop();
|
|
|
| EXPECT_EQ(LOAD, last_called_callback_);
|
| @@ -145,13 +143,15 @@ TEST_F(OfflinePageMetadataStoreImplTest, AddOfflinePageThenLoad) {
|
| EXPECT_EQ(offline_page.file_size, offline_pages_[0].file_size);
|
| EXPECT_EQ(offline_page.creation_time, offline_pages_[0].creation_time);
|
| EXPECT_EQ(offline_page.last_access_time, offline_pages_[0].last_access_time);
|
| + EXPECT_EQ(offline_page.access_count, offline_pages_[0].access_count);
|
| }
|
|
|
| -// Adds metadata of an offline page into a store and then opens the store
|
| -// again to make sure that stored metadata survives store restarts.
|
| -TEST_F(OfflinePageMetadataStoreImplTest, AddOfflinePageRestartLoad) {
|
| +// Tests removing offline page metadata from the store, for which it first adds
|
| +// metadata of an offline page.
|
| +TEST_F(OfflinePageMetadataStoreImplTest, RemoveOfflinePage) {
|
| scoped_ptr<OfflinePageMetadataStoreImpl> store(BuildStore());
|
|
|
| + // Add an offline page.
|
| OfflinePageItem offline_page(GURL(kTestURL), kTestBookmarkId,
|
| base::FilePath(kFilePath), kFileSize);
|
| store->AddOrUpdateOfflinePage(
|
| @@ -162,82 +162,40 @@ TEST_F(OfflinePageMetadataStoreImplTest, AddOfflinePageRestartLoad) {
|
| EXPECT_EQ(ADD, last_called_callback_);
|
| EXPECT_EQ(STATUS_TRUE, last_status_);
|
|
|
| - // Reset the store first to ensure file lock is removed.
|
| - store.reset();
|
| - store = BuildStore().Pass();
|
| ClearResults();
|
| +
|
| + // Load the store.
|
| store->Load(base::Bind(&OfflinePageMetadataStoreImplTest::LoadCallback,
|
| base::Unretained(this)));
|
| PumpLoop();
|
| -
|
| EXPECT_EQ(LOAD, last_called_callback_);
|
| - EXPECT_EQ(STATUS_TRUE, last_status_);
|
| EXPECT_EQ(1U, offline_pages_.size());
|
| - EXPECT_EQ(offline_page.url, offline_pages_[0].url);
|
| - EXPECT_EQ(offline_page.bookmark_id, offline_pages_[0].bookmark_id);
|
| - EXPECT_EQ(offline_page.version, offline_pages_[0].version);
|
| - EXPECT_EQ(offline_page.file_path, offline_pages_[0].file_path);
|
| - EXPECT_EQ(offline_page.file_size, offline_pages_[0].file_size);
|
| - EXPECT_EQ(offline_page.creation_time, offline_pages_[0].creation_time);
|
| - EXPECT_EQ(offline_page.last_access_time, offline_pages_[0].last_access_time);
|
| - EXPECT_EQ(offline_page.access_count, offline_pages_[0].access_count);
|
| -}
|
| -
|
| -// Tests removing offline page metadata from the store, for which it first adds
|
| -// metadata of an offline page.
|
| -TEST_F(OfflinePageMetadataStoreImplTest, RemoveOfflinePage) {
|
| - scoped_ptr<OfflinePageMetadataStoreImpl> store(BuildStore());
|
|
|
| - OfflinePageItem offline_page(GURL(kTestURL), kTestBookmarkId,
|
| - base::FilePath(kFilePath), kFileSize);
|
| - store->AddOrUpdateOfflinePage(
|
| - offline_page,
|
| - base::Bind(&OfflinePageMetadataStoreImplTest::UpdateCallback,
|
| - base::Unretained(this), ADD));
|
| - store->Load(base::Bind(&OfflinePageMetadataStoreImplTest::LoadCallback,
|
| - base::Unretained(this)));
|
| + // Remove the offline page.
|
| std::vector<int64> ids_to_remove;
|
| ids_to_remove.push_back(offline_page.bookmark_id);
|
| store->RemoveOfflinePages(
|
| ids_to_remove,
|
| base::Bind(&OfflinePageMetadataStoreImplTest::UpdateCallback,
|
| base::Unretained(this), REMOVE));
|
| - store->Load(base::Bind(&OfflinePageMetadataStoreImplTest::LoadCallback,
|
| - base::Unretained(this)));
|
| - store.reset();
|
| - store = BuildStore().Pass();
|
| - store->Load(base::Bind(&OfflinePageMetadataStoreImplTest::LoadCallback,
|
| - base::Unretained(this)));
|
| - // Add offline page is exectued:
|
| - PumpLoop();
|
| - EXPECT_EQ(ADD, last_called_callback_);
|
| - EXPECT_EQ(STATUS_TRUE, last_status_);
|
| -
|
| - // Load is exectued:
|
| - ClearResults();
|
| - PumpLoop();
|
| -
|
| - EXPECT_EQ(LOAD, last_called_callback_);
|
| - EXPECT_EQ(STATUS_TRUE, last_status_);
|
| - EXPECT_EQ(1U, offline_pages_.size());
|
| -
|
| - // Remove offline page is exectued:
|
| - ClearResults();
|
| PumpLoop();
|
| EXPECT_EQ(REMOVE, last_called_callback_);
|
| EXPECT_EQ(STATUS_TRUE, last_status_);
|
|
|
| - // Load is exectued:
|
| ClearResults();
|
| - PumpLoop();
|
|
|
| + // Load the store.
|
| + store->Load(base::Bind(&OfflinePageMetadataStoreImplTest::LoadCallback,
|
| + base::Unretained(this)));
|
| + PumpLoop();
|
| EXPECT_EQ(LOAD, last_called_callback_);
|
| - EXPECT_EQ(STATUS_TRUE, last_status_);
|
| EXPECT_EQ(0U, offline_pages_.size());
|
|
|
| - // Checking the value after reseting the store.
|
| ClearResults();
|
| - PumpLoop();
|
| +
|
| + // Close and reload the store.
|
| + store.reset();
|
| + store = BuildStore().Pass();
|
| EXPECT_EQ(LOAD, last_called_callback_);
|
| EXPECT_EQ(STATUS_TRUE, last_status_);
|
| EXPECT_EQ(0U, offline_pages_.size());
|
| @@ -247,6 +205,7 @@ TEST_F(OfflinePageMetadataStoreImplTest, RemoveOfflinePage) {
|
| TEST_F(OfflinePageMetadataStoreImplTest, AddRemoveMultipleOfflinePages) {
|
| scoped_ptr<OfflinePageMetadataStoreImpl> store(BuildStore());
|
|
|
| + // Add an offline page.
|
| OfflinePageItem offline_page_1(GURL(kTestURL), kTestBookmarkId,
|
| base::FilePath(kFilePath), kFileSize);
|
| base::FilePath file_path_2 =
|
| @@ -262,6 +221,8 @@ TEST_F(OfflinePageMetadataStoreImplTest, AddRemoveMultipleOfflinePages) {
|
| EXPECT_EQ(STATUS_TRUE, last_status_);
|
|
|
| ClearResults();
|
| +
|
| + // Add anther offline page.
|
| store->AddOrUpdateOfflinePage(
|
| offline_page_2,
|
| base::Bind(&OfflinePageMetadataStoreImplTest::UpdateCallback,
|
| @@ -271,6 +232,8 @@ TEST_F(OfflinePageMetadataStoreImplTest, AddRemoveMultipleOfflinePages) {
|
| EXPECT_EQ(STATUS_TRUE, last_status_);
|
|
|
| ClearResults();
|
| +
|
| + // Load the store.
|
| store->Load(base::Bind(&OfflinePageMetadataStoreImplTest::LoadCallback,
|
| base::Unretained(this)));
|
| PumpLoop();
|
| @@ -279,6 +242,7 @@ TEST_F(OfflinePageMetadataStoreImplTest, AddRemoveMultipleOfflinePages) {
|
| EXPECT_EQ(STATUS_TRUE, last_status_);
|
| EXPECT_EQ(2U, offline_pages_.size());
|
|
|
| + // Remove the offline page.
|
| std::vector<int64> ids_to_remove;
|
| ids_to_remove.push_back(offline_page_1.bookmark_id);
|
| store->RemoveOfflinePages(
|
| @@ -290,6 +254,8 @@ TEST_F(OfflinePageMetadataStoreImplTest, AddRemoveMultipleOfflinePages) {
|
| EXPECT_EQ(STATUS_TRUE, last_status_);
|
|
|
| ClearResults();
|
| +
|
| + // Close and reload the store.
|
| store.reset();
|
| store = BuildStore().Pass();
|
| store->Load(base::Bind(&OfflinePageMetadataStoreImplTest::LoadCallback,
|
|
|