 Chromium Code Reviews
 Chromium Code Reviews Issue 1504243002:
  [Offline pages] Refactoring helper classes out from offline_page_model_unittest.cc  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 1504243002:
  [Offline pages] Refactoring helper classes out from offline_page_model_unittest.cc  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| 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 |