OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "chrome/browser/android/offline_pages/prerendering_offliner.h" | 5 #include "chrome/browser/android/offline_pages/prerendering_offliner.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 | 161 |
162 class PrerenderingOfflinerTest : public testing::Test { | 162 class PrerenderingOfflinerTest : public testing::Test { |
163 public: | 163 public: |
164 PrerenderingOfflinerTest(); | 164 PrerenderingOfflinerTest(); |
165 ~PrerenderingOfflinerTest() override; | 165 ~PrerenderingOfflinerTest() override; |
166 | 166 |
167 void SetUp() override; | 167 void SetUp() override; |
168 | 168 |
169 Profile* profile() { return &profile_; } | 169 Profile* profile() { return &profile_; } |
170 PrerenderingOffliner* offliner() const { return offliner_.get(); } | 170 PrerenderingOffliner* offliner() const { return offliner_.get(); } |
171 Offliner::CompletionCallback const callback() { | 171 Offliner::CompletionCallback const completion_callback() { |
172 return base::Bind(&PrerenderingOfflinerTest::OnCompletion, | 172 return base::Bind(&PrerenderingOfflinerTest::OnCompletion, |
173 base::Unretained(this)); | 173 base::Unretained(this)); |
174 } | 174 } |
| 175 Offliner::ProgressCallback const progress_callback() { |
| 176 return base::Bind(&PrerenderingOfflinerTest::OnProgress, |
| 177 base::Unretained(this)); |
| 178 } |
175 Offliner::CancelCallback const cancel_callback() { | 179 Offliner::CancelCallback const cancel_callback() { |
176 return base::Bind(&PrerenderingOfflinerTest::OnCancel, | 180 return base::Bind(&PrerenderingOfflinerTest::OnCancel, |
177 base::Unretained(this)); | 181 base::Unretained(this)); |
178 } | 182 } |
179 | 183 |
180 bool SaveInProgress() const { return model_->mock_saving(); } | 184 bool SaveInProgress() const { return model_->mock_saving(); } |
181 MockPrerenderingLoader* loader() { return loader_; } | 185 MockPrerenderingLoader* loader() { return loader_; } |
182 MockOfflinePageModel* model() { return model_; } | 186 MockOfflinePageModel* model() { return model_; } |
183 bool completion_callback_called() { return completion_callback_called_; } | 187 bool completion_callback_called() { return completion_callback_called_; } |
184 Offliner::RequestStatus request_status() { return request_status_; } | 188 Offliner::RequestStatus request_status() { return request_status_; } |
185 OfflinerPolicy* policy() { return policy_; } | 189 OfflinerPolicy* policy() { return policy_; } |
186 bool cancel_callback_called() { return cancel_callback_called_; } | 190 bool cancel_callback_called() { return cancel_callback_called_; } |
187 | 191 |
188 private: | 192 private: |
189 void OnCompletion(const SavePageRequest& request, | 193 void OnCompletion(const SavePageRequest& request, |
190 Offliner::RequestStatus status); | 194 Offliner::RequestStatus status); |
| 195 void OnProgress(const SavePageRequest& request, int64_t bytes); |
191 void OnCancel(int64_t offline_id); | 196 void OnCancel(int64_t offline_id); |
192 | 197 |
193 content::TestBrowserThreadBundle thread_bundle_; | 198 content::TestBrowserThreadBundle thread_bundle_; |
194 TestingProfile profile_; | 199 TestingProfile profile_; |
195 std::unique_ptr<PrerenderingOffliner> offliner_; | 200 std::unique_ptr<PrerenderingOffliner> offliner_; |
196 // Not owned. | 201 // Not owned. |
197 MockPrerenderingLoader* loader_; | 202 MockPrerenderingLoader* loader_; |
198 MockOfflinePageModel* model_; | 203 MockOfflinePageModel* model_; |
199 bool completion_callback_called_; | 204 bool completion_callback_called_; |
200 bool cancel_callback_called_; | 205 bool cancel_callback_called_; |
(...skipping 21 matching lines...) Expand all Loading... |
222 offliner_->SetLoaderForTesting(std::move(mock_loader)); | 227 offliner_->SetLoaderForTesting(std::move(mock_loader)); |
223 } | 228 } |
224 | 229 |
225 void PrerenderingOfflinerTest::OnCompletion(const SavePageRequest& request, | 230 void PrerenderingOfflinerTest::OnCompletion(const SavePageRequest& request, |
226 Offliner::RequestStatus status) { | 231 Offliner::RequestStatus status) { |
227 DCHECK(!completion_callback_called_); // Expect single callback per request. | 232 DCHECK(!completion_callback_called_); // Expect single callback per request. |
228 completion_callback_called_ = true; | 233 completion_callback_called_ = true; |
229 request_status_ = status; | 234 request_status_ = status; |
230 } | 235 } |
231 | 236 |
| 237 void PrerenderingOfflinerTest::OnProgress(const SavePageRequest& request, |
| 238 int64_t bytes) {} |
| 239 |
232 void PrerenderingOfflinerTest::OnCancel(int64_t offline_id) { | 240 void PrerenderingOfflinerTest::OnCancel(int64_t offline_id) { |
233 DCHECK(!cancel_callback_called_); | 241 DCHECK(!cancel_callback_called_); |
234 cancel_callback_called_ = true; | 242 cancel_callback_called_ = true; |
235 } | 243 } |
236 | 244 |
237 TEST_F(PrerenderingOfflinerTest, LoadAndSaveBadUrl) { | 245 TEST_F(PrerenderingOfflinerTest, LoadAndSaveBadUrl) { |
238 base::Time creation_time = base::Time::Now(); | 246 base::Time creation_time = base::Time::Now(); |
239 SavePageRequest request( | 247 SavePageRequest request( |
240 kRequestId, kFileUrl, kClientId, creation_time, kUserRequested); | 248 kRequestId, kFileUrl, kClientId, creation_time, kUserRequested); |
241 EXPECT_FALSE(offliner()->LoadAndSave(request, callback())); | 249 EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(), |
| 250 progress_callback())); |
242 EXPECT_TRUE(loader()->IsIdle()); | 251 EXPECT_TRUE(loader()->IsIdle()); |
243 } | 252 } |
244 | 253 |
245 TEST_F(PrerenderingOfflinerTest, LoadAndSavePrerenderingDisabled) { | 254 TEST_F(PrerenderingOfflinerTest, LoadAndSavePrerenderingDisabled) { |
246 base::Time creation_time = base::Time::Now(); | 255 base::Time creation_time = base::Time::Now(); |
247 SavePageRequest request( | 256 SavePageRequest request( |
248 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 257 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
249 loader()->DisablePrerendering(); | 258 loader()->DisablePrerendering(); |
250 EXPECT_FALSE(offliner()->LoadAndSave(request, callback())); | 259 EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(), |
| 260 progress_callback())); |
251 EXPECT_TRUE(loader()->IsIdle()); | 261 EXPECT_TRUE(loader()->IsIdle()); |
252 } | 262 } |
253 | 263 |
254 TEST_F(PrerenderingOfflinerTest, | 264 TEST_F(PrerenderingOfflinerTest, |
255 LoadAndSaveBlockThirdPartyCookiesForCustomTabs) { | 265 LoadAndSaveBlockThirdPartyCookiesForCustomTabs) { |
256 base::Time creation_time = base::Time::Now(); | 266 base::Time creation_time = base::Time::Now(); |
257 ClientId custom_tabs_client_id("custom_tabs", "88"); | 267 ClientId custom_tabs_client_id("custom_tabs", "88"); |
258 SavePageRequest request(kRequestId, kHttpUrl, custom_tabs_client_id, | 268 SavePageRequest request(kRequestId, kHttpUrl, custom_tabs_client_id, |
259 creation_time, kUserRequested); | 269 creation_time, kUserRequested); |
260 profile()->GetPrefs()->SetBoolean(prefs::kBlockThirdPartyCookies, true); | 270 profile()->GetPrefs()->SetBoolean(prefs::kBlockThirdPartyCookies, true); |
261 EXPECT_FALSE(offliner()->LoadAndSave(request, callback())); | 271 EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(), |
| 272 progress_callback())); |
262 EXPECT_TRUE(loader()->IsIdle()); | 273 EXPECT_TRUE(loader()->IsIdle()); |
263 } | 274 } |
264 | 275 |
265 TEST_F(PrerenderingOfflinerTest, | 276 TEST_F(PrerenderingOfflinerTest, |
266 LoadAndSaveBlockOnDisabledPrerendererForCustomTabs) { | 277 LoadAndSaveBlockOnDisabledPrerendererForCustomTabs) { |
267 base::Time creation_time = base::Time::Now(); | 278 base::Time creation_time = base::Time::Now(); |
268 ClientId custom_tabs_client_id("custom_tabs", "88"); | 279 ClientId custom_tabs_client_id("custom_tabs", "88"); |
269 SavePageRequest request(kRequestId, kHttpUrl, custom_tabs_client_id, | 280 SavePageRequest request(kRequestId, kHttpUrl, custom_tabs_client_id, |
270 creation_time, kUserRequested); | 281 creation_time, kUserRequested); |
271 profile()->GetPrefs()->SetInteger( | 282 profile()->GetPrefs()->SetInteger( |
272 prefs::kNetworkPredictionOptions, | 283 prefs::kNetworkPredictionOptions, |
273 chrome_browser_net::NETWORK_PREDICTION_NEVER); | 284 chrome_browser_net::NETWORK_PREDICTION_NEVER); |
274 EXPECT_FALSE(offliner()->LoadAndSave(request, callback())); | 285 EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(), |
| 286 progress_callback())); |
275 EXPECT_TRUE(loader()->IsIdle()); | 287 EXPECT_TRUE(loader()->IsIdle()); |
276 } | 288 } |
277 | 289 |
278 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadStartedButFails) { | 290 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadStartedButFails) { |
279 base::Time creation_time = base::Time::Now(); | 291 base::Time creation_time = base::Time::Now(); |
280 SavePageRequest request( | 292 SavePageRequest request( |
281 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 293 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
282 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 294 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 295 progress_callback())); |
283 EXPECT_FALSE(loader()->IsIdle()); | 296 EXPECT_FALSE(loader()->IsIdle()); |
284 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); | 297 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); |
285 | 298 |
286 loader()->CompleteLoadingAsFailed(); | 299 loader()->CompleteLoadingAsFailed(); |
287 PumpLoop(); | 300 PumpLoop(); |
288 EXPECT_TRUE(completion_callback_called()); | 301 EXPECT_TRUE(completion_callback_called()); |
289 EXPECT_EQ(Offliner::RequestStatus::LOADING_FAILED, request_status()); | 302 EXPECT_EQ(Offliner::RequestStatus::LOADING_FAILED, request_status()); |
290 EXPECT_TRUE(loader()->IsIdle()); | 303 EXPECT_TRUE(loader()->IsIdle()); |
291 EXPECT_FALSE(SaveInProgress()); | 304 EXPECT_FALSE(SaveInProgress()); |
292 } | 305 } |
293 | 306 |
294 TEST_F(PrerenderingOfflinerTest, CancelWhenLoading) { | 307 TEST_F(PrerenderingOfflinerTest, CancelWhenLoading) { |
295 base::Time creation_time = base::Time::Now(); | 308 base::Time creation_time = base::Time::Now(); |
296 SavePageRequest request( | 309 SavePageRequest request( |
297 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 310 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
298 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 311 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 312 progress_callback())); |
299 EXPECT_FALSE(loader()->IsIdle()); | 313 EXPECT_FALSE(loader()->IsIdle()); |
300 | 314 |
301 offliner()->Cancel(cancel_callback()); | 315 offliner()->Cancel(cancel_callback()); |
302 PumpLoop(); | 316 PumpLoop(); |
303 EXPECT_TRUE(cancel_callback_called()); | 317 EXPECT_TRUE(cancel_callback_called()); |
304 EXPECT_TRUE(loader()->IsIdle()); | 318 EXPECT_TRUE(loader()->IsIdle()); |
305 } | 319 } |
306 | 320 |
307 TEST_F(PrerenderingOfflinerTest, CancelWhenLoaded) { | 321 TEST_F(PrerenderingOfflinerTest, CancelWhenLoaded) { |
308 base::Time creation_time = base::Time::Now(); | 322 base::Time creation_time = base::Time::Now(); |
309 SavePageRequest request( | 323 SavePageRequest request( |
310 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 324 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
311 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 325 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 326 progress_callback())); |
312 EXPECT_FALSE(loader()->IsIdle()); | 327 EXPECT_FALSE(loader()->IsIdle()); |
313 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); | 328 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); |
314 | 329 |
315 loader()->CompleteLoadingAsLoaded(); | 330 loader()->CompleteLoadingAsLoaded(); |
316 PumpLoop(); | 331 PumpLoop(); |
317 EXPECT_FALSE(completion_callback_called()); | 332 EXPECT_FALSE(completion_callback_called()); |
318 EXPECT_TRUE(loader()->IsLoaded()); | 333 EXPECT_TRUE(loader()->IsLoaded()); |
319 EXPECT_TRUE(SaveInProgress()); | 334 EXPECT_TRUE(SaveInProgress()); |
320 | 335 |
321 offliner()->Cancel(cancel_callback()); | 336 offliner()->Cancel(cancel_callback()); |
322 PumpLoop(); | 337 PumpLoop(); |
323 EXPECT_FALSE(completion_callback_called()); | 338 EXPECT_FALSE(completion_callback_called()); |
324 EXPECT_TRUE(cancel_callback_called()); | 339 EXPECT_TRUE(cancel_callback_called()); |
325 EXPECT_FALSE(loader()->IsLoaded()); | 340 EXPECT_FALSE(loader()->IsLoaded()); |
326 // Note: save still in progress since it does not support canceling. | 341 // Note: save still in progress since it does not support canceling. |
327 EXPECT_TRUE(SaveInProgress()); | 342 EXPECT_TRUE(SaveInProgress()); |
328 | 343 |
329 // Subsequent save callback causes no harm (no crash and no callback). | 344 // Subsequent save callback causes no harm (no crash and no callback). |
330 model()->CompleteSavingAsArchiveCreationFailed(); | 345 model()->CompleteSavingAsArchiveCreationFailed(); |
331 PumpLoop(); | 346 PumpLoop(); |
332 EXPECT_FALSE(completion_callback_called()); | 347 EXPECT_FALSE(completion_callback_called()); |
333 EXPECT_TRUE(loader()->IsIdle()); | 348 EXPECT_TRUE(loader()->IsIdle()); |
334 EXPECT_FALSE(SaveInProgress()); | 349 EXPECT_FALSE(SaveInProgress()); |
335 } | 350 } |
336 | 351 |
337 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadedButSaveFails) { | 352 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadedButSaveFails) { |
338 base::Time creation_time = base::Time::Now(); | 353 base::Time creation_time = base::Time::Now(); |
339 SavePageRequest request( | 354 SavePageRequest request( |
340 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 355 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
341 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 356 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 357 progress_callback())); |
342 EXPECT_FALSE(loader()->IsIdle()); | 358 EXPECT_FALSE(loader()->IsIdle()); |
343 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); | 359 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); |
344 | 360 |
345 loader()->CompleteLoadingAsLoaded(); | 361 loader()->CompleteLoadingAsLoaded(); |
346 PumpLoop(); | 362 PumpLoop(); |
347 EXPECT_FALSE(completion_callback_called()); | 363 EXPECT_FALSE(completion_callback_called()); |
348 EXPECT_TRUE(loader()->IsLoaded()); | 364 EXPECT_TRUE(loader()->IsLoaded()); |
349 EXPECT_TRUE(SaveInProgress()); | 365 EXPECT_TRUE(SaveInProgress()); |
350 | 366 |
351 model()->CompleteSavingAsArchiveCreationFailed(); | 367 model()->CompleteSavingAsArchiveCreationFailed(); |
352 PumpLoop(); | 368 PumpLoop(); |
353 EXPECT_TRUE(completion_callback_called()); | 369 EXPECT_TRUE(completion_callback_called()); |
354 EXPECT_EQ(Offliner::RequestStatus::SAVE_FAILED, request_status()); | 370 EXPECT_EQ(Offliner::RequestStatus::SAVE_FAILED, request_status()); |
355 EXPECT_FALSE(loader()->IsLoaded()); | 371 EXPECT_FALSE(loader()->IsLoaded()); |
356 EXPECT_FALSE(SaveInProgress()); | 372 EXPECT_FALSE(SaveInProgress()); |
357 } | 373 } |
358 | 374 |
359 TEST_F(PrerenderingOfflinerTest, LoadAndSaveSuccessful) { | 375 TEST_F(PrerenderingOfflinerTest, LoadAndSaveSuccessful) { |
360 base::Time creation_time = base::Time::Now(); | 376 base::Time creation_time = base::Time::Now(); |
361 SavePageRequest request( | 377 SavePageRequest request( |
362 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 378 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
363 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 379 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 380 progress_callback())); |
364 EXPECT_FALSE(loader()->IsIdle()); | 381 EXPECT_FALSE(loader()->IsIdle()); |
365 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); | 382 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); |
366 | 383 |
367 loader()->CompleteLoadingAsLoaded(); | 384 loader()->CompleteLoadingAsLoaded(); |
368 PumpLoop(); | 385 PumpLoop(); |
369 EXPECT_FALSE(completion_callback_called()); | 386 EXPECT_FALSE(completion_callback_called()); |
370 EXPECT_TRUE(loader()->IsLoaded()); | 387 EXPECT_TRUE(loader()->IsLoaded()); |
371 EXPECT_TRUE(SaveInProgress()); | 388 EXPECT_TRUE(SaveInProgress()); |
372 | 389 |
373 model()->CompleteSavingAsSuccess(); | 390 model()->CompleteSavingAsSuccess(); |
374 PumpLoop(); | 391 PumpLoop(); |
375 EXPECT_TRUE(completion_callback_called()); | 392 EXPECT_TRUE(completion_callback_called()); |
376 EXPECT_EQ(Offliner::RequestStatus::SAVED, request_status()); | 393 EXPECT_EQ(Offliner::RequestStatus::SAVED, request_status()); |
377 EXPECT_FALSE(loader()->IsLoaded()); | 394 EXPECT_FALSE(loader()->IsLoaded()); |
378 EXPECT_FALSE(SaveInProgress()); | 395 EXPECT_FALSE(SaveInProgress()); |
379 } | 396 } |
380 | 397 |
381 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadedButThenCanceledFromLoader) { | 398 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadedButThenCanceledFromLoader) { |
382 base::Time creation_time = base::Time::Now(); | 399 base::Time creation_time = base::Time::Now(); |
383 SavePageRequest request( | 400 SavePageRequest request( |
384 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 401 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
385 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 402 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 403 progress_callback())); |
386 EXPECT_FALSE(loader()->IsIdle()); | 404 EXPECT_FALSE(loader()->IsIdle()); |
387 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); | 405 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); |
388 | 406 |
389 loader()->CompleteLoadingAsLoaded(); | 407 loader()->CompleteLoadingAsLoaded(); |
390 PumpLoop(); | 408 PumpLoop(); |
391 EXPECT_FALSE(completion_callback_called()); | 409 EXPECT_FALSE(completion_callback_called()); |
392 EXPECT_TRUE(loader()->IsLoaded()); | 410 EXPECT_TRUE(loader()->IsLoaded()); |
393 EXPECT_TRUE(SaveInProgress()); | 411 EXPECT_TRUE(SaveInProgress()); |
394 | 412 |
395 loader()->CompleteLoadingAsCanceled(); | 413 loader()->CompleteLoadingAsCanceled(); |
396 PumpLoop(); | 414 PumpLoop(); |
397 EXPECT_TRUE(completion_callback_called()); | 415 EXPECT_TRUE(completion_callback_called()); |
398 EXPECT_EQ(Offliner::RequestStatus::LOADING_CANCELED, request_status()); | 416 EXPECT_EQ(Offliner::RequestStatus::LOADING_CANCELED, request_status()); |
399 EXPECT_FALSE(loader()->IsLoaded()); | 417 EXPECT_FALSE(loader()->IsLoaded()); |
400 // Note: save still in progress since it does not support canceling. | 418 // Note: save still in progress since it does not support canceling. |
401 EXPECT_TRUE(SaveInProgress()); | 419 EXPECT_TRUE(SaveInProgress()); |
402 } | 420 } |
403 | 421 |
404 TEST_F(PrerenderingOfflinerTest, ForegroundTransitionCancelsOnLowEndDevice) { | 422 TEST_F(PrerenderingOfflinerTest, ForegroundTransitionCancelsOnLowEndDevice) { |
405 offliner()->SetLowEndDeviceForTesting(true); | 423 offliner()->SetLowEndDeviceForTesting(true); |
406 | 424 |
407 base::Time creation_time = base::Time::Now(); | 425 base::Time creation_time = base::Time::Now(); |
408 SavePageRequest request( | 426 SavePageRequest request( |
409 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 427 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
410 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 428 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 429 progress_callback())); |
411 EXPECT_FALSE(loader()->IsIdle()); | 430 EXPECT_FALSE(loader()->IsIdle()); |
412 | 431 |
413 offliner()->SetApplicationStateForTesting( | 432 offliner()->SetApplicationStateForTesting( |
414 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES); | 433 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES); |
415 | 434 |
416 // Loading canceled on low-end device. | 435 // Loading canceled on low-end device. |
417 EXPECT_TRUE(loader()->IsIdle()); | 436 EXPECT_TRUE(loader()->IsIdle()); |
418 EXPECT_EQ(Offliner::RequestStatus::FOREGROUND_CANCELED, request_status()); | 437 EXPECT_EQ(Offliner::RequestStatus::FOREGROUND_CANCELED, request_status()); |
419 } | 438 } |
420 | 439 |
421 TEST_F(PrerenderingOfflinerTest, ForegroundTransitionIgnoredOnHighEndDevice) { | 440 TEST_F(PrerenderingOfflinerTest, ForegroundTransitionIgnoredOnHighEndDevice) { |
422 offliner()->SetLowEndDeviceForTesting(false); | 441 offliner()->SetLowEndDeviceForTesting(false); |
423 | 442 |
424 base::Time creation_time = base::Time::Now(); | 443 base::Time creation_time = base::Time::Now(); |
425 SavePageRequest request( | 444 SavePageRequest request( |
426 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 445 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
427 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 446 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 447 progress_callback())); |
428 EXPECT_FALSE(loader()->IsIdle()); | 448 EXPECT_FALSE(loader()->IsIdle()); |
429 | 449 |
430 offliner()->SetApplicationStateForTesting( | 450 offliner()->SetApplicationStateForTesting( |
431 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES); | 451 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES); |
432 | 452 |
433 // Loader still loading since not low-end device. | 453 // Loader still loading since not low-end device. |
434 EXPECT_FALSE(loader()->IsIdle()); | 454 EXPECT_FALSE(loader()->IsIdle()); |
435 } | 455 } |
436 | 456 |
437 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithLowbarAndCompletedTriesMet) { | 457 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithLowbarAndCompletedTriesMet) { |
438 offliner()->SetLowEndDeviceForTesting(false); | 458 offliner()->SetLowEndDeviceForTesting(false); |
439 | 459 |
440 base::Time creation_time = base::Time::Now(); | 460 base::Time creation_time = base::Time::Now(); |
441 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, | 461 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
442 kUserRequested); | 462 kUserRequested); |
443 request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1); | 463 request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1); |
444 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 464 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 465 progress_callback())); |
445 loader()->set_is_lowbar_met(true); | 466 loader()->set_is_lowbar_met(true); |
446 EXPECT_TRUE(offliner()->HandleTimeout(request)); | 467 EXPECT_TRUE(offliner()->HandleTimeout(request)); |
447 EXPECT_TRUE(loader()->start_snapshot_called()); | 468 EXPECT_TRUE(loader()->start_snapshot_called()); |
448 } | 469 } |
449 | 470 |
450 TEST_F(PrerenderingOfflinerTest, | 471 TEST_F(PrerenderingOfflinerTest, |
451 HandleTimeoutWithLowbarAndCompletedTriesMetLowEndDevice) { | 472 HandleTimeoutWithLowbarAndCompletedTriesMetLowEndDevice) { |
452 offliner()->SetLowEndDeviceForTesting(true); | 473 offliner()->SetLowEndDeviceForTesting(true); |
453 | 474 |
454 base::Time creation_time = base::Time::Now(); | 475 base::Time creation_time = base::Time::Now(); |
455 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, | 476 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
456 kUserRequested); | 477 kUserRequested); |
457 request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1); | 478 request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1); |
458 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 479 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 480 progress_callback())); |
459 loader()->set_is_lowbar_met(true); | 481 loader()->set_is_lowbar_met(true); |
460 EXPECT_TRUE(offliner()->HandleTimeout(request)); | 482 EXPECT_TRUE(offliner()->HandleTimeout(request)); |
461 EXPECT_TRUE(loader()->start_snapshot_called()); | 483 EXPECT_TRUE(loader()->start_snapshot_called()); |
462 } | 484 } |
463 | 485 |
464 TEST_F(PrerenderingOfflinerTest, | 486 TEST_F(PrerenderingOfflinerTest, |
465 HandleTimeoutCompletedTriesMetWithoutLowbarMet) { | 487 HandleTimeoutCompletedTriesMetWithoutLowbarMet) { |
466 offliner()->SetLowEndDeviceForTesting(false); | 488 offliner()->SetLowEndDeviceForTesting(false); |
467 | 489 |
468 base::Time creation_time = base::Time::Now(); | 490 base::Time creation_time = base::Time::Now(); |
469 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, | 491 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
470 kUserRequested); | 492 kUserRequested); |
471 request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1); | 493 request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1); |
472 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 494 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 495 progress_callback())); |
473 loader()->set_is_lowbar_met(false); | 496 loader()->set_is_lowbar_met(false); |
474 EXPECT_FALSE(offliner()->HandleTimeout(request)); | 497 EXPECT_FALSE(offliner()->HandleTimeout(request)); |
475 EXPECT_FALSE(loader()->start_snapshot_called()); | 498 EXPECT_FALSE(loader()->start_snapshot_called()); |
476 } | 499 } |
477 | 500 |
478 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithLowbarAndStartedTriesMet) { | 501 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithLowbarAndStartedTriesMet) { |
479 offliner()->SetLowEndDeviceForTesting(false); | 502 offliner()->SetLowEndDeviceForTesting(false); |
480 | 503 |
481 base::Time creation_time = base::Time::Now(); | 504 base::Time creation_time = base::Time::Now(); |
482 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, | 505 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
483 kUserRequested); | 506 kUserRequested); |
484 request.set_started_attempt_count(policy()->GetMaxStartedTries() - 1); | 507 request.set_started_attempt_count(policy()->GetMaxStartedTries() - 1); |
485 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 508 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 509 progress_callback())); |
486 loader()->set_is_lowbar_met(true); | 510 loader()->set_is_lowbar_met(true); |
487 EXPECT_TRUE(offliner()->HandleTimeout(request)); | 511 EXPECT_TRUE(offliner()->HandleTimeout(request)); |
488 EXPECT_TRUE(loader()->start_snapshot_called()); | 512 EXPECT_TRUE(loader()->start_snapshot_called()); |
489 } | 513 } |
490 | 514 |
491 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithOnlyLowbarMet) { | 515 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithOnlyLowbarMet) { |
492 offliner()->SetLowEndDeviceForTesting(false); | 516 offliner()->SetLowEndDeviceForTesting(false); |
493 | 517 |
494 base::Time creation_time = base::Time::Now(); | 518 base::Time creation_time = base::Time::Now(); |
495 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, | 519 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
496 kUserRequested); | 520 kUserRequested); |
497 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 521 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 522 progress_callback())); |
498 loader()->set_is_lowbar_met(true); | 523 loader()->set_is_lowbar_met(true); |
499 EXPECT_FALSE(offliner()->HandleTimeout(request)); | 524 EXPECT_FALSE(offliner()->HandleTimeout(request)); |
500 EXPECT_FALSE(loader()->start_snapshot_called()); | 525 EXPECT_FALSE(loader()->start_snapshot_called()); |
501 } | 526 } |
502 | 527 |
503 } // namespace offline_pages | 528 } // namespace offline_pages |
OLD | NEW |