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

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

Issue 2011763005: Splits the OfflinePageModel into and interface and and implementation class. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix to take ExpirePages defn out of model i/f as StorageManager defines it currently Created 4 years, 6 months 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
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_impl.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <algorithm> 8 #include <algorithm>
9 #include <utility> 9 #include <utility>
10 10
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/command_line.h" 12 #include "base/command_line.h"
13 #include "base/feature_list.h" 13 #include "base/feature_list.h"
14 #include "base/files/file_util.h" 14 #include "base/files/file_util.h"
15 #include "base/files/scoped_temp_dir.h" 15 #include "base/files/scoped_temp_dir.h"
(...skipping 29 matching lines...) Expand all
45 const ClientId kTestClientId3(kTestClientNamespace, "42"); 45 const ClientId kTestClientId3(kTestClientNamespace, "42");
46 const int64_t kTestFileSize = 876543LL; 46 const int64_t kTestFileSize = 876543LL;
47 47
48 bool URLSpecContains(std::string contains_value, const GURL& url) { 48 bool URLSpecContains(std::string contains_value, const GURL& url) {
49 std::string spec = url.spec(); 49 std::string spec = url.spec();
50 return spec.find(contains_value) != std::string::npos; 50 return spec.find(contains_value) != std::string::npos;
51 } 51 }
52 52
53 } // namespace 53 } // namespace
54 54
55 class OfflinePageModelTest 55 class OfflinePageModelImplTest
56 : public testing::Test, 56 : public testing::Test,
57 public OfflinePageModel::Observer, 57 public OfflinePageModel::Observer,
58 public OfflinePageTestArchiver::Observer, 58 public OfflinePageTestArchiver::Observer,
59 public base::SupportsWeakPtr<OfflinePageModelTest> { 59 public base::SupportsWeakPtr<OfflinePageModelImplTest> {
60 public: 60 public:
61 OfflinePageModelTest(); 61 OfflinePageModelImplTest();
62 ~OfflinePageModelTest() override; 62 ~OfflinePageModelImplTest() override;
63 63
64 void SetUp() override; 64 void SetUp() override;
65 void TearDown() override; 65 void TearDown() override;
66 66
67 // OfflinePageModel::Observer implementation. 67 // OfflinePageModel::Observer implementation.
68 void OfflinePageModelLoaded(OfflinePageModel* model) override; 68 void OfflinePageModelLoaded(OfflinePageModel* model) override;
69 void OfflinePageModelChanged(OfflinePageModel* model) override; 69 void OfflinePageModelChanged(OfflinePageModel* model) override;
70 void OfflinePageDeleted(int64_t offline_id, 70 void OfflinePageDeleted(int64_t offline_id,
71 const ClientId& client_id) override; 71 const ClientId& client_id) override;
72 72
(...skipping 16 matching lines...) Expand all
89 const MultipleOfflinePageItemResult& result); 89 const MultipleOfflinePageItemResult& result);
90 void OnPagesExpired(bool result); 90 void OnPagesExpired(bool result);
91 91
92 // OfflinePageMetadataStore callbacks. 92 // OfflinePageMetadataStore callbacks.
93 void OnStoreUpdateDone(bool /* success */); 93 void OnStoreUpdateDone(bool /* success */);
94 94
95 std::unique_ptr<OfflinePageTestArchiver> BuildArchiver( 95 std::unique_ptr<OfflinePageTestArchiver> BuildArchiver(
96 const GURL& url, 96 const GURL& url,
97 OfflinePageArchiver::ArchiverResult result); 97 OfflinePageArchiver::ArchiverResult result);
98 std::unique_ptr<OfflinePageMetadataStore> BuildStore(); 98 std::unique_ptr<OfflinePageMetadataStore> BuildStore();
99 std::unique_ptr<OfflinePageModel> BuildModel( 99 std::unique_ptr<OfflinePageModelImpl> BuildModel(
100 std::unique_ptr<OfflinePageMetadataStore> store); 100 std::unique_ptr<OfflinePageMetadataStore> store);
101 void ResetModel(); 101 void ResetModel();
102 102
103 // Utility methods. 103 // Utility methods.
104 // Runs until all of the tasks that are not delayed are gone from the task 104 // Runs until all of the tasks that are not delayed are gone from the task
105 // queue. 105 // queue.
106 void PumpLoop(); 106 void PumpLoop();
107 // Fast-forwards virtual time by |delta|, causing tasks with a remaining 107 // Fast-forwards virtual time by |delta|, causing tasks with a remaining
108 // delay less than or equal to |delta| to be executed. 108 // delay less than or equal to |delta| to be executed.
109 void FastForwardBy(base::TimeDelta delta); 109 void FastForwardBy(base::TimeDelta delta);
110 void ResetResults(); 110 void ResetResults();
111 111
112 OfflinePageTestStore* GetStore(); 112 OfflinePageTestStore* GetStore();
113 113
114 MultipleOfflinePageItemResult GetAllPages(); 114 MultipleOfflinePageItemResult GetAllPages();
115 115
116 // Returns the offline ID of the saved page. 116 // Returns the offline ID of the saved page.
117 std::pair<SavePageResult, int64_t> SavePage(const GURL& url, 117 std::pair<SavePageResult, int64_t> SavePage(const GURL& url,
118 ClientId client_id); 118 ClientId client_id);
119 119
120 void SavePageWithArchiverResult(const GURL& url, 120 void SavePageWithArchiverResult(const GURL& url,
121 ClientId client_id, 121 ClientId client_id,
122 OfflinePageArchiver::ArchiverResult result); 122 OfflinePageArchiver::ArchiverResult result);
123 123
124 void DeletePage(int64_t offline_id, 124 void DeletePage(int64_t offline_id, const DeletePageCallback& callback) {
125 const DeletePageCallback& callback) {
126 std::vector<int64_t> offline_ids; 125 std::vector<int64_t> offline_ids;
127 offline_ids.push_back(offline_id); 126 offline_ids.push_back(offline_id);
128 model()->DeletePagesByOfflineId(offline_ids, callback); 127 model()->DeletePagesByOfflineId(offline_ids, callback);
129 } 128 }
130 129
131 bool HasPages(std::string name_space); 130 bool HasPages(std::string name_space);
132 131
133 CheckPagesExistOfflineResult CheckPagesExistOffline(std::set<GURL>); 132 CheckPagesExistOfflineResult CheckPagesExistOffline(std::set<GURL>);
134 133
135 MultipleOfflineIdResult GetOfflineIdsForClientId(const ClientId& client_id); 134 MultipleOfflineIdResult GetOfflineIdsForClientId(const ClientId& client_id);
136 135
137 SingleOfflinePageItemResult GetPageByOfflineId(int64_t offline_id); 136 SingleOfflinePageItemResult GetPageByOfflineId(int64_t offline_id);
138 137
139 base::Optional<OfflinePageItem> GetPagesByOnlineURL(const GURL& offline_url); 138 base::Optional<OfflinePageItem> GetPagesByOnlineURL(const GURL& offline_url);
140 139
141 SingleOfflinePageItemResult GetPageByOfflineURL(const GURL& offline_url); 140 SingleOfflinePageItemResult GetPageByOfflineURL(const GURL& offline_url);
142 141
143 OfflinePageModel* model() { return model_.get(); } 142 OfflinePageModelImpl* model() { return model_.get(); }
144 143
145 int64_t last_save_offline_id() const { return last_save_offline_id_; } 144 int64_t last_save_offline_id() const { return last_save_offline_id_; }
146 145
147 SavePageResult last_save_result() const { 146 SavePageResult last_save_result() const { return last_save_result_; }
148 return last_save_result_;
149 }
150 147
151 DeletePageResult last_delete_result() const { 148 DeletePageResult last_delete_result() const { return last_delete_result_; }
152 return last_delete_result_;
153 }
154 149
155 int64_t last_deleted_offline_id() const { return last_deleted_offline_id_; } 150 int64_t last_deleted_offline_id() const { return last_deleted_offline_id_; }
156 151
157 ClientId last_deleted_client_id() const { return last_deleted_client_id_; } 152 ClientId last_deleted_client_id() const { return last_deleted_client_id_; }
158 153
159 const base::FilePath& last_archiver_path() { return last_archiver_path_; } 154 const base::FilePath& last_archiver_path() { return last_archiver_path_; }
160 155
161 int last_cleared_pages_count() const { return last_cleared_pages_count_; } 156 int last_cleared_pages_count() const { return last_cleared_pages_count_; }
162 157
163 DeletePageResult last_clear_page_result() const { 158 DeletePageResult last_clear_page_result() const {
164 return last_clear_page_result_; 159 return last_clear_page_result_;
165 } 160 }
166 161
167 bool last_expire_page_result() const { return last_expire_page_result_; } 162 bool last_expire_page_result() const { return last_expire_page_result_; }
168 163
169 private: 164 private:
170 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_; 165 scoped_refptr<base::TestMockTimeTaskRunner> task_runner_;
171 base::ThreadTaskRunnerHandle task_runner_handle_; 166 base::ThreadTaskRunnerHandle task_runner_handle_;
172 base::ScopedTempDir temp_dir_; 167 base::ScopedTempDir temp_dir_;
173 168
174 std::unique_ptr<OfflinePageModel> model_; 169 std::unique_ptr<OfflinePageModelImpl> model_;
175 SavePageResult last_save_result_; 170 SavePageResult last_save_result_;
176 int64_t last_save_offline_id_; 171 int64_t last_save_offline_id_;
177 DeletePageResult last_delete_result_; 172 DeletePageResult last_delete_result_;
178 base::FilePath last_archiver_path_; 173 base::FilePath last_archiver_path_;
179 int64_t last_deleted_offline_id_; 174 int64_t last_deleted_offline_id_;
180 ClientId last_deleted_client_id_; 175 ClientId last_deleted_client_id_;
181 bool last_has_pages_result_; 176 bool last_has_pages_result_;
182 CheckPagesExistOfflineResult last_pages_exist_result_; 177 CheckPagesExistOfflineResult last_pages_exist_result_;
183 int last_cleared_pages_count_; 178 int last_cleared_pages_count_;
184 DeletePageResult last_clear_page_result_; 179 DeletePageResult last_clear_page_result_;
185 bool last_expire_page_result_; 180 bool last_expire_page_result_;
186 }; 181 };
187 182
188 OfflinePageModelTest::OfflinePageModelTest() 183 OfflinePageModelImplTest::OfflinePageModelImplTest()
189 : task_runner_(new base::TestMockTimeTaskRunner), 184 : task_runner_(new base::TestMockTimeTaskRunner),
190 task_runner_handle_(task_runner_), 185 task_runner_handle_(task_runner_),
191 last_save_result_(SavePageResult::CANCELLED), 186 last_save_result_(SavePageResult::CANCELLED),
192 last_save_offline_id_(-1), 187 last_save_offline_id_(-1),
193 last_delete_result_(DeletePageResult::CANCELLED), 188 last_delete_result_(DeletePageResult::CANCELLED),
194 last_deleted_offline_id_(-1) {} 189 last_deleted_offline_id_(-1) {}
195 190
196 OfflinePageModelTest::~OfflinePageModelTest() { 191 OfflinePageModelImplTest::~OfflinePageModelImplTest() {}
197 }
198 192
199 void OfflinePageModelTest::SetUp() { 193 void OfflinePageModelImplTest::SetUp() {
200 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 194 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
201 model_ = BuildModel(BuildStore()); 195 model_ = BuildModel(BuildStore());
202 model_->AddObserver(this); 196 model_->AddObserver(this);
203 PumpLoop(); 197 PumpLoop();
204 } 198 }
205 199
206 void OfflinePageModelTest::TearDown() { 200 void OfflinePageModelImplTest::TearDown() {
207 model_->RemoveObserver(this); 201 model_->RemoveObserver(this);
208 model_.reset(); 202 model_.reset();
209 PumpLoop(); 203 PumpLoop();
210 } 204 }
211 205
212 void OfflinePageModelTest::OfflinePageModelLoaded(OfflinePageModel* model) { 206 void OfflinePageModelImplTest::OfflinePageModelLoaded(OfflinePageModel* model) {
213 ASSERT_EQ(model_.get(), model); 207 ASSERT_EQ(model_.get(), model);
214 } 208 }
215 209
216 void OfflinePageModelTest::OfflinePageModelChanged(OfflinePageModel* model) { 210 void OfflinePageModelImplTest::OfflinePageModelChanged(
211 OfflinePageModel* model) {
217 ASSERT_EQ(model_.get(), model); 212 ASSERT_EQ(model_.get(), model);
218 } 213 }
219 214
220 void OfflinePageModelTest::OfflinePageDeleted(int64_t offline_id, 215 void OfflinePageModelImplTest::OfflinePageDeleted(int64_t offline_id,
221 const ClientId& client_id) { 216 const ClientId& client_id) {
222 last_deleted_offline_id_ = offline_id; 217 last_deleted_offline_id_ = offline_id;
223 last_deleted_client_id_ = client_id; 218 last_deleted_client_id_ = client_id;
224 } 219 }
225 220
226 void OfflinePageModelTest::SetLastPathCreatedByArchiver( 221 void OfflinePageModelImplTest::SetLastPathCreatedByArchiver(
227 const base::FilePath& file_path) { 222 const base::FilePath& file_path) {
228 last_archiver_path_ = file_path; 223 last_archiver_path_ = file_path;
229 } 224 }
230 225
231 void OfflinePageModelTest::OnSavePageDone(SavePageResult result, 226 void OfflinePageModelImplTest::OnSavePageDone(SavePageResult result,
232 int64_t offline_id) { 227 int64_t offline_id) {
233 last_save_result_ = result; 228 last_save_result_ = result;
234 last_save_offline_id_ = offline_id; 229 last_save_offline_id_ = offline_id;
235 } 230 }
236 231
237 void OfflinePageModelTest::OnDeletePageDone(DeletePageResult result) { 232 void OfflinePageModelImplTest::OnDeletePageDone(DeletePageResult result) {
238 last_delete_result_ = result; 233 last_delete_result_ = result;
239 } 234 }
240 235
241 void OfflinePageModelTest::OnHasPagesDone(bool result) { 236 void OfflinePageModelImplTest::OnHasPagesDone(bool result) {
242 last_has_pages_result_ = result; 237 last_has_pages_result_ = result;
243 } 238 }
244 239
245 void OfflinePageModelTest::OnCheckPagesExistOfflineDone( 240 void OfflinePageModelImplTest::OnCheckPagesExistOfflineDone(
246 const CheckPagesExistOfflineResult& result) { 241 const CheckPagesExistOfflineResult& result) {
247 last_pages_exist_result_ = result; 242 last_pages_exist_result_ = result;
248 } 243 }
249 244
250 void OfflinePageModelTest::OnClearAllDone() { 245 void OfflinePageModelImplTest::OnClearAllDone() {
251 PumpLoop(); 246 PumpLoop();
252 } 247 }
253 248
254 void OfflinePageModelTest::OnStoreUpdateDone(bool /* success - ignored */) { 249 void OfflinePageModelImplTest::OnStoreUpdateDone(bool /* success - ignored */) {
255 } 250 }
256 251
257 std::unique_ptr<OfflinePageTestArchiver> OfflinePageModelTest::BuildArchiver( 252 std::unique_ptr<OfflinePageTestArchiver>
253 OfflinePageModelImplTest::BuildArchiver(
258 const GURL& url, 254 const GURL& url,
259 OfflinePageArchiver::ArchiverResult result) { 255 OfflinePageArchiver::ArchiverResult result) {
260 return std::unique_ptr<OfflinePageTestArchiver>(new OfflinePageTestArchiver( 256 return std::unique_ptr<OfflinePageTestArchiver>(new OfflinePageTestArchiver(
261 this, url, result, kTestFileSize, base::ThreadTaskRunnerHandle::Get())); 257 this, url, result, kTestFileSize, base::ThreadTaskRunnerHandle::Get()));
262 } 258 }
263 259
264 std::unique_ptr<OfflinePageMetadataStore> OfflinePageModelTest::BuildStore() { 260 std::unique_ptr<OfflinePageMetadataStore>
261 OfflinePageModelImplTest::BuildStore() {
265 return std::unique_ptr<OfflinePageMetadataStore>( 262 return std::unique_ptr<OfflinePageMetadataStore>(
266 new OfflinePageTestStore(base::ThreadTaskRunnerHandle::Get())); 263 new OfflinePageTestStore(base::ThreadTaskRunnerHandle::Get()));
267 } 264 }
268 265
269 std::unique_ptr<OfflinePageModel> OfflinePageModelTest::BuildModel( 266 std::unique_ptr<OfflinePageModelImpl> OfflinePageModelImplTest::BuildModel(
270 std::unique_ptr<OfflinePageMetadataStore> store) { 267 std::unique_ptr<OfflinePageMetadataStore> store) {
271 return std::unique_ptr<OfflinePageModel>(new OfflinePageModel( 268 return std::unique_ptr<OfflinePageModelImpl>(new OfflinePageModelImpl(
272 std::move(store), temp_dir_.path(), base::ThreadTaskRunnerHandle::Get())); 269 std::move(store), temp_dir_.path(), base::ThreadTaskRunnerHandle::Get()));
273 } 270 }
274 271
275 void OfflinePageModelTest::ResetModel() { 272 void OfflinePageModelImplTest::ResetModel() {
276 model_->RemoveObserver(this); 273 model_->RemoveObserver(this);
277 OfflinePageTestStore* old_store = GetStore(); 274 OfflinePageTestStore* old_store = GetStore();
278 std::unique_ptr<OfflinePageMetadataStore> new_store( 275 std::unique_ptr<OfflinePageMetadataStore> new_store(
279 new OfflinePageTestStore(*old_store)); 276 new OfflinePageTestStore(*old_store));
280 model_ = BuildModel(std::move(new_store)); 277 model_ = BuildModel(std::move(new_store));
281 model_->AddObserver(this); 278 model_->AddObserver(this);
282 PumpLoop(); 279 PumpLoop();
283 } 280 }
284 281
285 void OfflinePageModelTest::PumpLoop() { 282 void OfflinePageModelImplTest::PumpLoop() {
286 task_runner_->RunUntilIdle(); 283 task_runner_->RunUntilIdle();
287 } 284 }
288 285
289 void OfflinePageModelTest::FastForwardBy(base::TimeDelta delta) { 286 void OfflinePageModelImplTest::FastForwardBy(base::TimeDelta delta) {
290 task_runner_->FastForwardBy(delta); 287 task_runner_->FastForwardBy(delta);
291 } 288 }
292 289
293 void OfflinePageModelTest::ResetResults() { 290 void OfflinePageModelImplTest::ResetResults() {
294 last_save_result_ = SavePageResult::CANCELLED; 291 last_save_result_ = SavePageResult::CANCELLED;
295 last_delete_result_ = DeletePageResult::CANCELLED; 292 last_delete_result_ = DeletePageResult::CANCELLED;
296 last_archiver_path_.clear(); 293 last_archiver_path_.clear();
297 last_pages_exist_result_.clear(); 294 last_pages_exist_result_.clear();
298 last_cleared_pages_count_ = 0; 295 last_cleared_pages_count_ = 0;
299 } 296 }
300 297
301 OfflinePageTestStore* OfflinePageModelTest::GetStore() { 298 OfflinePageTestStore* OfflinePageModelImplTest::GetStore() {
302 return static_cast<OfflinePageTestStore*>(model()->GetStoreForTesting()); 299 return static_cast<OfflinePageTestStore*>(model()->GetStoreForTesting());
303 } 300 }
304 301
305 std::pair<SavePageResult, int64_t> OfflinePageModelTest::SavePage( 302 std::pair<SavePageResult, int64_t> OfflinePageModelImplTest::SavePage(
306 const GURL& url, 303 const GURL& url,
307 ClientId client_id) { 304 ClientId client_id) {
308 SavePageWithArchiverResult( 305 SavePageWithArchiverResult(
309 url, client_id, 306 url, client_id,
310 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED); 307 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED);
311 return std::make_pair(last_save_result_, last_save_offline_id_); 308 return std::make_pair(last_save_result_, last_save_offline_id_);
312 } 309 }
313 310
314 void OfflinePageModelTest::SavePageWithArchiverResult( 311 void OfflinePageModelImplTest::SavePageWithArchiverResult(
315 const GURL& url, 312 const GURL& url,
316 ClientId client_id, 313 ClientId client_id,
317 OfflinePageArchiver::ArchiverResult result) { 314 OfflinePageArchiver::ArchiverResult result) {
318 std::unique_ptr<OfflinePageTestArchiver> archiver(BuildArchiver(url, result)); 315 std::unique_ptr<OfflinePageTestArchiver> archiver(BuildArchiver(url, result));
319 model()->SavePage( 316 model()->SavePage(
320 url, client_id, std::move(archiver), 317 url, client_id, std::move(archiver),
321 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); 318 base::Bind(&OfflinePageModelImplTest::OnSavePageDone, AsWeakPtr()));
322 PumpLoop(); 319 PumpLoop();
323 } 320 }
324 321
325 MultipleOfflinePageItemResult OfflinePageModelTest::GetAllPages() { 322 MultipleOfflinePageItemResult OfflinePageModelImplTest::GetAllPages() {
326 MultipleOfflinePageItemResult result; 323 MultipleOfflinePageItemResult result;
327 model()->GetAllPages( 324 model()->GetAllPages(
328 base::Bind(&OfflinePageModelTest::OnGetMultipleOfflinePageItemsResult, 325 base::Bind(&OfflinePageModelImplTest::OnGetMultipleOfflinePageItemsResult,
329 AsWeakPtr(), base::Unretained(&result))); 326 AsWeakPtr(), base::Unretained(&result)));
330 PumpLoop(); 327 PumpLoop();
331 return result; 328 return result;
332 } 329 }
333 330
334 CheckPagesExistOfflineResult OfflinePageModelTest::CheckPagesExistOffline( 331 CheckPagesExistOfflineResult OfflinePageModelImplTest::CheckPagesExistOffline(
335 std::set<GURL> pages) { 332 std::set<GURL> pages) {
336 model()->CheckPagesExistOffline( 333 model()->CheckPagesExistOffline(
337 pages, base::Bind(&OfflinePageModelTest::OnCheckPagesExistOfflineDone, 334 pages, base::Bind(&OfflinePageModelImplTest::OnCheckPagesExistOfflineDone,
338 AsWeakPtr())); 335 AsWeakPtr()));
339 PumpLoop(); 336 PumpLoop();
340 return last_pages_exist_result_; 337 return last_pages_exist_result_;
341 } 338 }
342 339
343 MultipleOfflineIdResult OfflinePageModelTest::GetOfflineIdsForClientId( 340 MultipleOfflineIdResult OfflinePageModelImplTest::GetOfflineIdsForClientId(
344 const ClientId& client_id) { 341 const ClientId& client_id) {
345 MultipleOfflineIdResult result; 342 MultipleOfflineIdResult result;
346 model()->GetOfflineIdsForClientId( 343 model()->GetOfflineIdsForClientId(
347 client_id, 344 client_id,
348 base::Bind(&OfflinePageModelTest::OnGetOfflineIdsForClientIdDone, 345 base::Bind(&OfflinePageModelImplTest::OnGetOfflineIdsForClientIdDone,
349 AsWeakPtr(), base::Unretained(&result))); 346 AsWeakPtr(), base::Unretained(&result)));
350 PumpLoop(); 347 PumpLoop();
351 return result; 348 return result;
352 } 349 }
353 350
354 void OfflinePageModelTest::OnGetOfflineIdsForClientIdDone( 351 void OfflinePageModelImplTest::OnGetOfflineIdsForClientIdDone(
355 MultipleOfflineIdResult* storage, 352 MultipleOfflineIdResult* storage,
356 const MultipleOfflineIdResult& result) { 353 const MultipleOfflineIdResult& result) {
357 *storage = result; 354 *storage = result;
358 } 355 }
359 356
360 SingleOfflinePageItemResult OfflinePageModelTest::GetPageByOfflineId( 357 SingleOfflinePageItemResult OfflinePageModelImplTest::GetPageByOfflineId(
361 int64_t offline_id) { 358 int64_t offline_id) {
362 SingleOfflinePageItemResult result; 359 SingleOfflinePageItemResult result;
363 model()->GetPageByOfflineId( 360 model()->GetPageByOfflineId(
364 offline_id, 361 offline_id,
365 base::Bind(&OfflinePageModelTest::OnGetSingleOfflinePageItemResult, 362 base::Bind(&OfflinePageModelImplTest::OnGetSingleOfflinePageItemResult,
366 AsWeakPtr(), base::Unretained(&result))); 363 AsWeakPtr(), base::Unretained(&result)));
367 PumpLoop(); 364 PumpLoop();
368 return result; 365 return result;
369 } 366 }
370 367
371 SingleOfflinePageItemResult OfflinePageModelTest::GetPageByOfflineURL( 368 SingleOfflinePageItemResult OfflinePageModelImplTest::GetPageByOfflineURL(
372 const GURL& offline_url) { 369 const GURL& offline_url) {
373 SingleOfflinePageItemResult result; 370 SingleOfflinePageItemResult result;
374 model()->GetPageByOfflineURL( 371 model()->GetPageByOfflineURL(
375 offline_url, 372 offline_url,
376 base::Bind(&OfflinePageModelTest::OnGetSingleOfflinePageItemResult, 373 base::Bind(&OfflinePageModelImplTest::OnGetSingleOfflinePageItemResult,
377 AsWeakPtr(), base::Unretained(&result))); 374 AsWeakPtr(), base::Unretained(&result)));
378 PumpLoop(); 375 PumpLoop();
379 return result; 376 return result;
380 } 377 }
381 378
382 void OfflinePageModelTest::OnGetSingleOfflinePageItemResult( 379 void OfflinePageModelImplTest::OnGetSingleOfflinePageItemResult(
383 SingleOfflinePageItemResult* storage, 380 SingleOfflinePageItemResult* storage,
384 const SingleOfflinePageItemResult& result) { 381 const SingleOfflinePageItemResult& result) {
385 *storage = result; 382 *storage = result;
386 } 383 }
387 384
388 void OfflinePageModelTest::OnGetMultipleOfflinePageItemsResult( 385 void OfflinePageModelImplTest::OnGetMultipleOfflinePageItemsResult(
389 MultipleOfflinePageItemResult* storage, 386 MultipleOfflinePageItemResult* storage,
390 const MultipleOfflinePageItemResult& result) { 387 const MultipleOfflinePageItemResult& result) {
391 *storage = result; 388 *storage = result;
392 } 389 }
393 390
394 void OfflinePageModelTest::OnPagesExpired(bool result) { 391 void OfflinePageModelImplTest::OnPagesExpired(bool result) {
395 last_expire_page_result_ = result; 392 last_expire_page_result_ = result;
396 } 393 }
397 394
398 base::Optional<OfflinePageItem> OfflinePageModelTest::GetPagesByOnlineURL( 395 base::Optional<OfflinePageItem> OfflinePageModelImplTest::GetPagesByOnlineURL(
399 const GURL& online_url) { 396 const GURL& online_url) {
400 MultipleOfflinePageItemResult result; 397 MultipleOfflinePageItemResult result;
401 model()->GetPagesByOnlineURL( 398 model()->GetPagesByOnlineURL(
402 online_url, 399 online_url,
403 base::Bind(&OfflinePageModelTest::OnGetMultipleOfflinePageItemsResult, 400 base::Bind(&OfflinePageModelImplTest::OnGetMultipleOfflinePageItemsResult,
404 AsWeakPtr(), base::Unretained(&result))); 401 AsWeakPtr(), base::Unretained(&result)));
405 PumpLoop(); 402 PumpLoop();
406 if (result.size() > 0) 403 if (result.size() > 0)
407 return base::make_optional(result[0]); 404 return base::make_optional(result[0]);
408 return base::nullopt; 405 return base::nullopt;
409 } 406 }
410 407
411 bool OfflinePageModelTest::HasPages(std::string name_space) { 408 bool OfflinePageModelImplTest::HasPages(std::string name_space) {
412 model()->HasPages( 409 model()->HasPages(
413 name_space, 410 name_space,
414 base::Bind(&OfflinePageModelTest::OnHasPagesDone, AsWeakPtr())); 411 base::Bind(&OfflinePageModelImplTest::OnHasPagesDone, AsWeakPtr()));
415 PumpLoop(); 412 PumpLoop();
416 return last_has_pages_result_; 413 return last_has_pages_result_;
417 } 414 }
418 415
419 TEST_F(OfflinePageModelTest, SavePageSuccessful) { 416 TEST_F(OfflinePageModelImplTest, SavePageSuccessful) {
420 EXPECT_FALSE(HasPages(kTestClientNamespace)); 417 EXPECT_FALSE(HasPages(kTestClientNamespace));
421 SavePage(kTestUrl, kTestClientId1); 418 SavePage(kTestUrl, kTestClientId1);
422 EXPECT_TRUE(HasPages(kTestClientNamespace)); 419 EXPECT_TRUE(HasPages(kTestClientNamespace));
423 420
424 OfflinePageTestStore* store = GetStore(); 421 OfflinePageTestStore* store = GetStore();
425 EXPECT_EQ(kTestUrl, store->last_saved_page().url); 422 EXPECT_EQ(kTestUrl, store->last_saved_page().url);
426 EXPECT_EQ(kTestClientId1.id, store->last_saved_page().client_id.id); 423 EXPECT_EQ(kTestClientId1.id, store->last_saved_page().client_id.id);
427 EXPECT_EQ(kTestClientId1.name_space, 424 EXPECT_EQ(kTestClientId1.name_space,
428 store->last_saved_page().client_id.name_space); 425 store->last_saved_page().client_id.name_space);
429 // Save last_archiver_path since it will be referred to later. 426 // Save last_archiver_path since it will be referred to later.
430 base::FilePath archiver_path = last_archiver_path(); 427 base::FilePath archiver_path = last_archiver_path();
431 EXPECT_EQ(archiver_path, store->last_saved_page().file_path); 428 EXPECT_EQ(archiver_path, store->last_saved_page().file_path);
432 EXPECT_EQ(kTestFileSize, store->last_saved_page().file_size); 429 EXPECT_EQ(kTestFileSize, store->last_saved_page().file_size);
433 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result()); 430 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result());
434 ResetResults(); 431 ResetResults();
435 432
436 const std::vector<OfflinePageItem>& offline_pages = GetAllPages(); 433 const std::vector<OfflinePageItem>& offline_pages = GetAllPages();
437 434
438 EXPECT_EQ(1UL, offline_pages.size()); 435 EXPECT_EQ(1UL, offline_pages.size());
439 EXPECT_EQ(kTestUrl, offline_pages[0].url); 436 EXPECT_EQ(kTestUrl, offline_pages[0].url);
440 EXPECT_EQ(kTestClientId1.id, offline_pages[0].client_id.id); 437 EXPECT_EQ(kTestClientId1.id, offline_pages[0].client_id.id);
441 EXPECT_EQ(kTestClientId1.name_space, offline_pages[0].client_id.name_space); 438 EXPECT_EQ(kTestClientId1.name_space, offline_pages[0].client_id.name_space);
442 EXPECT_EQ(archiver_path, offline_pages[0].file_path); 439 EXPECT_EQ(archiver_path, offline_pages[0].file_path);
443 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); 440 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size);
444 EXPECT_EQ(0, offline_pages[0].access_count); 441 EXPECT_EQ(0, offline_pages[0].access_count);
445 EXPECT_EQ(0, offline_pages[0].flags); 442 EXPECT_EQ(0, offline_pages[0].flags);
446 } 443 }
447 444
448 TEST_F(OfflinePageModelTest, SavePageOfflineArchiverCancelled) { 445 TEST_F(OfflinePageModelImplTest, SavePageOfflineArchiverCancelled) {
449 SavePageWithArchiverResult( 446 SavePageWithArchiverResult(
450 kTestUrl, kTestClientId1, 447 kTestUrl, kTestClientId1,
451 OfflinePageArchiver::ArchiverResult::ERROR_CANCELED); 448 OfflinePageArchiver::ArchiverResult::ERROR_CANCELED);
452 EXPECT_EQ(SavePageResult::CANCELLED, last_save_result()); 449 EXPECT_EQ(SavePageResult::CANCELLED, last_save_result());
453 } 450 }
454 451
455 TEST_F(OfflinePageModelTest, SavePageOfflineArchiverDeviceFull) { 452 TEST_F(OfflinePageModelImplTest, SavePageOfflineArchiverDeviceFull) {
456 SavePageWithArchiverResult( 453 SavePageWithArchiverResult(
457 kTestUrl, kTestClientId1, 454 kTestUrl, kTestClientId1,
458 OfflinePageArchiver::ArchiverResult::ERROR_DEVICE_FULL); 455 OfflinePageArchiver::ArchiverResult::ERROR_DEVICE_FULL);
459 EXPECT_EQ(SavePageResult::DEVICE_FULL, last_save_result()); 456 EXPECT_EQ(SavePageResult::DEVICE_FULL, last_save_result());
460 } 457 }
461 458
462 TEST_F(OfflinePageModelTest, SavePageOfflineArchiverContentUnavailable) { 459 TEST_F(OfflinePageModelImplTest, SavePageOfflineArchiverContentUnavailable) {
463 SavePageWithArchiverResult( 460 SavePageWithArchiverResult(
464 kTestUrl, kTestClientId1, 461 kTestUrl, kTestClientId1,
465 OfflinePageArchiver::ArchiverResult::ERROR_CONTENT_UNAVAILABLE); 462 OfflinePageArchiver::ArchiverResult::ERROR_CONTENT_UNAVAILABLE);
466 EXPECT_EQ(SavePageResult::CONTENT_UNAVAILABLE, last_save_result()); 463 EXPECT_EQ(SavePageResult::CONTENT_UNAVAILABLE, last_save_result());
467 } 464 }
468 465
469 TEST_F(OfflinePageModelTest, SavePageOfflineCreationFailed) { 466 TEST_F(OfflinePageModelImplTest, SavePageOfflineCreationFailed) {
470 SavePageWithArchiverResult( 467 SavePageWithArchiverResult(
471 kTestUrl, kTestClientId1, 468 kTestUrl, kTestClientId1,
472 OfflinePageArchiver::ArchiverResult::ERROR_ARCHIVE_CREATION_FAILED); 469 OfflinePageArchiver::ArchiverResult::ERROR_ARCHIVE_CREATION_FAILED);
473 EXPECT_EQ(SavePageResult::ARCHIVE_CREATION_FAILED, last_save_result()); 470 EXPECT_EQ(SavePageResult::ARCHIVE_CREATION_FAILED, last_save_result());
474 } 471 }
475 472
476 TEST_F(OfflinePageModelTest, SavePageOfflineArchiverReturnedWrongUrl) { 473 TEST_F(OfflinePageModelImplTest, SavePageOfflineArchiverReturnedWrongUrl) {
477 std::unique_ptr<OfflinePageTestArchiver> archiver( 474 std::unique_ptr<OfflinePageTestArchiver> archiver(
478 BuildArchiver(GURL("http://other.random.url.com"), 475 BuildArchiver(GURL("http://other.random.url.com"),
479 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)); 476 OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED));
480 model()->SavePage( 477 model()->SavePage(
481 kTestUrl, kTestClientId1, std::move(archiver), 478 kTestUrl, kTestClientId1, std::move(archiver),
482 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); 479 base::Bind(&OfflinePageModelImplTest::OnSavePageDone, AsWeakPtr()));
483 PumpLoop(); 480 PumpLoop();
484 EXPECT_EQ(SavePageResult::ARCHIVE_CREATION_FAILED, last_save_result()); 481 EXPECT_EQ(SavePageResult::ARCHIVE_CREATION_FAILED, last_save_result());
485 } 482 }
486 483
487 TEST_F(OfflinePageModelTest, SavePageOfflineCreationStoreWriteFailure) { 484 TEST_F(OfflinePageModelImplTest, SavePageOfflineCreationStoreWriteFailure) {
488 GetStore()->set_test_scenario( 485 GetStore()->set_test_scenario(
489 OfflinePageTestStore::TestScenario::WRITE_FAILED); 486 OfflinePageTestStore::TestScenario::WRITE_FAILED);
490 SavePage(kTestUrl, kTestClientId1); 487 SavePage(kTestUrl, kTestClientId1);
491 EXPECT_EQ(SavePageResult::STORE_FAILURE, last_save_result()); 488 EXPECT_EQ(SavePageResult::STORE_FAILURE, last_save_result());
492 } 489 }
493 490
494 TEST_F(OfflinePageModelTest, SavePageLocalFileFailed) { 491 TEST_F(OfflinePageModelImplTest, SavePageLocalFileFailed) {
495 // Don't create archiver since it will not be needed for pages that are not 492 // Don't create archiver since it will not be needed for pages that are not
496 // going to be saved. 493 // going to be saved.
497 model()->SavePage( 494 model()->SavePage(
498 kFileUrl, kTestClientId1, std::unique_ptr<OfflinePageTestArchiver>(), 495 kFileUrl, kTestClientId1, std::unique_ptr<OfflinePageTestArchiver>(),
499 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); 496 base::Bind(&OfflinePageModelImplTest::OnSavePageDone, AsWeakPtr()));
500 PumpLoop(); 497 PumpLoop();
501 EXPECT_EQ(SavePageResult::SKIPPED, last_save_result()); 498 EXPECT_EQ(SavePageResult::SKIPPED, last_save_result());
502 } 499 }
503 500
504 TEST_F(OfflinePageModelTest, SavePageOfflineArchiverTwoPages) { 501 TEST_F(OfflinePageModelImplTest, SavePageOfflineArchiverTwoPages) {
505 std::unique_ptr<OfflinePageTestArchiver> archiver(BuildArchiver( 502 std::unique_ptr<OfflinePageTestArchiver> archiver(BuildArchiver(
506 kTestUrl, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)); 503 kTestUrl, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED));
507 // archiver_ptr will be valid until after first PumpLoop() call after 504 // archiver_ptr will be valid until after first PumpLoop() call after
508 // CompleteCreateArchive() is called. 505 // CompleteCreateArchive() is called.
509 OfflinePageTestArchiver* archiver_ptr = archiver.get(); 506 OfflinePageTestArchiver* archiver_ptr = archiver.get();
510 archiver_ptr->set_delayed(true); 507 archiver_ptr->set_delayed(true);
511 model()->SavePage( 508 model()->SavePage(
512 kTestUrl, kTestClientId1, std::move(archiver), 509 kTestUrl, kTestClientId1, std::move(archiver),
513 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); 510 base::Bind(&OfflinePageModelImplTest::OnSavePageDone, AsWeakPtr()));
514 EXPECT_TRUE(archiver_ptr->create_archive_called()); 511 EXPECT_TRUE(archiver_ptr->create_archive_called());
515 512
516 // Request to save another page. 513 // Request to save another page.
517 SavePage(kTestUrl2, kTestClientId2); 514 SavePage(kTestUrl2, kTestClientId2);
518 515
519 OfflinePageTestStore* store = GetStore(); 516 OfflinePageTestStore* store = GetStore();
520 517
521 EXPECT_EQ(kTestUrl2, store->last_saved_page().url); 518 EXPECT_EQ(kTestUrl2, store->last_saved_page().url);
522 EXPECT_EQ(kTestClientId2, store->last_saved_page().client_id); 519 EXPECT_EQ(kTestClientId2, store->last_saved_page().client_id);
523 base::FilePath archiver_path2 = last_archiver_path(); 520 base::FilePath archiver_path2 = last_archiver_path();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 EXPECT_EQ(0, page1->access_count); 559 EXPECT_EQ(0, page1->access_count);
563 EXPECT_EQ(0, page1->flags); 560 EXPECT_EQ(0, page1->flags);
564 EXPECT_EQ(kTestUrl2, page2->url); 561 EXPECT_EQ(kTestUrl2, page2->url);
565 EXPECT_EQ(kTestClientId2, page2->client_id); 562 EXPECT_EQ(kTestClientId2, page2->client_id);
566 EXPECT_EQ(archiver_path2, page2->file_path); 563 EXPECT_EQ(archiver_path2, page2->file_path);
567 EXPECT_EQ(kTestFileSize, page2->file_size); 564 EXPECT_EQ(kTestFileSize, page2->file_size);
568 EXPECT_EQ(0, page2->access_count); 565 EXPECT_EQ(0, page2->access_count);
569 EXPECT_EQ(0, page2->flags); 566 EXPECT_EQ(0, page2->flags);
570 } 567 }
571 568
572 TEST_F(OfflinePageModelTest, MarkPageAccessed) { 569 TEST_F(OfflinePageModelImplTest, MarkPageAccessed) {
573 SavePage(kTestUrl, kTestClientId1); 570 SavePage(kTestUrl, kTestClientId1);
574 571
575 // This will increase access_count by one. 572 // This will increase access_count by one.
576 model()->MarkPageAccessed(last_save_offline_id()); 573 model()->MarkPageAccessed(last_save_offline_id());
577 PumpLoop(); 574 PumpLoop();
578 575
579 const std::vector<OfflinePageItem>& offline_pages = GetAllPages(); 576 const std::vector<OfflinePageItem>& offline_pages = GetAllPages();
580 577
581 EXPECT_EQ(1UL, offline_pages.size()); 578 EXPECT_EQ(1UL, offline_pages.size());
582 EXPECT_EQ(kTestUrl, offline_pages[0].url); 579 EXPECT_EQ(kTestUrl, offline_pages[0].url);
583 EXPECT_EQ(kTestClientId1, offline_pages[0].client_id); 580 EXPECT_EQ(kTestClientId1, offline_pages[0].client_id);
584 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size); 581 EXPECT_EQ(kTestFileSize, offline_pages[0].file_size);
585 EXPECT_EQ(1, offline_pages[0].access_count); 582 EXPECT_EQ(1, offline_pages[0].access_count);
586 } 583 }
587 584
588 TEST_F(OfflinePageModelTest, GetAllPagesStoreEmpty) { 585 TEST_F(OfflinePageModelImplTest, GetAllPagesStoreEmpty) {
589 const std::vector<OfflinePageItem>& offline_pages = GetAllPages(); 586 const std::vector<OfflinePageItem>& offline_pages = GetAllPages();
590 587
591 EXPECT_EQ(0UL, offline_pages.size()); 588 EXPECT_EQ(0UL, offline_pages.size());
592 } 589 }
593 590
594 TEST_F(OfflinePageModelTest, GetAllPagesStoreFailure) { 591 TEST_F(OfflinePageModelImplTest, GetAllPagesStoreFailure) {
595 GetStore()->set_test_scenario( 592 GetStore()->set_test_scenario(
596 OfflinePageTestStore::TestScenario::LOAD_FAILED); 593 OfflinePageTestStore::TestScenario::LOAD_FAILED);
597 const std::vector<OfflinePageItem>& offline_pages = GetAllPages(); 594 const std::vector<OfflinePageItem>& offline_pages = GetAllPages();
598 595
599 EXPECT_EQ(0UL, offline_pages.size()); 596 EXPECT_EQ(0UL, offline_pages.size());
600 } 597 }
601 598
602 TEST_F(OfflinePageModelTest, DeletePageSuccessful) { 599 TEST_F(OfflinePageModelImplTest, DeletePageSuccessful) {
603 OfflinePageTestStore* store = GetStore(); 600 OfflinePageTestStore* store = GetStore();
604 601
605 // Save one page. 602 // Save one page.
606 SavePage(kTestUrl, kTestClientId1); 603 SavePage(kTestUrl, kTestClientId1);
607 int64_t offline1 = last_save_offline_id(); 604 int64_t offline1 = last_save_offline_id();
608 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result()); 605 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result());
609 EXPECT_EQ(1u, store->GetAllPages().size()); 606 EXPECT_EQ(1u, store->GetAllPages().size());
610 607
611 ResetResults(); 608 ResetResults();
612 609
613 // Save another page. 610 // Save another page.
614 SavePage(kTestUrl2, kTestClientId2); 611 SavePage(kTestUrl2, kTestClientId2);
615 int64_t offline2 = last_save_offline_id(); 612 int64_t offline2 = last_save_offline_id();
616 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result()); 613 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result());
617 EXPECT_EQ(2u, store->GetAllPages().size()); 614 EXPECT_EQ(2u, store->GetAllPages().size());
618 615
619 ResetResults(); 616 ResetResults();
620 617
621 // Delete one page. 618 // Delete one page.
622 DeletePage(offline1, 619 DeletePage(offline1, base::Bind(&OfflinePageModelImplTest::OnDeletePageDone,
623 base::Bind(&OfflinePageModelTest::OnDeletePageDone, AsWeakPtr())); 620 AsWeakPtr()));
624 621
625 PumpLoop(); 622 PumpLoop();
626 623
627 EXPECT_EQ(last_deleted_offline_id(), offline1); 624 EXPECT_EQ(last_deleted_offline_id(), offline1);
628 EXPECT_EQ(last_deleted_client_id(), kTestClientId1); 625 EXPECT_EQ(last_deleted_client_id(), kTestClientId1);
629 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); 626 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result());
630 ASSERT_EQ(1u, store->GetAllPages().size()); 627 ASSERT_EQ(1u, store->GetAllPages().size());
631 EXPECT_EQ(kTestUrl2, store->GetAllPages()[0].url); 628 EXPECT_EQ(kTestUrl2, store->GetAllPages()[0].url);
632 629
633 // Delete another page. 630 // Delete another page.
634 DeletePage(offline2, 631 DeletePage(offline2, base::Bind(&OfflinePageModelImplTest::OnDeletePageDone,
635 base::Bind(&OfflinePageModelTest::OnDeletePageDone, AsWeakPtr())); 632 AsWeakPtr()));
636 633
637 ResetResults(); 634 ResetResults();
638 635
639 PumpLoop(); 636 PumpLoop();
640 637
641 EXPECT_EQ(last_deleted_offline_id(), offline2); 638 EXPECT_EQ(last_deleted_offline_id(), offline2);
642 EXPECT_EQ(last_deleted_client_id(), kTestClientId2); 639 EXPECT_EQ(last_deleted_client_id(), kTestClientId2);
643 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); 640 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result());
644 EXPECT_EQ(0u, store->GetAllPages().size()); 641 EXPECT_EQ(0u, store->GetAllPages().size());
645 } 642 }
646 643
647 TEST_F(OfflinePageModelTest, DeletePageByPredicate) { 644 TEST_F(OfflinePageModelImplTest, DeletePageByPredicate) {
648 OfflinePageTestStore* store = GetStore(); 645 OfflinePageTestStore* store = GetStore();
649 646
650 // Save one page. 647 // Save one page.
651 SavePage(kTestUrl, kTestClientId1); 648 SavePage(kTestUrl, kTestClientId1);
652 int64_t offline1 = last_save_offline_id(); 649 int64_t offline1 = last_save_offline_id();
653 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result()); 650 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result());
654 EXPECT_EQ(1u, store->GetAllPages().size()); 651 EXPECT_EQ(1u, store->GetAllPages().size());
655 652
656 ResetResults(); 653 ResetResults();
657 654
658 // Save another page. 655 // Save another page.
659 SavePage(kTestUrl2, kTestClientId2); 656 SavePage(kTestUrl2, kTestClientId2);
660 int64_t offline2 = last_save_offline_id(); 657 int64_t offline2 = last_save_offline_id();
661 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result()); 658 EXPECT_EQ(SavePageResult::SUCCESS, last_save_result());
662 EXPECT_EQ(2u, store->GetAllPages().size()); 659 EXPECT_EQ(2u, store->GetAllPages().size());
663 660
664 ResetResults(); 661 ResetResults();
665 662
666 // Delete the second page. 663 // Delete the second page.
667 model()->DeletePagesByURLPredicate( 664 model()->DeletePagesByURLPredicate(
668 base::Bind(&URLSpecContains, "page.com"), 665 base::Bind(&URLSpecContains, "page.com"),
669 base::Bind(&OfflinePageModelTest::OnDeletePageDone, AsWeakPtr())); 666 base::Bind(&OfflinePageModelImplTest::OnDeletePageDone, AsWeakPtr()));
670 667
671 PumpLoop(); 668 PumpLoop();
672 669
673 EXPECT_EQ(last_deleted_offline_id(), offline2); 670 EXPECT_EQ(last_deleted_offline_id(), offline2);
674 EXPECT_EQ(last_deleted_client_id(), kTestClientId2); 671 EXPECT_EQ(last_deleted_client_id(), kTestClientId2);
675 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); 672 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result());
676 ASSERT_EQ(1u, store->GetAllPages().size()); 673 ASSERT_EQ(1u, store->GetAllPages().size());
677 EXPECT_EQ(kTestUrl, store->GetAllPages()[0].url); 674 EXPECT_EQ(kTestUrl, store->GetAllPages()[0].url);
678 675
679 ResetResults(); 676 ResetResults();
680 677
681 // Delete the first page. 678 // Delete the first page.
682 model()->DeletePagesByURLPredicate( 679 model()->DeletePagesByURLPredicate(
683 base::Bind(&URLSpecContains, "example.com"), 680 base::Bind(&URLSpecContains, "example.com"),
684 base::Bind(&OfflinePageModelTest::OnDeletePageDone, AsWeakPtr())); 681 base::Bind(&OfflinePageModelImplTest::OnDeletePageDone, AsWeakPtr()));
685 682
686 PumpLoop(); 683 PumpLoop();
687 684
688 EXPECT_EQ(last_deleted_offline_id(), offline1); 685 EXPECT_EQ(last_deleted_offline_id(), offline1);
689 EXPECT_EQ(last_deleted_client_id(), kTestClientId1); 686 EXPECT_EQ(last_deleted_client_id(), kTestClientId1);
690 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); 687 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result());
691 EXPECT_EQ(0u, store->GetAllPages().size()); 688 EXPECT_EQ(0u, store->GetAllPages().size());
692 } 689 }
693 690
694 TEST_F(OfflinePageModelTest, DeletePageNotFound) { 691 TEST_F(OfflinePageModelImplTest, DeletePageNotFound) {
695 DeletePage(1234LL, 692 DeletePage(1234LL, base::Bind(&OfflinePageModelImplTest::OnDeletePageDone,
696 base::Bind(&OfflinePageModelTest::OnDeletePageDone, AsWeakPtr())); 693 AsWeakPtr()));
697 EXPECT_EQ(DeletePageResult::NOT_FOUND, last_delete_result()); 694 EXPECT_EQ(DeletePageResult::NOT_FOUND, last_delete_result());
698 695
699 ResetResults(); 696 ResetResults();
700 697
701 model()->DeletePagesByURLPredicate( 698 model()->DeletePagesByURLPredicate(
702 base::Bind(&URLSpecContains, "page.com"), 699 base::Bind(&URLSpecContains, "page.com"),
703 base::Bind(&OfflinePageModelTest::OnDeletePageDone, AsWeakPtr())); 700 base::Bind(&OfflinePageModelImplTest::OnDeletePageDone, AsWeakPtr()));
704 EXPECT_EQ(DeletePageResult::NOT_FOUND, last_delete_result()); 701 EXPECT_EQ(DeletePageResult::NOT_FOUND, last_delete_result());
705 } 702 }
706 703
707 TEST_F(OfflinePageModelTest, DeletePageStoreFailureOnRemove) { 704 TEST_F(OfflinePageModelImplTest, DeletePageStoreFailureOnRemove) {
708 // Save a page. 705 // Save a page.
709 SavePage(kTestUrl, kTestClientId1); 706 SavePage(kTestUrl, kTestClientId1);
710 int64_t offline_id = last_save_offline_id(); 707 int64_t offline_id = last_save_offline_id();
711 ResetResults(); 708 ResetResults();
712 709
713 // Try to delete this page. 710 // Try to delete this page.
714 GetStore()->set_test_scenario( 711 GetStore()->set_test_scenario(
715 OfflinePageTestStore::TestScenario::REMOVE_FAILED); 712 OfflinePageTestStore::TestScenario::REMOVE_FAILED);
716 DeletePage(offline_id, 713 DeletePage(offline_id, base::Bind(&OfflinePageModelImplTest::OnDeletePageDone,
717 base::Bind(&OfflinePageModelTest::OnDeletePageDone, AsWeakPtr())); 714 AsWeakPtr()));
718 PumpLoop(); 715 PumpLoop();
719 EXPECT_EQ(DeletePageResult::STORE_FAILURE, last_delete_result()); 716 EXPECT_EQ(DeletePageResult::STORE_FAILURE, last_delete_result());
720 } 717 }
721 718
722 TEST_F(OfflinePageModelTest, DetectThatOfflineCopyIsMissing) { 719 TEST_F(OfflinePageModelImplTest, DetectThatOfflineCopyIsMissing) {
723 // Save a page. 720 // Save a page.
724 SavePage(kTestUrl, kTestClientId1); 721 SavePage(kTestUrl, kTestClientId1);
725 int64_t offline_id = last_save_offline_id(); 722 int64_t offline_id = last_save_offline_id();
726 723
727 ResetResults(); 724 ResetResults();
728 725
729 base::Optional<OfflinePageItem> page = GetPageByOfflineId(offline_id); 726 base::Optional<OfflinePageItem> page = GetPageByOfflineId(offline_id);
730 727
731 // Delete the offline copy of the page and check the metadata. 728 // Delete the offline copy of the page and check the metadata.
732 base::DeleteFile(page->file_path, false); 729 base::DeleteFile(page->file_path, false);
733 model()->CheckForExternalFileDeletion(); 730 model()->CheckForExternalFileDeletion();
734 PumpLoop(); 731 PumpLoop();
735 732
736 EXPECT_EQ(last_deleted_offline_id(), offline_id); 733 EXPECT_EQ(last_deleted_offline_id(), offline_id);
737 EXPECT_EQ(0UL, GetAllPages().size()); 734 EXPECT_EQ(0UL, GetAllPages().size());
738 } 735 }
739 736
740 TEST_F(OfflinePageModelTest, DetectThatOfflineCopyIsMissingAfterLoad) { 737 TEST_F(OfflinePageModelImplTest, DetectThatOfflineCopyIsMissingAfterLoad) {
741 // Save a page. 738 // Save a page.
742 SavePage(kTestUrl, kTestClientId1); 739 SavePage(kTestUrl, kTestClientId1);
743 PumpLoop(); 740 PumpLoop();
744 int64_t offline_id = last_save_offline_id(); 741 int64_t offline_id = last_save_offline_id();
745 742
746 ResetResults(); 743 ResetResults();
747 744
748 base::Optional<OfflinePageItem> page = GetPageByOfflineId(offline_id); 745 base::Optional<OfflinePageItem> page = GetPageByOfflineId(offline_id);
749 // Delete the offline copy of the page and check the metadata. 746 // Delete the offline copy of the page and check the metadata.
750 base::DeleteFile(page->file_path, false); 747 base::DeleteFile(page->file_path, false);
751 // Reseting the model should trigger the metadata consistency check as well. 748 // Reseting the model should trigger the metadata consistency check as well.
752 ResetModel(); 749 ResetModel();
753 PumpLoop(); 750 PumpLoop();
754 751
755 EXPECT_EQ(last_deleted_offline_id(), offline_id); 752 EXPECT_EQ(last_deleted_offline_id(), offline_id);
756 EXPECT_EQ(0UL, GetAllPages().size()); 753 EXPECT_EQ(0UL, GetAllPages().size());
757 } 754 }
758 755
759 TEST_F(OfflinePageModelTest, DeleteMultiplePages) { 756 TEST_F(OfflinePageModelImplTest, DeleteMultiplePages) {
760 OfflinePageTestStore* store = GetStore(); 757 OfflinePageTestStore* store = GetStore();
761 758
762 // Save 3 pages. 759 // Save 3 pages.
763 std::unique_ptr<OfflinePageTestArchiver> archiver(BuildArchiver( 760 std::unique_ptr<OfflinePageTestArchiver> archiver(BuildArchiver(
764 kTestUrl, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)); 761 kTestUrl, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED));
765 model()->SavePage( 762 model()->SavePage(
766 kTestUrl, kTestClientId1, std::move(archiver), 763 kTestUrl, kTestClientId1, std::move(archiver),
767 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); 764 base::Bind(&OfflinePageModelImplTest::OnSavePageDone, AsWeakPtr()));
768 PumpLoop(); 765 PumpLoop();
769 int64_t offline1 = last_save_offline_id(); 766 int64_t offline1 = last_save_offline_id();
770 767
771 std::unique_ptr<OfflinePageTestArchiver> archiver2(BuildArchiver( 768 std::unique_ptr<OfflinePageTestArchiver> archiver2(BuildArchiver(
772 kTestUrl2, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)); 769 kTestUrl2, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED));
773 model()->SavePage( 770 model()->SavePage(
774 kTestUrl2, kTestClientId2, std::move(archiver2), 771 kTestUrl2, kTestClientId2, std::move(archiver2),
775 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); 772 base::Bind(&OfflinePageModelImplTest::OnSavePageDone, AsWeakPtr()));
776 PumpLoop(); 773 PumpLoop();
777 int64_t offline2 = last_save_offline_id(); 774 int64_t offline2 = last_save_offline_id();
778 775
779 std::unique_ptr<OfflinePageTestArchiver> archiver3(BuildArchiver( 776 std::unique_ptr<OfflinePageTestArchiver> archiver3(BuildArchiver(
780 kTestUrl3, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED)); 777 kTestUrl3, OfflinePageArchiver::ArchiverResult::SUCCESSFULLY_CREATED));
781 model()->SavePage( 778 model()->SavePage(
782 kTestUrl3, kTestClientId3, std::move(archiver3), 779 kTestUrl3, kTestClientId3, std::move(archiver3),
783 base::Bind(&OfflinePageModelTest::OnSavePageDone, AsWeakPtr())); 780 base::Bind(&OfflinePageModelImplTest::OnSavePageDone, AsWeakPtr()));
784 PumpLoop(); 781 PumpLoop();
785 782
786 EXPECT_EQ(3u, store->GetAllPages().size()); 783 EXPECT_EQ(3u, store->GetAllPages().size());
787 784
788 // Delete multiple pages. 785 // Delete multiple pages.
789 std::vector<int64_t> ids_to_delete; 786 std::vector<int64_t> ids_to_delete;
790 ids_to_delete.push_back(offline2); 787 ids_to_delete.push_back(offline2);
791 ids_to_delete.push_back(offline1); 788 ids_to_delete.push_back(offline1);
792 ids_to_delete.push_back(23434LL); // Non-existent ID. 789 ids_to_delete.push_back(23434LL); // Non-existent ID.
793 model()->DeletePagesByOfflineId( 790 model()->DeletePagesByOfflineId(
794 ids_to_delete, 791 ids_to_delete,
795 base::Bind(&OfflinePageModelTest::OnDeletePageDone, AsWeakPtr())); 792 base::Bind(&OfflinePageModelImplTest::OnDeletePageDone, AsWeakPtr()));
796 PumpLoop(); 793 PumpLoop();
797 794
798 // Success is expected if at least one page is deleted successfully. 795 // Success is expected if at least one page is deleted successfully.
799 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result()); 796 EXPECT_EQ(DeletePageResult::SUCCESS, last_delete_result());
800 EXPECT_EQ(1u, store->GetAllPages().size()); 797 EXPECT_EQ(1u, store->GetAllPages().size());
801 } 798 }
802 799
803 TEST_F(OfflinePageModelTest, GetPageByOfflineId) { 800 TEST_F(OfflinePageModelImplTest, GetPageByOfflineId) {
804 SavePage(kTestUrl, kTestClientId1); 801 SavePage(kTestUrl, kTestClientId1);
805 int64_t offline1 = last_save_offline_id(); 802 int64_t offline1 = last_save_offline_id();
806 SavePage(kTestUrl2, kTestClientId2); 803 SavePage(kTestUrl2, kTestClientId2);
807 int64_t offline2 = last_save_offline_id(); 804 int64_t offline2 = last_save_offline_id();
808 805
809 base::Optional<OfflinePageItem> page = GetPageByOfflineId(offline1); 806 base::Optional<OfflinePageItem> page = GetPageByOfflineId(offline1);
810 bool page_exists = page != base::nullopt; 807 bool page_exists = page != base::nullopt;
811 EXPECT_TRUE(page_exists); 808 EXPECT_TRUE(page_exists);
812 EXPECT_EQ(kTestUrl, page->url); 809 EXPECT_EQ(kTestUrl, page->url);
813 EXPECT_EQ(kTestClientId1, page->client_id); 810 EXPECT_EQ(kTestClientId1, page->client_id);
814 EXPECT_EQ(kTestFileSize, page->file_size); 811 EXPECT_EQ(kTestFileSize, page->file_size);
815 812
816 page = GetPageByOfflineId(offline2); 813 page = GetPageByOfflineId(offline2);
817 page_exists = page != base::nullopt; 814 page_exists = page != base::nullopt;
818 EXPECT_TRUE(page_exists); 815 EXPECT_TRUE(page_exists);
819 EXPECT_EQ(kTestUrl2, page->url); 816 EXPECT_EQ(kTestUrl2, page->url);
820 EXPECT_EQ(kTestClientId2, page->client_id); 817 EXPECT_EQ(kTestClientId2, page->client_id);
821 EXPECT_EQ(kTestFileSize, page->file_size); 818 EXPECT_EQ(kTestFileSize, page->file_size);
822 819
823 page = GetPageByOfflineId(-42); 820 page = GetPageByOfflineId(-42);
824 page_exists = page != base::nullopt; 821 page_exists = page != base::nullopt;
825 EXPECT_FALSE(page_exists); 822 EXPECT_FALSE(page_exists);
826 } 823 }
827 824
828 TEST_F(OfflinePageModelTest, GetPageByOfflineURL) { 825 TEST_F(OfflinePageModelImplTest, GetPageByOfflineURL) {
829 SavePage(kTestUrl, kTestClientId1); 826 SavePage(kTestUrl, kTestClientId1);
830 int64_t offline1 = last_save_offline_id(); 827 int64_t offline1 = last_save_offline_id();
831 828
832 OfflinePageTestStore* store = GetStore(); 829 OfflinePageTestStore* store = GetStore();
833 GURL offline_url = store->last_saved_page().GetOfflineURL(); 830 GURL offline_url = store->last_saved_page().GetOfflineURL();
834 831
835 SavePage(kTestUrl2, kTestClientId2); 832 SavePage(kTestUrl2, kTestClientId2);
836 833
837 GURL offline_url2 = store->last_saved_page().GetOfflineURL(); 834 GURL offline_url2 = store->last_saved_page().GetOfflineURL();
838 int64_t offline2 = last_save_offline_id(); 835 int64_t offline2 = last_save_offline_id();
839 836
840 SingleOfflinePageItemResult page = GetPageByOfflineURL(offline_url2); 837 SingleOfflinePageItemResult page = GetPageByOfflineURL(offline_url2);
841 EXPECT_TRUE(page != base::nullopt); 838 EXPECT_TRUE(page != base::nullopt);
842 EXPECT_EQ(kTestUrl2, page->url); 839 EXPECT_EQ(kTestUrl2, page->url);
843 EXPECT_EQ(kTestClientId2, page->client_id); 840 EXPECT_EQ(kTestClientId2, page->client_id);
844 EXPECT_EQ(offline2, page->offline_id); 841 EXPECT_EQ(offline2, page->offline_id);
845 842
846 page = GetPageByOfflineURL(offline_url); 843 page = GetPageByOfflineURL(offline_url);
847 EXPECT_TRUE(page != base::nullopt); 844 EXPECT_TRUE(page != base::nullopt);
848 EXPECT_EQ(kTestUrl, page->url); 845 EXPECT_EQ(kTestUrl, page->url);
849 EXPECT_EQ(kTestClientId1, page->client_id); 846 EXPECT_EQ(kTestClientId1, page->client_id);
850 EXPECT_EQ(offline1, page->offline_id); 847 EXPECT_EQ(offline1, page->offline_id);
851 848
852 page = GetPageByOfflineURL(GURL("http://foo")); 849 page = GetPageByOfflineURL(GURL("http://foo"));
853 EXPECT_TRUE(page == base::nullopt); 850 EXPECT_TRUE(page == base::nullopt);
854 } 851 }
855 852
856 TEST_F(OfflinePageModelTest, GetPagesByOnlineURL) { 853 TEST_F(OfflinePageModelImplTest, GetPagesByOnlineURL) {
857 SavePage(kTestUrl, kTestClientId1); 854 SavePage(kTestUrl, kTestClientId1);
858 SavePage(kTestUrl2, kTestClientId2); 855 SavePage(kTestUrl2, kTestClientId2);
859 856
860 base::Optional<OfflinePageItem> page = GetPagesByOnlineURL(kTestUrl2); 857 base::Optional<OfflinePageItem> page = GetPagesByOnlineURL(kTestUrl2);
861 EXPECT_EQ(kTestUrl2, page->url); 858 EXPECT_EQ(kTestUrl2, page->url);
862 EXPECT_EQ(kTestClientId2, page->client_id); 859 EXPECT_EQ(kTestClientId2, page->client_id);
863 860
864 page = GetPagesByOnlineURL(kTestUrl); 861 page = GetPagesByOnlineURL(kTestUrl);
865 EXPECT_EQ(kTestUrl, page->url); 862 EXPECT_EQ(kTestUrl, page->url);
866 EXPECT_EQ(kTestClientId1, page->client_id); 863 EXPECT_EQ(kTestClientId1, page->client_id);
867 864
868 page = GetPagesByOnlineURL(GURL("http://foo")); 865 page = GetPagesByOnlineURL(GURL("http://foo"));
869 EXPECT_TRUE(base::nullopt == page); 866 EXPECT_TRUE(base::nullopt == page);
870 } 867 }
871 868
872 TEST_F(OfflinePageModelTest, CheckPagesExistOffline) { 869 TEST_F(OfflinePageModelImplTest, CheckPagesExistOffline) {
873 SavePage(kTestUrl, kTestClientId1); 870 SavePage(kTestUrl, kTestClientId1);
874 SavePage(kTestUrl2, kTestClientId2); 871 SavePage(kTestUrl2, kTestClientId2);
875 872
876 std::set<GURL> input; 873 std::set<GURL> input;
877 input.insert(kTestUrl); 874 input.insert(kTestUrl);
878 input.insert(kTestUrl2); 875 input.insert(kTestUrl2);
879 input.insert(kTestUrl3); 876 input.insert(kTestUrl3);
880 877
881 CheckPagesExistOfflineResult existing_pages = CheckPagesExistOffline(input); 878 CheckPagesExistOfflineResult existing_pages = CheckPagesExistOffline(input);
882 EXPECT_EQ(2U, existing_pages.size()); 879 EXPECT_EQ(2U, existing_pages.size());
883 EXPECT_NE(existing_pages.end(), existing_pages.find(kTestUrl)); 880 EXPECT_NE(existing_pages.end(), existing_pages.find(kTestUrl));
884 EXPECT_NE(existing_pages.end(), existing_pages.find(kTestUrl2)); 881 EXPECT_NE(existing_pages.end(), existing_pages.find(kTestUrl2));
885 EXPECT_EQ(existing_pages.end(), existing_pages.find(kTestUrl3)); 882 EXPECT_EQ(existing_pages.end(), existing_pages.find(kTestUrl3));
886 } 883 }
887 884
888 TEST_F(OfflinePageModelTest, CanSavePage) { 885 TEST_F(OfflinePageModelImplTest, CanSavePage) {
889 EXPECT_TRUE(OfflinePageModel::CanSavePage(GURL("http://foo"))); 886 EXPECT_TRUE(OfflinePageModel::CanSavePage(GURL("http://foo")));
890 EXPECT_TRUE(OfflinePageModel::CanSavePage(GURL("https://foo"))); 887 EXPECT_TRUE(OfflinePageModel::CanSavePage(GURL("https://foo")));
891 EXPECT_FALSE(OfflinePageModel::CanSavePage(GURL("file:///foo"))); 888 EXPECT_FALSE(OfflinePageModel::CanSavePage(GURL("file:///foo")));
892 EXPECT_FALSE(OfflinePageModel::CanSavePage(GURL("data:image/png;base64,ab"))); 889 EXPECT_FALSE(OfflinePageModel::CanSavePage(GURL("data:image/png;base64,ab")));
893 EXPECT_FALSE(OfflinePageModel::CanSavePage(GURL("chrome://version"))); 890 EXPECT_FALSE(OfflinePageModel::CanSavePage(GURL("chrome://version")));
894 EXPECT_FALSE(OfflinePageModel::CanSavePage(GURL("chrome-native://newtab/"))); 891 EXPECT_FALSE(OfflinePageModel::CanSavePage(GURL("chrome-native://newtab/")));
895 } 892 }
896 893
897 TEST_F(OfflinePageModelTest, ClearAll) { 894 TEST_F(OfflinePageModelImplTest, ClearAll) {
898 SavePage(kTestUrl, kTestClientId1); 895 SavePage(kTestUrl, kTestClientId1);
899 SavePage(kTestUrl2, kTestClientId2); 896 SavePage(kTestUrl2, kTestClientId2);
900 897
901 const std::vector<OfflinePageItem>& offline_pages = GetAllPages(); 898 const std::vector<OfflinePageItem>& offline_pages = GetAllPages();
902 EXPECT_EQ(2UL, offline_pages.size()); 899 EXPECT_EQ(2UL, offline_pages.size());
903 EXPECT_EQ(2UL, GetStore()->GetAllPages().size()); 900 EXPECT_EQ(2UL, GetStore()->GetAllPages().size());
904 base::FilePath archiver_path = offline_pages[0].file_path; 901 base::FilePath archiver_path = offline_pages[0].file_path;
905 EXPECT_TRUE(base::PathExists(archiver_path)); 902 EXPECT_TRUE(base::PathExists(archiver_path));
906 903
907 // ClearAll should delete all the files and wipe out both cache and store. 904 // ClearAll should delete all the files and wipe out both cache and store.
908 model()->ClearAll( 905 model()->ClearAll(
909 base::Bind(&OfflinePageModelTest::OnClearAllDone, AsWeakPtr())); 906 base::Bind(&OfflinePageModelImplTest::OnClearAllDone, AsWeakPtr()));
910 PumpLoop(); 907 PumpLoop();
911 EXPECT_EQ(0UL, GetAllPages().size()); 908 EXPECT_EQ(0UL, GetAllPages().size());
912 EXPECT_EQ(0UL, GetStore()->GetAllPages().size()); 909 EXPECT_EQ(0UL, GetStore()->GetAllPages().size());
913 EXPECT_FALSE(base::PathExists(archiver_path)); 910 EXPECT_FALSE(base::PathExists(archiver_path));
914 911
915 // The model should reload the store after the reset. All model operations 912 // The model should reload the store after the reset. All model operations
916 // should continue to work. 913 // should continue to work.
917 SavePage(kTestUrl2, kTestClientId2); 914 SavePage(kTestUrl2, kTestClientId2);
918 EXPECT_EQ(1UL, GetAllPages().size()); 915 EXPECT_EQ(1UL, GetAllPages().size());
919 EXPECT_EQ(1UL, GetStore()->GetAllPages().size()); 916 EXPECT_EQ(1UL, GetStore()->GetAllPages().size());
920 } 917 }
921 918
922 TEST_F(OfflinePageModelTest, SaveRetrieveMultipleClientIds) { 919 TEST_F(OfflinePageModelImplTest, SaveRetrieveMultipleClientIds) {
923 EXPECT_FALSE(HasPages(kTestClientNamespace)); 920 EXPECT_FALSE(HasPages(kTestClientNamespace));
924 SavePage(kTestUrl, kTestClientId1); 921 SavePage(kTestUrl, kTestClientId1);
925 int64_t offline1 = last_save_offline_id(); 922 int64_t offline1 = last_save_offline_id();
926 EXPECT_TRUE(HasPages(kTestClientNamespace)); 923 EXPECT_TRUE(HasPages(kTestClientNamespace));
927 924
928 SavePage(kTestUrl, kTestClientId1); 925 SavePage(kTestUrl, kTestClientId1);
929 int64_t offline2 = last_save_offline_id(); 926 int64_t offline2 = last_save_offline_id();
930 927
931 EXPECT_NE(offline1, offline2); 928 EXPECT_NE(offline1, offline2);
932 929
933 const std::vector<int64_t> ids = GetOfflineIdsForClientId(kTestClientId1); 930 const std::vector<int64_t> ids = GetOfflineIdsForClientId(kTestClientId1);
934 931
935 EXPECT_EQ(2UL, ids.size()); 932 EXPECT_EQ(2UL, ids.size());
936 933
937 std::set<int64_t> id_set; 934 std::set<int64_t> id_set;
938 for (size_t i = 0; i < ids.size(); i++) { 935 for (size_t i = 0; i < ids.size(); i++) {
939 id_set.insert(ids[i]); 936 id_set.insert(ids[i]);
940 } 937 }
941 938
942 EXPECT_TRUE(id_set.find(offline1) != id_set.end()); 939 EXPECT_TRUE(id_set.find(offline1) != id_set.end());
943 EXPECT_TRUE(id_set.find(offline2) != id_set.end()); 940 EXPECT_TRUE(id_set.find(offline2) != id_set.end());
944 } 941 }
945 942
946 TEST_F(OfflinePageModelTest, GetBestPage) { 943 TEST_F(OfflinePageModelImplTest, GetBestPage) {
947 // We will save 3 pages - two for the same URL, and one for a different URL. 944 // We will save 3 pages - two for the same URL, and one for a different URL.
948 // Correct behavior will pick the most recently saved page for the correct 945 // Correct behavior will pick the most recently saved page for the correct
949 // URL. 946 // URL.
950 std::pair<SavePageResult, int64_t> saved_pages[3]; 947 std::pair<SavePageResult, int64_t> saved_pages[3];
951 saved_pages[0] = SavePage(kTestUrl, kTestClientId1); 948 saved_pages[0] = SavePage(kTestUrl, kTestClientId1);
952 saved_pages[1] = SavePage(kTestUrl, kTestClientId1); 949 saved_pages[1] = SavePage(kTestUrl, kTestClientId1);
953 saved_pages[2] = SavePage(kTestUrl2, kTestClientId2); 950 saved_pages[2] = SavePage(kTestUrl2, kTestClientId2);
954 951
955 for (const auto& save_result : saved_pages) { 952 for (const auto& save_result : saved_pages) {
956 ASSERT_EQ(OfflinePageModel::SavePageResult::SUCCESS, 953 ASSERT_EQ(OfflinePageModel::SavePageResult::SUCCESS,
957 std::get<0>(save_result)); 954 std::get<0>(save_result));
958 } 955 }
959 956
960 const OfflinePageItem* offline_page = 957 const OfflinePageItem* offline_page =
961 model()->MaybeGetBestPageForOnlineURL(kTestUrl); 958 model()->MaybeGetBestPageForOnlineURL(kTestUrl);
962 ASSERT_TRUE(nullptr != offline_page); 959 ASSERT_TRUE(nullptr != offline_page);
963 960
964 EXPECT_EQ(std::get<1>(saved_pages[1]), offline_page->offline_id); 961 EXPECT_EQ(std::get<1>(saved_pages[1]), offline_page->offline_id);
965 } 962 }
966 963
967 TEST_F(OfflinePageModelTest, ExpirePages) { 964 TEST_F(OfflinePageModelImplTest, ExpirePages) {
968 // We will save 3 pages and then expire 2 of them. 965 // We will save 3 pages and then expire 2 of them.
969 std::pair<SavePageResult, int64_t> saved_pages[3]; 966 std::pair<SavePageResult, int64_t> saved_pages[3];
970 saved_pages[0] = SavePage(kTestUrl, kTestClientId1); 967 saved_pages[0] = SavePage(kTestUrl, kTestClientId1);
971 saved_pages[1] = SavePage(kTestUrl2, kTestClientId2); 968 saved_pages[1] = SavePage(kTestUrl2, kTestClientId2);
972 saved_pages[2] = SavePage(kTestUrl3, kTestClientId3); 969 saved_pages[2] = SavePage(kTestUrl3, kTestClientId3);
973 970
974 for (const auto& save_result : saved_pages) { 971 for (const auto& save_result : saved_pages) {
975 ASSERT_EQ(OfflinePageModel::SavePageResult::SUCCESS, 972 ASSERT_EQ(OfflinePageModel::SavePageResult::SUCCESS,
976 std::get<0>(save_result)); 973 std::get<0>(save_result));
977 } 974 }
978 975
979 // First two pages will be expired. 976 // First two pages will be expired.
980 std::vector<int64_t> pages_to_expire = {std::get<1>(saved_pages[0]), 977 std::vector<int64_t> pages_to_expire = {std::get<1>(saved_pages[0]),
981 std::get<1>(saved_pages[1])}; 978 std::get<1>(saved_pages[1])};
982 // Pages are marked as expired if they have an expiration_time set. 979 // Pages are marked as expired if they have an expiration_time set.
983 base::Time expiration_time = 980 base::Time expiration_time =
984 base::Time::Now() + base::TimeDelta::FromMinutes(5); 981 base::Time::Now() + base::TimeDelta::FromMinutes(5);
985 982
986 model()->ExpirePages( 983 model()->ExpirePages(
987 pages_to_expire, expiration_time, 984 pages_to_expire, expiration_time,
988 base::Bind(&OfflinePageModelTest::OnPagesExpired, AsWeakPtr())); 985 base::Bind(&OfflinePageModelImplTest::OnPagesExpired, AsWeakPtr()));
989 PumpLoop(); 986 PumpLoop();
990 987
991 const std::vector<OfflinePageItem>& offline_pages = GetAllPages(); 988 const std::vector<OfflinePageItem>& offline_pages = GetAllPages();
992 for (const auto& offline_page : offline_pages) { 989 for (const auto& offline_page : offline_pages) {
993 if (std::find(pages_to_expire.begin(), pages_to_expire.end(), 990 if (std::find(pages_to_expire.begin(), pages_to_expire.end(),
994 offline_page.offline_id) != pages_to_expire.end()) { 991 offline_page.offline_id) != pages_to_expire.end()) {
995 EXPECT_EQ(expiration_time, offline_page.expiration_time); 992 EXPECT_EQ(expiration_time, offline_page.expiration_time);
996 EXPECT_TRUE(offline_page.IsExpired()); 993 EXPECT_TRUE(offline_page.IsExpired());
997 } else { 994 } else {
998 EXPECT_EQ(base::Time(), offline_page.expiration_time); 995 EXPECT_EQ(base::Time(), offline_page.expiration_time);
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1055 std::unique_ptr<base::FeatureList> feature_list2(new base::FeatureList); 1052 std::unique_ptr<base::FeatureList> feature_list2(new base::FeatureList);
1056 feature_list2->InitializeFromCommandLine( 1053 feature_list2->InitializeFromCommandLine(
1057 std::string(offline_pages::kOfflineBookmarksFeature.name) + "," + 1054 std::string(offline_pages::kOfflineBookmarksFeature.name) + "," +
1058 offline_pages::kOfflinePagesBackgroundLoadingFeature.name, 1055 offline_pages::kOfflinePagesBackgroundLoadingFeature.name,
1059 ""); 1056 "");
1060 base::FeatureList::SetInstance(std::move(feature_list2)); 1057 base::FeatureList::SetInstance(std::move(feature_list2));
1061 EXPECT_TRUE(offline_pages::IsOfflinePagesBackgroundLoadingEnabled()); 1058 EXPECT_TRUE(offline_pages::IsOfflinePagesBackgroundLoadingEnabled());
1062 } 1059 }
1063 1060
1064 } // namespace offline_pages 1061 } // namespace offline_pages
OLDNEW
« no previous file with comments | « components/offline_pages/offline_page_model_impl.cc ('k') | components/offline_pages/offline_page_model_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698