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 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 } | 250 } |
251 | 251 |
252 void PrerenderingOfflinerTest::OnProgress(const SavePageRequest& request, | 252 void PrerenderingOfflinerTest::OnProgress(const SavePageRequest& request, |
253 int64_t bytes) {} | 253 int64_t bytes) {} |
254 | 254 |
255 void PrerenderingOfflinerTest::OnCancel(const SavePageRequest& request) { | 255 void PrerenderingOfflinerTest::OnCancel(const SavePageRequest& request) { |
256 DCHECK(!cancel_callback_called_); | 256 DCHECK(!cancel_callback_called_); |
257 cancel_callback_called_ = true; | 257 cancel_callback_called_ = true; |
258 } | 258 } |
259 | 259 |
260 TEST_F(PrerenderingOfflinerTest, DISABLED_LoadAndSaveBadUrl) { | 260 TEST_F(PrerenderingOfflinerTest, LoadAndSaveBadUrl) { |
261 base::Time creation_time = base::Time::Now(); | 261 base::Time creation_time = base::Time::Now(); |
262 SavePageRequest request( | 262 SavePageRequest request( |
263 kRequestId, kFileUrl, kClientId, creation_time, kUserRequested); | 263 kRequestId, kFileUrl, kClientId, creation_time, kUserRequested); |
264 EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(), | 264 EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(), |
265 progress_callback())); | 265 progress_callback())); |
266 EXPECT_TRUE(loader()->IsIdle()); | 266 EXPECT_TRUE(loader()->IsIdle()); |
267 } | 267 } |
268 | 268 |
269 TEST_F(PrerenderingOfflinerTest, DISABLED_LoadAndSavePrerenderingDisabled) { | 269 TEST_F(PrerenderingOfflinerTest, LoadAndSavePrerenderingDisabled) { |
270 base::Time creation_time = base::Time::Now(); | 270 base::Time creation_time = base::Time::Now(); |
271 SavePageRequest request( | 271 SavePageRequest request( |
272 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 272 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
273 loader()->DisablePrerendering(); | 273 loader()->DisablePrerendering(); |
274 EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(), | 274 EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(), |
275 progress_callback())); | 275 progress_callback())); |
276 EXPECT_TRUE(loader()->IsIdle()); | 276 EXPECT_TRUE(loader()->IsIdle()); |
277 } | 277 } |
278 | 278 |
279 TEST_F(PrerenderingOfflinerTest, | 279 TEST_F(PrerenderingOfflinerTest, |
280 DISABLED_LoadAndSaveBlockThirdPartyCookiesForCustomTabs) { | 280 LoadAndSaveBlockThirdPartyCookiesForCustomTabs) { |
281 base::Time creation_time = base::Time::Now(); | 281 base::Time creation_time = base::Time::Now(); |
282 ClientId custom_tabs_client_id("custom_tabs", "88"); | 282 ClientId custom_tabs_client_id("custom_tabs", "88"); |
283 SavePageRequest request(kRequestId, kHttpUrl, custom_tabs_client_id, | 283 SavePageRequest request(kRequestId, kHttpUrl, custom_tabs_client_id, |
284 creation_time, kUserRequested); | 284 creation_time, kUserRequested); |
285 profile()->GetPrefs()->SetBoolean(prefs::kBlockThirdPartyCookies, true); | 285 profile()->GetPrefs()->SetBoolean(prefs::kBlockThirdPartyCookies, true); |
286 EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(), | 286 EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(), |
287 progress_callback())); | 287 progress_callback())); |
288 EXPECT_TRUE(loader()->IsIdle()); | 288 EXPECT_TRUE(loader()->IsIdle()); |
289 } | 289 } |
290 | 290 |
291 TEST_F(PrerenderingOfflinerTest, | 291 TEST_F(PrerenderingOfflinerTest, |
292 DISABLED_LoadAndSaveBlockOnDisabledPrerendererForCustomTabs) { | 292 LoadAndSaveBlockOnDisabledPrerendererForCustomTabs) { |
293 base::Time creation_time = base::Time::Now(); | 293 base::Time creation_time = base::Time::Now(); |
294 ClientId custom_tabs_client_id("custom_tabs", "88"); | 294 ClientId custom_tabs_client_id("custom_tabs", "88"); |
295 SavePageRequest request(kRequestId, kHttpUrl, custom_tabs_client_id, | 295 SavePageRequest request(kRequestId, kHttpUrl, custom_tabs_client_id, |
296 creation_time, kUserRequested); | 296 creation_time, kUserRequested); |
297 profile()->GetPrefs()->SetInteger( | 297 profile()->GetPrefs()->SetInteger( |
298 prefs::kNetworkPredictionOptions, | 298 prefs::kNetworkPredictionOptions, |
299 chrome_browser_net::NETWORK_PREDICTION_NEVER); | 299 chrome_browser_net::NETWORK_PREDICTION_NEVER); |
300 EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(), | 300 EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(), |
301 progress_callback())); | 301 progress_callback())); |
302 EXPECT_TRUE(loader()->IsIdle()); | 302 EXPECT_TRUE(loader()->IsIdle()); |
303 } | 303 } |
304 | 304 |
305 TEST_F(PrerenderingOfflinerTest, DISABLED_LoadAndSaveLoadStartedButFails) { | 305 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadStartedButFails) { |
306 base::Time creation_time = base::Time::Now(); | 306 base::Time creation_time = base::Time::Now(); |
307 SavePageRequest request( | 307 SavePageRequest request( |
308 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 308 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
309 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), | 309 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
310 progress_callback())); | 310 progress_callback())); |
311 EXPECT_FALSE(loader()->IsIdle()); | 311 EXPECT_FALSE(loader()->IsIdle()); |
312 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); | 312 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); |
313 | 313 |
314 loader()->CompleteLoadingAsFailed(); | 314 loader()->CompleteLoadingAsFailed(); |
315 PumpLoop(); | 315 PumpLoop(); |
316 EXPECT_TRUE(completion_callback_called()); | 316 EXPECT_TRUE(completion_callback_called()); |
317 EXPECT_EQ(Offliner::RequestStatus::LOADING_FAILED, request_status()); | 317 EXPECT_EQ(Offliner::RequestStatus::LOADING_FAILED, request_status()); |
318 EXPECT_TRUE(loader()->IsIdle()); | 318 EXPECT_TRUE(loader()->IsIdle()); |
319 EXPECT_FALSE(SaveInProgress()); | 319 EXPECT_FALSE(SaveInProgress()); |
320 } | 320 } |
321 | 321 |
322 TEST_F(PrerenderingOfflinerTest, DISABLED_CancelWhenLoading) { | 322 TEST_F(PrerenderingOfflinerTest, CancelWhenLoading) { |
323 base::Time creation_time = base::Time::Now(); | 323 base::Time creation_time = base::Time::Now(); |
324 SavePageRequest request( | 324 SavePageRequest request( |
325 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 325 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
326 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), | 326 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
327 progress_callback())); | 327 progress_callback())); |
328 EXPECT_FALSE(loader()->IsIdle()); | 328 EXPECT_FALSE(loader()->IsIdle()); |
329 | 329 |
330 offliner()->Cancel(cancel_callback()); | 330 offliner()->Cancel(cancel_callback()); |
331 PumpLoop(); | 331 PumpLoop(); |
332 EXPECT_TRUE(cancel_callback_called()); | 332 EXPECT_TRUE(cancel_callback_called()); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
427 | 427 |
428 loader()->CompleteLoadingAsCanceled(); | 428 loader()->CompleteLoadingAsCanceled(); |
429 PumpLoop(); | 429 PumpLoop(); |
430 EXPECT_TRUE(completion_callback_called()); | 430 EXPECT_TRUE(completion_callback_called()); |
431 EXPECT_EQ(Offliner::RequestStatus::LOADING_CANCELED, request_status()); | 431 EXPECT_EQ(Offliner::RequestStatus::LOADING_CANCELED, request_status()); |
432 EXPECT_FALSE(loader()->IsLoaded()); | 432 EXPECT_FALSE(loader()->IsLoaded()); |
433 // Note: save still in progress since it does not support canceling. | 433 // Note: save still in progress since it does not support canceling. |
434 EXPECT_TRUE(SaveInProgress()); | 434 EXPECT_TRUE(SaveInProgress()); |
435 } | 435 } |
436 | 436 |
437 TEST_F(PrerenderingOfflinerTest, | 437 TEST_F(PrerenderingOfflinerTest, ForegroundTransitionCancelsOnLowEndDevice) { |
438 DISABLED_ForegroundTransitionCancelsOnLowEndDevice) { | |
439 offliner()->SetLowEndDeviceForTesting(true); | 438 offliner()->SetLowEndDeviceForTesting(true); |
440 | 439 |
441 base::Time creation_time = base::Time::Now(); | 440 base::Time creation_time = base::Time::Now(); |
442 SavePageRequest request( | 441 SavePageRequest request( |
443 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 442 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
| 443 // LoadAndSave completes asynchronously, and notifies us via the |
| 444 // completion_callback() when it completes. |
444 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), | 445 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
445 progress_callback())); | 446 progress_callback())); |
446 EXPECT_FALSE(loader()->IsIdle()); | 447 EXPECT_FALSE(loader()->IsIdle()); |
447 | 448 |
448 offliner()->SetApplicationStateForTesting( | 449 offliner()->SetApplicationStateForTesting( |
449 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES); | 450 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES); |
450 | 451 |
| 452 // Wait until the completion callback arrives before checking postconditions. |
| 453 PumpLoop(); |
| 454 |
451 // Loading canceled on low-end device. | 455 // Loading canceled on low-end device. |
452 EXPECT_TRUE(loader()->IsIdle()); | 456 EXPECT_TRUE(loader()->IsIdle()); |
453 EXPECT_EQ(Offliner::RequestStatus::FOREGROUND_CANCELED, request_status()); | 457 EXPECT_EQ(Offliner::RequestStatus::FOREGROUND_CANCELED, request_status()); |
454 } | 458 } |
455 | 459 |
456 // TODO(crbug.com/712941): Flaky test. | 460 TEST_F(PrerenderingOfflinerTest, ForegroundTransitionIgnoredOnHighEndDevice) { |
457 TEST_F(PrerenderingOfflinerTest, | |
458 DISABLED_ForegroundTransitionIgnoredOnHighEndDevice) { | |
459 offliner()->SetLowEndDeviceForTesting(false); | 461 offliner()->SetLowEndDeviceForTesting(false); |
460 | 462 |
461 base::Time creation_time = base::Time::Now(); | 463 base::Time creation_time = base::Time::Now(); |
462 SavePageRequest request( | 464 SavePageRequest request( |
463 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 465 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
| 466 // LoadAndSave completes asynchronously, and notifies us via the |
| 467 // completion_callback() when it completes. |
464 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), | 468 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
465 progress_callback())); | 469 progress_callback())); |
466 EXPECT_FALSE(loader()->IsIdle()); | 470 EXPECT_FALSE(loader()->IsIdle()); |
467 | 471 |
468 offliner()->SetApplicationStateForTesting( | 472 offliner()->SetApplicationStateForTesting( |
469 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES); | 473 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES); |
470 | 474 |
| 475 // Wait until the completion callback arrives before checking postconditions. |
| 476 PumpLoop(); |
| 477 |
471 // Loader still loading since not low-end device. | 478 // Loader still loading since not low-end device. |
472 EXPECT_FALSE(loader()->IsIdle()); | 479 EXPECT_FALSE(loader()->IsIdle()); |
473 } | 480 } |
474 | 481 |
475 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithLowbarAndCompletedTriesMet) { | 482 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithLowbarAndCompletedTriesMet) { |
476 offliner()->SetLowEndDeviceForTesting(false); | 483 offliner()->SetLowEndDeviceForTesting(false); |
477 | 484 |
478 base::Time creation_time = base::Time::Now(); | 485 base::Time creation_time = base::Time::Now(); |
479 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, | 486 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
480 kUserRequested); | 487 kUserRequested); |
(...skipping 20 matching lines...) Expand all Loading... |
501 kUserRequested); | 508 kUserRequested); |
502 request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1); | 509 request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1); |
503 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), | 510 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
504 progress_callback())); | 511 progress_callback())); |
505 loader()->set_is_lowbar_met(true); | 512 loader()->set_is_lowbar_met(true); |
506 EXPECT_TRUE(offliner()->HandleTimeout(kRequestId)); | 513 EXPECT_TRUE(offliner()->HandleTimeout(kRequestId)); |
507 EXPECT_TRUE(loader()->start_snapshot_called()); | 514 EXPECT_TRUE(loader()->start_snapshot_called()); |
508 } | 515 } |
509 | 516 |
510 TEST_F(PrerenderingOfflinerTest, | 517 TEST_F(PrerenderingOfflinerTest, |
511 DISABLED_HandleTimeoutCompletedTriesMetWithoutLowbarMet) { | 518 HandleTimeoutCompletedTriesMetWithoutLowbarMet) { |
512 offliner()->SetLowEndDeviceForTesting(false); | 519 offliner()->SetLowEndDeviceForTesting(false); |
513 | 520 |
514 base::Time creation_time = base::Time::Now(); | 521 base::Time creation_time = base::Time::Now(); |
515 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, | 522 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
516 kUserRequested); | 523 kUserRequested); |
517 request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1); | 524 request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1); |
518 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), | 525 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
519 progress_callback())); | 526 progress_callback())); |
520 loader()->set_is_lowbar_met(false); | 527 loader()->set_is_lowbar_met(false); |
521 EXPECT_FALSE(offliner()->HandleTimeout(kRequestId)); | 528 EXPECT_FALSE(offliner()->HandleTimeout(kRequestId)); |
522 EXPECT_FALSE(loader()->start_snapshot_called()); | 529 EXPECT_FALSE(loader()->start_snapshot_called()); |
523 } | 530 } |
524 | 531 |
525 TEST_F(PrerenderingOfflinerTest, | 532 TEST_F(PrerenderingOfflinerTest, HandleTimeoutStartedTriesMetWithoutLowbarMet) { |
526 DISABLED_HandleTimeoutStartedTriesMetWithoutLowbarMet) { | |
527 offliner()->SetLowEndDeviceForTesting(false); | 533 offliner()->SetLowEndDeviceForTesting(false); |
528 | 534 |
529 base::Time creation_time = base::Time::Now(); | 535 base::Time creation_time = base::Time::Now(); |
530 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, | 536 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
531 kUserRequested); | 537 kUserRequested); |
532 request.set_started_attempt_count(policy()->GetMaxStartedTries() - 1); | 538 request.set_started_attempt_count(policy()->GetMaxStartedTries() - 1); |
533 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), | 539 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
534 progress_callback())); | 540 progress_callback())); |
535 loader()->set_is_lowbar_met(false); | 541 loader()->set_is_lowbar_met(false); |
536 EXPECT_FALSE(offliner()->HandleTimeout(kRequestId)); | 542 EXPECT_FALSE(offliner()->HandleTimeout(kRequestId)); |
537 EXPECT_FALSE(loader()->start_snapshot_called()); | 543 EXPECT_FALSE(loader()->start_snapshot_called()); |
538 } | 544 } |
539 | 545 |
540 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithLowbarAndStartedTriesMet) { | 546 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithLowbarAndStartedTriesMet) { |
541 offliner()->SetLowEndDeviceForTesting(false); | 547 offliner()->SetLowEndDeviceForTesting(false); |
542 | 548 |
543 base::Time creation_time = base::Time::Now(); | 549 base::Time creation_time = base::Time::Now(); |
544 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, | 550 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
545 kUserRequested); | 551 kUserRequested); |
546 request.set_started_attempt_count(policy()->GetMaxStartedTries() - 1); | 552 request.set_started_attempt_count(policy()->GetMaxStartedTries() - 1); |
547 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), | 553 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
548 progress_callback())); | 554 progress_callback())); |
549 loader()->set_is_lowbar_met(true); | 555 loader()->set_is_lowbar_met(true); |
550 EXPECT_TRUE(offliner()->HandleTimeout(kRequestId)); | 556 EXPECT_TRUE(offliner()->HandleTimeout(kRequestId)); |
551 EXPECT_TRUE(loader()->start_snapshot_called()); | 557 EXPECT_TRUE(loader()->start_snapshot_called()); |
552 } | 558 } |
553 | 559 |
554 TEST_F(PrerenderingOfflinerTest, DISABLED_HandleTimeoutWithOnlyLowbarMet) { | 560 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithOnlyLowbarMet) { |
555 offliner()->SetLowEndDeviceForTesting(false); | 561 offliner()->SetLowEndDeviceForTesting(false); |
556 | 562 |
557 base::Time creation_time = base::Time::Now(); | 563 base::Time creation_time = base::Time::Now(); |
558 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, | 564 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
559 kUserRequested); | 565 kUserRequested); |
560 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), | 566 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
561 progress_callback())); | 567 progress_callback())); |
562 loader()->set_is_lowbar_met(true); | 568 loader()->set_is_lowbar_met(true); |
563 EXPECT_FALSE(offliner()->HandleTimeout(kRequestId)); | 569 EXPECT_FALSE(offliner()->HandleTimeout(kRequestId)); |
564 EXPECT_FALSE(loader()->start_snapshot_called()); | 570 EXPECT_FALSE(loader()->start_snapshot_called()); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
611 PumpLoop(); | 617 PumpLoop(); |
612 EXPECT_EQ(Offliner::RequestStatus::SAVED, request_status()); | 618 EXPECT_EQ(Offliner::RequestStatus::SAVED, request_status()); |
613 | 619 |
614 // One extra part should be added if the flag is on. | 620 // One extra part should be added if the flag is on. |
615 content::MHTMLExtraParts* extra_parts = | 621 content::MHTMLExtraParts* extra_parts = |
616 content::MHTMLExtraParts::FromWebContents(loader()->web_contents()); | 622 content::MHTMLExtraParts::FromWebContents(loader()->web_contents()); |
617 EXPECT_EQ(extra_parts->size(), 1); | 623 EXPECT_EQ(extra_parts->size(), 1); |
618 } | 624 } |
619 | 625 |
620 } // namespace offline_pages | 626 } // namespace offline_pages |
OLD | NEW |