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

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

Powered by Google App Engine
This is Rietveld 408576698