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

Side by Side Diff: components/offline_pages/offline_page_model_unittest.cc

Issue 1511483004: [Offline pages] Remove references to MessageLoop from components/offline_pages (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@test-refactoring
Patch Set: Fixing missing dependency Created 5 years 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 unified diff | Download patch
« no previous file with comments | « components/offline_pages/offline_page_metadata_store_impl_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/offline_pages/offline_page_model.h" 5 #include "components/offline_pages/offline_page_model.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
11 #include "base/files/scoped_temp_dir.h" 11 #include "base/files/scoped_temp_dir.h"
12 #include "base/message_loop/message_loop.h"
13 #include "base/run_loop.h" 12 #include "base/run_loop.h"
14 #include "base/single_thread_task_runner.h" 13 #include "base/single_thread_task_runner.h"
14 #include "base/test/test_mock_time_task_runner.h"
15 #include "base/thread_task_runner_handle.h"
15 #include "base/time/time.h" 16 #include "base/time/time.h"
16 #include "components/bookmarks/browser/bookmark_node.h" 17 #include "components/bookmarks/browser/bookmark_node.h"
17 #include "components/offline_pages/offline_page_item.h" 18 #include "components/offline_pages/offline_page_item.h"
18 #include "components/offline_pages/offline_page_test_archiver.h" 19 #include "components/offline_pages/offline_page_test_archiver.h"
19 #include "components/offline_pages/offline_page_test_store.h" 20 #include "components/offline_pages/offline_page_test_store.h"
20 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
21 #include "url/gurl.h" 22 #include "url/gurl.h"
22 23
23 using SavePageResult = offline_pages::OfflinePageModel::SavePageResult; 24 using SavePageResult = offline_pages::OfflinePageModel::SavePageResult;
24 using DeletePageResult = offline_pages::OfflinePageModel::DeletePageResult; 25 using DeletePageResult = offline_pages::OfflinePageModel::DeletePageResult;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
67 68
68 scoped_ptr<OfflinePageTestArchiver> BuildArchiver( 69 scoped_ptr<OfflinePageTestArchiver> BuildArchiver(
69 const GURL& url, 70 const GURL& url,
70 OfflinePageArchiver::ArchiverResult result); 71 OfflinePageArchiver::ArchiverResult result);
71 scoped_ptr<OfflinePageMetadataStore> BuildStore(); 72 scoped_ptr<OfflinePageMetadataStore> BuildStore();
72 scoped_ptr<OfflinePageModel> BuildModel( 73 scoped_ptr<OfflinePageModel> BuildModel(
73 scoped_ptr<OfflinePageMetadataStore> store); 74 scoped_ptr<OfflinePageMetadataStore> store);
74 void ResetModel(); 75 void ResetModel();
75 76
76 // Utility methods. 77 // Utility methods.
78 // Runs until all of the tasks that are not delayed are gone from the task
79 // queue.
77 void PumpLoop(); 80 void PumpLoop();
78 void ResetResults(); 81 void ResetResults();
79 82
80 scoped_refptr<base::SingleThreadTaskRunner> task_runner() {
81 return message_loop_.task_runner();
82 }
83
84 OfflinePageModel* model() { return model_.get(); } 83 OfflinePageModel* model() { return model_.get(); }
85 84
86 OfflinePageTestStore* GetStore(); 85 OfflinePageTestStore* GetStore();
87 86
88 SavePageResult last_save_result() const { 87 SavePageResult last_save_result() const {
89 return last_save_result_; 88 return last_save_result_;
90 } 89 }
91 90
92 DeletePageResult last_delete_result() const { 91 DeletePageResult last_delete_result() const {
93 return last_delete_result_; 92 return last_delete_result_;
94 } 93 }
95 94
96 int64 last_deleted_bookmark_id() const { 95 int64 last_deleted_bookmark_id() const {
97 return last_deleted_bookmark_id_; 96 return last_deleted_bookmark_id_;
98 } 97 }
99 98
100 const base::FilePath& last_archiver_path() { return last_archiver_path_; } 99 const base::FilePath& last_archiver_path() { return last_archiver_path_; }
101 100
102 private: 101 private:
103 base::MessageLoop message_loop_; 102 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_;
103 base::ThreadTaskRunnerHandle task_runner_handle_;
104 base::ScopedTempDir temp_dir_; 104 base::ScopedTempDir temp_dir_;
105 105
106 scoped_ptr<OfflinePageModel> model_; 106 scoped_ptr<OfflinePageModel> model_;
107 SavePageResult last_save_result_; 107 SavePageResult last_save_result_;
108 DeletePageResult last_delete_result_; 108 DeletePageResult last_delete_result_;
109 base::FilePath last_archiver_path_; 109 base::FilePath last_archiver_path_;
110 int64 last_deleted_bookmark_id_; 110 int64 last_deleted_bookmark_id_;
111 }; 111 };
112 112
113 OfflinePageModelTest::OfflinePageModelTest() 113 OfflinePageModelTest::OfflinePageModelTest()
114 : last_save_result_(SavePageResult::CANCELLED), 114 : task_runner_(new base::TestMockTimeTaskRunner),
115 task_runner_handle_(task_runner_),
116 last_save_result_(SavePageResult::CANCELLED),
115 last_delete_result_(DeletePageResult::CANCELLED), 117 last_delete_result_(DeletePageResult::CANCELLED),
116 last_deleted_bookmark_id_(-1) { 118 last_deleted_bookmark_id_(-1) {
117 } 119 }
118 120
119 OfflinePageModelTest::~OfflinePageModelTest() { 121 OfflinePageModelTest::~OfflinePageModelTest() {
120 } 122 }
121 123
122 void OfflinePageModelTest::SetUp() { 124 void OfflinePageModelTest::SetUp() {
123 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 125 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
124 model_ = BuildModel(BuildStore().Pass()).Pass(); 126 model_ = BuildModel(BuildStore().Pass()).Pass();
125 model_->AddObserver(this); 127 model_->AddObserver(this);
126 base::RunLoop().RunUntilIdle(); 128 PumpLoop();
127 } 129 }
128 130
129 void OfflinePageModelTest::TearDown() { 131 void OfflinePageModelTest::TearDown() {
130 model_->RemoveObserver(this); 132 model_->RemoveObserver(this);
131 base::RunLoop().RunUntilIdle(); 133 PumpLoop();
132 } 134 }
133 135
134 void OfflinePageModelTest::OfflinePageModelLoaded(OfflinePageModel* model) { 136 void OfflinePageModelTest::OfflinePageModelLoaded(OfflinePageModel* model) {
135 ASSERT_EQ(model_.get(), model); 137 ASSERT_EQ(model_.get(), model);
136 } 138 }
137 139
138 void OfflinePageModelTest::OfflinePageModelChanged(OfflinePageModel* model) { 140 void OfflinePageModelTest::OfflinePageModelChanged(OfflinePageModel* model) {
139 ASSERT_EQ(model_.get(), model); 141 ASSERT_EQ(model_.get(), model);
140 } 142 }
141 143
142 void OfflinePageModelTest::OfflinePageDeleted(int64 bookmark_id) { 144 void OfflinePageModelTest::OfflinePageDeleted(int64 bookmark_id) {
143 last_deleted_bookmark_id_ = bookmark_id; 145 last_deleted_bookmark_id_ = bookmark_id;
144 } 146 }
145 147
146 void OfflinePageModelTest::SetLastPathCreatedByArchiver( 148 void OfflinePageModelTest::SetLastPathCreatedByArchiver(
147 const base::FilePath& file_path) { 149 const base::FilePath& file_path) {
148 last_archiver_path_ = file_path; 150 last_archiver_path_ = file_path;
149 } 151 }
150 152
151 void OfflinePageModelTest::OnSavePageDone( 153 void OfflinePageModelTest::OnSavePageDone(
152 OfflinePageModel::SavePageResult result) { 154 OfflinePageModel::SavePageResult result) {
153 last_save_result_ = result; 155 last_save_result_ = result;
154 } 156 }
155 157
156 void OfflinePageModelTest::OnDeletePageDone(DeletePageResult result) { 158 void OfflinePageModelTest::OnDeletePageDone(DeletePageResult result) {
157 last_delete_result_ = result; 159 last_delete_result_ = result;
158 } 160 }
159 161
160 void OfflinePageModelTest::OnClearAllDone() { 162 void OfflinePageModelTest::OnClearAllDone() {
161 base::RunLoop().RunUntilIdle(); 163 PumpLoop();
162 } 164 }
163 165
164 void OfflinePageModelTest::OnStoreUpdateDone(bool /* success - ignored */) { 166 void OfflinePageModelTest::OnStoreUpdateDone(bool /* success - ignored */) {
165 } 167 }
166 168
167 scoped_ptr<OfflinePageTestArchiver> OfflinePageModelTest::BuildArchiver( 169 scoped_ptr<OfflinePageTestArchiver> OfflinePageModelTest::BuildArchiver(
168 const GURL& url, 170 const GURL& url,
169 OfflinePageArchiver::ArchiverResult result) { 171 OfflinePageArchiver::ArchiverResult result) {
170 return scoped_ptr<OfflinePageTestArchiver>(new OfflinePageTestArchiver( 172 return scoped_ptr<OfflinePageTestArchiver>(new OfflinePageTestArchiver(
171 this, url, result, kTestFileSize, task_runner())); 173 this, url, result, kTestFileSize, base::ThreadTaskRunnerHandle::Get()));
172 } 174 }
173 175
174 scoped_ptr<OfflinePageMetadataStore> OfflinePageModelTest::BuildStore() { 176 scoped_ptr<OfflinePageMetadataStore> OfflinePageModelTest::BuildStore() {
175 return scoped_ptr<OfflinePageMetadataStore>( 177 return scoped_ptr<OfflinePageMetadataStore>(
176 new OfflinePageTestStore(task_runner())); 178 new OfflinePageTestStore(base::ThreadTaskRunnerHandle::Get()));
177 } 179 }
178 180
179 scoped_ptr<OfflinePageModel> OfflinePageModelTest::BuildModel( 181 scoped_ptr<OfflinePageModel> OfflinePageModelTest::BuildModel(
180 scoped_ptr<OfflinePageMetadataStore> store) { 182 scoped_ptr<OfflinePageMetadataStore> store) {
181 return scoped_ptr<OfflinePageModel>( 183 return scoped_ptr<OfflinePageModel>(new OfflinePageModel(
182 new OfflinePageModel(store.Pass(), temp_dir_.path(), task_runner())); 184 store.Pass(), temp_dir_.path(), base::ThreadTaskRunnerHandle::Get()));
183 } 185 }
184 186
185 void OfflinePageModelTest::ResetModel() { 187 void OfflinePageModelTest::ResetModel() {
186 model_->RemoveObserver(this); 188 model_->RemoveObserver(this);
187 OfflinePageTestStore* old_store = GetStore(); 189 OfflinePageTestStore* old_store = GetStore();
188 scoped_ptr<OfflinePageMetadataStore> new_store( 190 scoped_ptr<OfflinePageMetadataStore> new_store(
189 new OfflinePageTestStore(*old_store)); 191 new OfflinePageTestStore(*old_store));
190 model_ = BuildModel(new_store.Pass()).Pass(); 192 model_ = BuildModel(new_store.Pass()).Pass();
191 model_->AddObserver(this); 193 model_->AddObserver(this);
192 PumpLoop(); 194 PumpLoop();
193 } 195 }
194 196
195 void OfflinePageModelTest::PumpLoop() { 197 void OfflinePageModelTest::PumpLoop() {
196 base::RunLoop().RunUntilIdle(); 198 task_runner_->RunUntilIdle();
197 } 199 }
198 200
199 void OfflinePageModelTest::ResetResults() { 201 void OfflinePageModelTest::ResetResults() {
200 last_save_result_ = SavePageResult::CANCELLED; 202 last_save_result_ = SavePageResult::CANCELLED;
201 last_delete_result_ = DeletePageResult::CANCELLED; 203 last_delete_result_ = DeletePageResult::CANCELLED;
202 last_archiver_path_.clear(); 204 last_archiver_path_.clear();
203 } 205 }
204 206
205 OfflinePageTestStore* OfflinePageModelTest::GetStore() { 207 OfflinePageTestStore* OfflinePageModelTest::GetStore() {
206 return static_cast<OfflinePageTestStore*>(model()->GetStoreForTesting()); 208 return static_cast<OfflinePageTestStore*>(model()->GetStoreForTesting());
(...skipping 12 matching lines...) Expand all
219 EXPECT_TRUE(model()->HasOfflinePages()); 221 EXPECT_TRUE(model()->HasOfflinePages());
220 222
221 OfflinePageTestStore* store = GetStore(); 223 OfflinePageTestStore* store = GetStore();
222 EXPECT_EQ(kTestUrl, store->last_saved_page().url); 224 EXPECT_EQ(kTestUrl, store->last_saved_page().url);
223 EXPECT_EQ(kTestPageBookmarkId1, store->last_saved_page().bookmark_id); 225 EXPECT_EQ(kTestPageBookmarkId1, store->last_saved_page().bookmark_id);
224 // Save last_archiver_path since it will be referred to later. 226 // Save last_archiver_path since it will be referred to later.
225 base::FilePath archiver_path = last_archiver_path(); 227 base::FilePath archiver_path = last_archiver_path();
226 EXPECT_EQ(archiver_path, store->last_saved_page().file_path); 228 EXPECT_EQ(archiver_path, store->last_saved_page().file_path);
227 EXPECT_EQ(kTestFileSize, store->last_saved_page().file_size); 229 EXPECT_EQ(kTestFileSize, store->last_saved_page().file_size);
228 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result()); 230 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result());
229
230 ResetResults(); 231 ResetResults();
231 232
232 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); 233 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages();
233 234
234 EXPECT_EQ(1UL, offline_pages.size()); 235 EXPECT_EQ(1UL, offline_pages.size());
235 EXPECT_EQ(kTestUrl, offline_pages[0].url); 236 EXPECT_EQ(kTestUrl, offline_pages[0].url);
236 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id); 237 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id);
237 EXPECT_EQ(archiver_path, offline_pages[0].file_path); 238 EXPECT_EQ(archiver_path, offline_pages[0].file_path);
238 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); 239 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size);
239 EXPECT_EQ(0, offline_pages[0].access_count); 240 EXPECT_EQ(0, offline_pages[0].access_count);
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 BuildArchiver(kTestUrl, 395 BuildArchiver(kTestUrl,
395 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED) 396 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)
396 .Pass()); 397 .Pass());
397 model()->SavePage( 398 model()->SavePage(
398 kTestUrl, kTestPageBookmarkId1, archiver.Pass(), 399 kTestUrl, kTestPageBookmarkId1, archiver.Pass(),
399 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); 400 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr()));
400 PumpLoop(); 401 PumpLoop();
401 402
402 // This will increase access_count by one. 403 // This will increase access_count by one.
403 model()->MarkPageAccessed(kTestPageBookmarkId1); 404 model()->MarkPageAccessed(kTestPageBookmarkId1);
404 base::RunLoop().RunUntilIdle(); 405 PumpLoop();
405 406
406 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); 407 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages();
407 408
408 EXPECT_EQ(1UL, offline_pages.size()); 409 EXPECT_EQ(1UL, offline_pages.size());
409 EXPECT_EQ(kTestUrl, offline_pages[0].url); 410 EXPECT_EQ(kTestUrl, offline_pages[0].url);
410 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id); 411 EXPECT_EQ(kTestPageBookmarkId1, offline_pages[0].bookmark_id);
411 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); 412 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size);
412 EXPECT_EQ(1, offline_pages[0].access_count); 413 EXPECT_EQ(1, offline_pages[0].access_count);
413 } 414 }
414 415
(...skipping 19 matching lines...) Expand all
434 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); 435 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages();
435 EXPECT_EQ(0UL, offline_pages.size()); 436 EXPECT_EQ(0UL, offline_pages.size());
436 437
437 EXPECT_FALSE(model()->HasOfflinePages()); 438 EXPECT_FALSE(model()->HasOfflinePages());
438 EXPECT_EQ(nullptr, model()->GetPageByOnlineURL(kTestUrl)); 439 EXPECT_EQ(nullptr, model()->GetPageByOnlineURL(kTestUrl));
439 EXPECT_EQ(nullptr, model()->GetPageByBookmarkId(kTestPageBookmarkId1)); 440 EXPECT_EQ(nullptr, model()->GetPageByBookmarkId(kTestPageBookmarkId1));
440 EXPECT_EQ(nullptr, model()->GetPageByOfflineURL(offline_url)); 441 EXPECT_EQ(nullptr, model()->GetPageByOfflineURL(offline_url));
441 442
442 // Undo the deletion. 443 // Undo the deletion.
443 model()->UndoPageDeletion(kTestPageBookmarkId1); 444 model()->UndoPageDeletion(kTestPageBookmarkId1);
444 base::RunLoop().RunUntilIdle(); 445 PumpLoop();
445 446
446 // GetAllPages will now return the restored page. 447 // GetAllPages will now return the restored page.
447 const std::vector<OfflinePageItem>& offline_pages_after_undo = 448 const std::vector<OfflinePageItem>& offline_pages_after_undo =
448 model()->GetAllPages(); 449 model()->GetAllPages();
449 EXPECT_EQ(1UL, offline_pages_after_undo.size()); 450 EXPECT_EQ(1UL, offline_pages_after_undo.size());
450 } 451 }
451 452
452 TEST_F(OfflinePageModelTest, GetAllPagesStoreEmpty) { 453 TEST_F(OfflinePageModelTest, GetAllPagesStoreEmpty) {
453 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages(); 454 const std::vector<OfflinePageItem>& offline_pages = model()->GetAllPages();
454 455
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
837 838
838 // Chrome should not crash when a bookmark with no offline copy is changed. 839 // Chrome should not crash when a bookmark with no offline copy is changed.
839 // http://crbug.com/560518 840 // http://crbug.com/560518
840 bookmark_node.set_url(kTestUrl); 841 bookmark_node.set_url(kTestUrl);
841 model()->BookmarkNodeChanged(nullptr, &bookmark_node); 842 model()->BookmarkNodeChanged(nullptr, &bookmark_node);
842 PumpLoop(); 843 PumpLoop();
843 EXPECT_EQ(0UL, model()->GetAllPages().size()); 844 EXPECT_EQ(0UL, model()->GetAllPages().size());
844 } 845 }
845 846
846 } // namespace offline_pages 847 } // namespace offline_pages
OLDNEW
« no previous file with comments | « components/offline_pages/offline_page_metadata_store_impl_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698