Chromium Code Reviews| 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 |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..0e4d982bdd316544c13111b8e718a14a5a2d417a |
| --- /dev/null |
| +++ b/components/offline_pages/offline_page_test_store.cc |
| @@ -0,0 +1,83 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "components/offline_pages/offline_page_test_store.h" |
| + |
| +#include "base/bind.h" |
| +#include "base/location.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +namespace offline_pages { |
| + |
| +OfflinePageTestStore::OfflinePageTestStore( |
| + const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) |
| + : task_runner_(task_runner), scenario_(TestScenario::SUCCESSFUL) {} |
| + |
| +OfflinePageTestStore::OfflinePageTestStore( |
| + const OfflinePageTestStore& other_store) |
| + : task_runner_(other_store.task_runner_), |
| + scenario_(other_store.scenario_), |
| + offline_pages_(other_store.offline_pages_) {} |
| + |
| +OfflinePageTestStore::~OfflinePageTestStore() {} |
| + |
| +void OfflinePageTestStore::Load(const LoadCallback& callback) { |
| + OfflinePageMetadataStore::LoadStatus load_status; |
| + if (scenario_ != TestScenario::LOAD_FAILED) { |
|
jianli
2015/12/07 23:19:01
suggest to flip the if test for easier understandi
fgorski
2015/12/08 00:33:56
Done.
|
| + load_status = OfflinePageMetadataStore::LOAD_SUCCEEDED; |
| + } else { |
| + load_status = OfflinePageMetadataStore::STORE_LOAD_FAILED; |
| + offline_pages_.clear(); |
| + } |
| + task_runner_->PostTask(FROM_HERE, |
| + base::Bind(callback, load_status, offline_pages_)); |
| +} |
| + |
| +void OfflinePageTestStore::AddOrUpdateOfflinePage( |
| + const OfflinePageItem& offline_page, |
| + const UpdateCallback& callback) { |
| + last_saved_page_ = offline_page; |
| + bool result = scenario_ != TestScenario::WRITE_FAILED; |
| + if (result) { |
|
jianli
2015/12/07 23:19:01
nit: brackets not needed
fgorski
2015/12/08 00:33:56
Done.
|
| + offline_pages_.push_back(offline_page); |
| + } |
| + task_runner_->PostTask(FROM_HERE, base::Bind(callback, result)); |
| +} |
| + |
| +void OfflinePageTestStore::RemoveOfflinePages( |
| + const std::vector<int64>& bookmark_ids, |
| + const UpdateCallback& callback) { |
| + ASSERT_FALSE(bookmark_ids.empty()); |
| + bool result = false; |
| + if (scenario_ != TestScenario::REMOVE_FAILED) { |
| + for (auto iter = offline_pages_.begin(); iter != offline_pages_.end(); |
| + ++iter) { |
| + if (iter->bookmark_id == bookmark_ids[0]) { |
| + offline_pages_.erase(iter); |
| + result = true; |
| + break; |
| + } |
| + } |
| + } |
| + |
| + task_runner_->PostTask(FROM_HERE, base::Bind(callback, result)); |
| +} |
| + |
| +void OfflinePageTestStore::Reset(const ResetCallback& callback) { |
| + offline_pages_.clear(); |
| + task_runner_->PostTask(FROM_HERE, base::Bind(callback, true)); |
| +} |
| + |
| +void OfflinePageTestStore::UpdateLastAccessTime( |
| + int64 bookmark_id, |
| + const base::Time& last_access_time) { |
| + for (auto& offline_page : offline_pages_) { |
| + if (offline_page.bookmark_id == bookmark_id) { |
| + offline_page.last_access_time = last_access_time; |
| + return; |
| + } |
| + } |
| +} |
| + |
| +} // namespace offline_pages |