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

Unified Diff: components/offline_pages/offline_page_test_store.cc

Issue 2497703002: [Offline pages] Resetting offline page metadata store to handle LOAD/INIT failures (Closed)
Patch Set: Fixing newly added test Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/offline_pages/offline_page_test_store.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/offline_pages/offline_page_test_store.cc
diff --git a/components/offline_pages/offline_page_test_store.cc b/components/offline_pages/offline_page_test_store.cc
index 70b91c4e0116306876f4ef4a704cb2a076fa1d14..59f4906c2d8f13d9ad07891e2b9e744fdfb06dbe 100644
--- a/components/offline_pages/offline_page_test_store.cc
+++ b/components/offline_pages/offline_page_test_store.cc
@@ -14,7 +14,9 @@ namespace offline_pages {
OfflinePageTestStore::OfflinePageTestStore(
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
- : task_runner_(task_runner), scenario_(TestScenario::SUCCESSFUL) {}
+ : task_runner_(task_runner),
+ scenario_(TestScenario::SUCCESSFUL),
+ store_state_(StoreState::NOT_LOADED) {}
OfflinePageTestStore::OfflinePageTestStore(
const OfflinePageTestStore& other_store)
@@ -24,27 +26,32 @@ OfflinePageTestStore::OfflinePageTestStore(
OfflinePageTestStore::~OfflinePageTestStore() {}
-void OfflinePageTestStore::GetOfflinePages(const LoadCallback& callback) {
- OfflinePageMetadataStore::LoadStatus load_status;
- if (scenario_ == TestScenario::LOAD_FAILED) {
- load_status = OfflinePageMetadataStore::STORE_LOAD_FAILED;
+void OfflinePageTestStore::Initialize(const InitializeCallback& callback) {
+ if (scenario_ == TestScenario::LOAD_FAILED_RESET_FAILED ||
+ scenario_ == TestScenario::LOAD_FAILED_RESET_SUCCESS) {
+ store_state_ = StoreState::FAILED_LOADING;
offline_pages_.clear();
} else {
- load_status = OfflinePageMetadataStore::LOAD_SUCCEEDED;
+ store_state_ = StoreState::LOADED;
}
- task_runner_->PostTask(FROM_HERE,
- base::Bind(callback, load_status, GetAllPages()));
+ task_runner_->PostTask(
+ FROM_HERE, base::Bind(callback, store_state_ == StoreState::LOADED));
+}
+
+void OfflinePageTestStore::GetOfflinePages(const LoadCallback& callback) {
+ task_runner_->PostTask(FROM_HERE, base::Bind(callback, GetAllPages()));
}
void OfflinePageTestStore::AddOfflinePage(const OfflinePageItem& offline_page,
const AddCallback& callback) {
// TODO(fgorski): Add and cover scenario with existing item.
ItemActionStatus result;
- if (scenario_ == TestScenario::SUCCESSFUL) {
+ if (store_state_ == StoreState::LOADED &&
+ scenario_ != TestScenario::WRITE_FAILED) {
offline_pages_[offline_page.offline_id] = offline_page;
last_saved_page_ = offline_page;
result = ItemActionStatus::SUCCESS;
- } else if (scenario_ == TestScenario::WRITE_FAILED) {
+ } else {
result = ItemActionStatus::STORE_ERROR;
}
if (!callback.is_null())
@@ -112,12 +119,22 @@ void OfflinePageTestStore::RemoveOfflinePages(
}
void OfflinePageTestStore::Reset(const ResetCallback& callback) {
+ if (scenario_ == TestScenario::LOAD_FAILED_RESET_FAILED) {
+ store_state_ = StoreState::FAILED_RESET;
+ } else {
+ store_state_ = StoreState::NOT_LOADED;
+ // Scenario is flipped to successful here, as the reset succeeds.
+ if (scenario_ == TestScenario::LOAD_FAILED_RESET_SUCCESS)
+ scenario_ = TestScenario::SUCCESSFUL;
+ }
+
offline_pages_.clear();
- task_runner_->PostTask(FROM_HERE, base::Bind(callback, true));
+ task_runner_->PostTask(
+ FROM_HERE, base::Bind(callback, store_state_ == StoreState::NOT_LOADED));
}
StoreState OfflinePageTestStore::state() const {
- return StoreState::LOADED;
+ return store_state_;
}
void OfflinePageTestStore::UpdateLastAccessTime(
« no previous file with comments | « components/offline_pages/offline_page_test_store.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698