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

Side by Side Diff: chrome/browser/android/offline_pages/offline_page_request_job_unittest.cc

Issue 2362033002: Showing previews UI for Offline Previews (Closed)
Patch Set: megjablon comments rebase Created 4 years, 2 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 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/offline_page_request_job.h" 5 #include "chrome/browser/android/offline_pages/offline_page_request_job.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/feature_list.h" 8 #include "base/feature_list.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 231
232 void SimulateHasNetworkConnectivity(bool has_connectivity); 232 void SimulateHasNetworkConnectivity(bool has_connectivity);
233 void RunUntilIdle(); 233 void RunUntilIdle();
234 234
235 void InterceptRequest(const GURL& url, 235 void InterceptRequest(const GURL& url,
236 const std::string& method, 236 const std::string& method,
237 const std::string& extra_header_name, 237 const std::string& extra_header_name,
238 const std::string& extra_header_value, 238 const std::string& extra_header_value,
239 content::ResourceType resource_type); 239 content::ResourceType resource_type);
240 240
241 void VerifyInfo(bool should_use_offline, int64_t offline_id);
242
241 void ExpectAggregatedRequestResultHistogram( 243 void ExpectAggregatedRequestResultHistogram(
242 OfflinePageRequestJob::AggregatedRequestResult result); 244 OfflinePageRequestJob::AggregatedRequestResult result);
243 245
244 net::TestURLRequestContext* url_request_context() { 246 net::TestURLRequestContext* url_request_context() {
245 return test_url_request_context_.get(); 247 return test_url_request_context_.get();
246 } 248 }
247 Profile* profile() { return profile_; } 249 Profile* profile() { return profile_; }
248 OfflinePageTabHelper* offline_page_tab_helper() const { 250 OfflinePageTabHelper* offline_page_tab_helper() const {
249 return offline_page_tab_helper_; 251 return offline_page_tab_helper_;
250 } 252 }
(...skipping 13 matching lines...) Expand all
264 content::ResourceType resource_type); 266 content::ResourceType resource_type);
265 void ReadCompleted(int bytes_read); 267 void ReadCompleted(int bytes_read);
266 268
267 // Runs on IO thread. 269 // Runs on IO thread.
268 void InterceptRequestOnIO(const GURL& url, 270 void InterceptRequestOnIO(const GURL& url,
269 const std::string& method, 271 const std::string& method,
270 const std::string& extra_header_name, 272 const std::string& extra_header_name,
271 const std::string& extra_header_value, 273 const std::string& extra_header_value,
272 content::ResourceType resource_type); 274 content::ResourceType resource_type);
273 void ReadCompletedOnIO(int bytes_read); 275 void ReadCompletedOnIO(int bytes_read);
276 void VerifyInfoOnIO(bool should_use_offline, int64_t offline_id);
274 277
275 content::TestBrowserThreadBundle thread_bundle_; 278 content::TestBrowserThreadBundle thread_bundle_;
276 base::SimpleTestClock clock_; 279 base::SimpleTestClock clock_;
277 std::unique_ptr<TestNetworkChangeNotifier> network_change_notifier_; 280 std::unique_ptr<TestNetworkChangeNotifier> network_change_notifier_;
278 std::unique_ptr<net::TestURLRequestContext> test_url_request_context_; 281 std::unique_ptr<net::TestURLRequestContext> test_url_request_context_;
279 net::URLRequestJobFactoryImpl url_request_job_factory_; 282 net::URLRequestJobFactoryImpl url_request_job_factory_;
280 std::unique_ptr<net::URLRequestInterceptingJobFactory> 283 std::unique_ptr<net::URLRequestInterceptingJobFactory>
281 intercepting_job_factory_; 284 intercepting_job_factory_;
282 std::unique_ptr<TestURLRequestDelegate> url_request_delegate_; 285 std::unique_ptr<TestURLRequestDelegate> url_request_delegate_;
283 std::unique_ptr<TestPreviewsDecider> test_previews_decider_; 286 std::unique_ptr<TestPreviewsDecider> test_previews_decider_;
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 content::ResourceType resource_type) { 469 content::ResourceType resource_type) {
467 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 470 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
468 471
469 content::BrowserThread::PostTask( 472 content::BrowserThread::PostTask(
470 content::BrowserThread::IO, FROM_HERE, 473 content::BrowserThread::IO, FROM_HERE,
471 base::Bind(&OfflinePageRequestJobTest::InterceptRequestOnIO, 474 base::Bind(&OfflinePageRequestJobTest::InterceptRequestOnIO,
472 base::Unretained(this), url, method, extra_header_name, 475 base::Unretained(this), url, method, extra_header_name,
473 extra_header_value, resource_type)); 476 extra_header_value, resource_type));
474 } 477 }
475 478
479 void OfflinePageRequestJobTest::VerifyInfoOnIO(bool should_use_offline,
480 int64_t offline_id) {
481 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
482 EXPECT_EQ(should_use_offline, !!LoadedOfflinePageInfo::GetInfo(*request_));
483 if (should_use_offline) {
484 EXPECT_EQ(
485 offline_id,
486 LoadedOfflinePageInfo::GetInfo(*request_)->offline_page()->offline_id);
487 }
488 }
489
490 void OfflinePageRequestJobTest::VerifyInfo(bool should_use_offline,
491 int64_t offline_id) {
492 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
493
494 content::BrowserThread::PostTask(
495 content::BrowserThread::IO, FROM_HERE,
496 base::Bind(&OfflinePageRequestJobTest::VerifyInfoOnIO,
497 base::Unretained(this), should_use_offline, offline_id));
498 }
499
476 void OfflinePageRequestJobTest::ReadCompletedOnIO(int bytes_read) { 500 void OfflinePageRequestJobTest::ReadCompletedOnIO(int bytes_read) {
477 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 501 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
478 502
479 content::BrowserThread::PostTask( 503 content::BrowserThread::PostTask(
480 content::BrowserThread::UI, FROM_HERE, 504 content::BrowserThread::UI, FROM_HERE,
481 base::Bind(&OfflinePageRequestJobTest::ReadCompleted, 505 base::Bind(&OfflinePageRequestJobTest::ReadCompleted,
482 base::Unretained(this), bytes_read)); 506 base::Unretained(this), bytes_read));
483 } 507 }
484 508
485 void OfflinePageRequestJobTest::ReadCompleted(int bytes_read) { 509 void OfflinePageRequestJobTest::ReadCompleted(int bytes_read) {
486 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 510 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
487 511
488 bytes_read_ = bytes_read; 512 bytes_read_ = bytes_read;
489 base::ThreadTaskRunnerHandle::Get()->PostTask( 513 base::ThreadTaskRunnerHandle::Get()->PostTask(
490 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); 514 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
491 } 515 }
492 516
493 TEST_F(OfflinePageRequestJobTest, FailedToCreateRequestJob) { 517 TEST_F(OfflinePageRequestJobTest, FailedToCreateRequestJob) {
494 SimulateHasNetworkConnectivity(false); 518 SimulateHasNetworkConnectivity(false);
495 519
496 // Must be http/https URL. 520 // Must be http/https URL.
497 InterceptRequest(GURL("ftp://host/doc"), "GET", "", "", 521 InterceptRequest(GURL("ftp://host/doc"), "GET", "", "",
498 content::RESOURCE_TYPE_MAIN_FRAME); 522 content::RESOURCE_TYPE_MAIN_FRAME);
499 base::RunLoop().Run(); 523 base::RunLoop().Run();
500 EXPECT_EQ(0, bytes_read()); 524 EXPECT_EQ(0, bytes_read());
501 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 525 VerifyInfo(false, 0);
526 base::RunLoop().RunUntilIdle();
502 527
503 InterceptRequest(GURL("file:///path/doc"), "GET", "", "", 528 InterceptRequest(GURL("file:///path/doc"), "GET", "", "",
504 content::RESOURCE_TYPE_MAIN_FRAME); 529 content::RESOURCE_TYPE_MAIN_FRAME);
505 base::RunLoop().Run(); 530 base::RunLoop().Run();
506 EXPECT_EQ(0, bytes_read()); 531 EXPECT_EQ(0, bytes_read());
507 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 532 VerifyInfo(false, 0);
533 base::RunLoop().RunUntilIdle();
508 534
509 // Must be GET method. 535 // Must be GET method.
510 InterceptRequest( 536 InterceptRequest(
511 kTestUrl, "POST", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 537 kTestUrl, "POST", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
512 base::RunLoop().Run(); 538 base::RunLoop().Run();
513 EXPECT_EQ(0, bytes_read()); 539 EXPECT_EQ(0, bytes_read());
514 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 540 VerifyInfo(false, 0);
541 base::RunLoop().RunUntilIdle();
515 542
516 InterceptRequest( 543 InterceptRequest(
517 kTestUrl, "HEAD", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 544 kTestUrl, "HEAD", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
518 base::RunLoop().Run(); 545 base::RunLoop().Run();
519 EXPECT_EQ(0, bytes_read()); 546 EXPECT_EQ(0, bytes_read());
520 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 547 VerifyInfo(false, 0);
548 base::RunLoop().RunUntilIdle();
521 549
522 // Must be main resource. 550 // Must be main resource.
523 InterceptRequest( 551 InterceptRequest(
524 kTestUrl, "POST", "", "", content::RESOURCE_TYPE_SUB_FRAME); 552 kTestUrl, "POST", "", "", content::RESOURCE_TYPE_SUB_FRAME);
525 base::RunLoop().Run(); 553 base::RunLoop().Run();
526 EXPECT_EQ(0, bytes_read()); 554 EXPECT_EQ(0, bytes_read());
527 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 555 VerifyInfo(false, 0);
556 base::RunLoop().RunUntilIdle();
528 557
529 InterceptRequest( 558 InterceptRequest(
530 kTestUrl, "POST", "", "", content::RESOURCE_TYPE_IMAGE); 559 kTestUrl, "POST", "", "", content::RESOURCE_TYPE_IMAGE);
531 base::RunLoop().Run(); 560 base::RunLoop().Run();
532 EXPECT_EQ(0, bytes_read()); 561 EXPECT_EQ(0, bytes_read());
533 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 562 VerifyInfo(false, 0);
563 base::RunLoop().RunUntilIdle();
534 } 564 }
535 565
536 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnDisconnectedNetwork) { 566 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnDisconnectedNetwork) {
537 SimulateHasNetworkConnectivity(false); 567 SimulateHasNetworkConnectivity(false);
538 568
539 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 569 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
540 base::RunLoop().Run(); 570 base::RunLoop().Run();
541 571
542 EXPECT_EQ(kTestFileSize2, bytes_read()); 572 EXPECT_EQ(kTestFileSize2, bytes_read());
543 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 573 VerifyInfo(true, offline_id2());
544 EXPECT_EQ(offline_id2(), 574 base::RunLoop().RunUntilIdle();
545 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 575
546 ExpectAggregatedRequestResultHistogram( 576 ExpectAggregatedRequestResultHistogram(
547 OfflinePageRequestJob::AggregatedRequestResult:: 577 OfflinePageRequestJob::AggregatedRequestResult::
548 SHOW_OFFLINE_ON_DISCONNECTED_NETWORK); 578 SHOW_OFFLINE_ON_DISCONNECTED_NETWORK);
549 } 579 }
550 580
551 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnDisconnectedNetwork) { 581 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnDisconnectedNetwork) {
552 SimulateHasNetworkConnectivity(false); 582 SimulateHasNetworkConnectivity(false);
553 583
554 InterceptRequest(kTestUrl2, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 584 InterceptRequest(kTestUrl2, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
555 base::RunLoop().Run(); 585 base::RunLoop().Run();
556 586
557 EXPECT_EQ(0, bytes_read()); 587 EXPECT_EQ(0, bytes_read());
558 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 588 VerifyInfo(false, 0);
589 base::RunLoop().RunUntilIdle();
590
559 ExpectAggregatedRequestResultHistogram( 591 ExpectAggregatedRequestResultHistogram(
560 OfflinePageRequestJob::AggregatedRequestResult:: 592 OfflinePageRequestJob::AggregatedRequestResult::
561 PAGE_NOT_FOUND_ON_DISCONNECTED_NETWORK); 593 PAGE_NOT_FOUND_ON_DISCONNECTED_NETWORK);
562 } 594 }
563 595
564 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnProhibitivelySlowNetwork) { 596 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnProhibitivelySlowNetwork) {
565 SimulateHasNetworkConnectivity(true); 597 SimulateHasNetworkConnectivity(true);
566 598
567 test_previews_decider()->set_should_allow_preview(true); 599 test_previews_decider()->set_should_allow_preview(true);
568 600
569 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 601 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
570 base::RunLoop().Run(); 602 base::RunLoop().Run();
571 603
572 EXPECT_EQ(kTestFileSize2, bytes_read()); 604 EXPECT_EQ(kTestFileSize2, bytes_read());
573 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 605 VerifyInfo(true, offline_id2());
574 EXPECT_EQ(offline_id2(), 606 base::RunLoop().RunUntilIdle();
575 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 607
576 ExpectAggregatedRequestResultHistogram( 608 ExpectAggregatedRequestResultHistogram(
577 OfflinePageRequestJob::AggregatedRequestResult:: 609 OfflinePageRequestJob::AggregatedRequestResult::
578 SHOW_OFFLINE_ON_PROHIBITIVELY_SLOW_NETWORK); 610 SHOW_OFFLINE_ON_PROHIBITIVELY_SLOW_NETWORK);
579 test_previews_decider()->set_should_allow_preview(false); 611 test_previews_decider()->set_should_allow_preview(false);
580 } 612 }
581 613
582 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnProhibitivelySlowNetwork) { 614 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnProhibitivelySlowNetwork) {
583 SimulateHasNetworkConnectivity(true); 615 SimulateHasNetworkConnectivity(true);
584 616
585 test_previews_decider()->set_should_allow_preview(true); 617 test_previews_decider()->set_should_allow_preview(true);
586 618
587 InterceptRequest(kTestUrl2, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 619 InterceptRequest(kTestUrl2, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
588 base::RunLoop().Run(); 620 base::RunLoop().Run();
589 621
590 EXPECT_EQ(0, bytes_read()); 622 EXPECT_EQ(0, bytes_read());
591 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 623 VerifyInfo(false, 0);
624 base::RunLoop().RunUntilIdle();
625
592 ExpectAggregatedRequestResultHistogram( 626 ExpectAggregatedRequestResultHistogram(
593 OfflinePageRequestJob::AggregatedRequestResult:: 627 OfflinePageRequestJob::AggregatedRequestResult::
594 PAGE_NOT_FOUND_ON_PROHIBITIVELY_SLOW_NETWORK); 628 PAGE_NOT_FOUND_ON_PROHIBITIVELY_SLOW_NETWORK);
595 test_previews_decider()->set_should_allow_preview(false); 629 test_previews_decider()->set_should_allow_preview(false);
596 } 630 }
597 631
598 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnFlakyNetwork) { 632 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnFlakyNetwork) {
599 SimulateHasNetworkConnectivity(true); 633 SimulateHasNetworkConnectivity(true);
600 634
601 // When custom offline header exists and contains "reason=error", it means 635 // When custom offline header exists and contains "reason=error", it means
602 // that net error is hit in last request due to flaky network. 636 // that net error is hit in last request due to flaky network.
603 InterceptRequest( 637 InterceptRequest(
604 kTestUrl, 638 kTestUrl,
605 "GET", 639 "GET",
606 kOfflinePageHeader, 640 kOfflinePageHeader,
607 std::string(kOfflinePageHeaderReasonKey) + "=" + 641 std::string(kOfflinePageHeaderReasonKey) + "=" +
608 kOfflinePageHeaderReasonValueDueToNetError, 642 kOfflinePageHeaderReasonValueDueToNetError,
609 content::RESOURCE_TYPE_MAIN_FRAME); 643 content::RESOURCE_TYPE_MAIN_FRAME);
610 base::RunLoop().Run(); 644 base::RunLoop().Run();
611 645
612 EXPECT_EQ(kTestFileSize2, bytes_read()); 646 EXPECT_EQ(kTestFileSize2, bytes_read());
613 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 647 VerifyInfo(true, offline_id2());
614 EXPECT_EQ(offline_id2(), 648 base::RunLoop().RunUntilIdle();
615 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 649
616 ExpectAggregatedRequestResultHistogram( 650 ExpectAggregatedRequestResultHistogram(
617 OfflinePageRequestJob::AggregatedRequestResult:: 651 OfflinePageRequestJob::AggregatedRequestResult::
618 SHOW_OFFLINE_ON_FLAKY_NETWORK); 652 SHOW_OFFLINE_ON_FLAKY_NETWORK);
619 } 653 }
620 654
621 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnFlakyNetwork) { 655 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnFlakyNetwork) {
622 SimulateHasNetworkConnectivity(true); 656 SimulateHasNetworkConnectivity(true);
623 657
624 // When custom offline header exists and contains "reason=error", it means 658 // When custom offline header exists and contains "reason=error", it means
625 // that net error is hit in last request due to flaky network. 659 // that net error is hit in last request due to flaky network.
626 InterceptRequest( 660 InterceptRequest(
627 kTestUrl2, 661 kTestUrl2,
628 "GET", 662 "GET",
629 kOfflinePageHeader, 663 kOfflinePageHeader,
630 std::string(kOfflinePageHeaderReasonKey) + "=" + 664 std::string(kOfflinePageHeaderReasonKey) + "=" +
631 kOfflinePageHeaderReasonValueDueToNetError, 665 kOfflinePageHeaderReasonValueDueToNetError,
632 content::RESOURCE_TYPE_MAIN_FRAME); 666 content::RESOURCE_TYPE_MAIN_FRAME);
633 base::RunLoop().Run(); 667 base::RunLoop().Run();
634 668
635 EXPECT_EQ(0, bytes_read()); 669 EXPECT_EQ(0, bytes_read());
636 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 670 VerifyInfo(false, 0);
671 base::RunLoop().RunUntilIdle();
672
637 ExpectAggregatedRequestResultHistogram( 673 ExpectAggregatedRequestResultHistogram(
638 OfflinePageRequestJob::AggregatedRequestResult:: 674 OfflinePageRequestJob::AggregatedRequestResult::
639 PAGE_NOT_FOUND_ON_FLAKY_NETWORK); 675 PAGE_NOT_FOUND_ON_FLAKY_NETWORK);
640 } 676 }
641 677
642 TEST_F(OfflinePageRequestJobTest, ForceLoadOfflinePageOnConnectedNetwork) { 678 TEST_F(OfflinePageRequestJobTest, ForceLoadOfflinePageOnConnectedNetwork) {
643 SimulateHasNetworkConnectivity(true); 679 SimulateHasNetworkConnectivity(true);
644 680
645 // When custom offline header exists and contains value other than 681 // When custom offline header exists and contains value other than
646 // "reason=error", it means that offline page is forced to load. 682 // "reason=error", it means that offline page is forced to load.
647 InterceptRequest( 683 InterceptRequest(
648 kTestUrl, 684 kTestUrl,
649 "GET", 685 "GET",
650 kOfflinePageHeader, 686 kOfflinePageHeader,
651 std::string(kOfflinePageHeaderReasonKey) + "=download", 687 std::string(kOfflinePageHeaderReasonKey) + "=download",
652 content::RESOURCE_TYPE_MAIN_FRAME); 688 content::RESOURCE_TYPE_MAIN_FRAME);
653 base::RunLoop().Run(); 689 base::RunLoop().Run();
654 690
655 EXPECT_EQ(kTestFileSize2, bytes_read()); 691 EXPECT_EQ(kTestFileSize2, bytes_read());
656 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 692 VerifyInfo(true, offline_id2());
657 EXPECT_EQ(offline_id2(), 693 base::RunLoop().RunUntilIdle();
658 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 694
659 ExpectAggregatedRequestResultHistogram( 695 ExpectAggregatedRequestResultHistogram(
660 OfflinePageRequestJob::AggregatedRequestResult:: 696 OfflinePageRequestJob::AggregatedRequestResult::
661 SHOW_OFFLINE_ON_CONNECTED_NETWORK); 697 SHOW_OFFLINE_ON_CONNECTED_NETWORK);
662 } 698 }
663 699
664 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnConnectedNetwork) { 700 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnConnectedNetwork) {
665 SimulateHasNetworkConnectivity(true); 701 SimulateHasNetworkConnectivity(true);
666 702
667 // When custom offline header exists and contains value other than 703 // When custom offline header exists and contains value other than
668 // "reason=error", it means that offline page is forced to load. 704 // "reason=error", it means that offline page is forced to load.
669 InterceptRequest( 705 InterceptRequest(
670 kTestUrl2, 706 kTestUrl2,
671 "GET", 707 "GET",
672 kOfflinePageHeader, 708 kOfflinePageHeader,
673 std::string(kOfflinePageHeaderReasonKey) + "=download", 709 std::string(kOfflinePageHeaderReasonKey) + "=download",
674 content::RESOURCE_TYPE_MAIN_FRAME); 710 content::RESOURCE_TYPE_MAIN_FRAME);
675 base::RunLoop().Run(); 711 base::RunLoop().Run();
676 712
677 EXPECT_EQ(0, bytes_read()); 713 EXPECT_EQ(0, bytes_read());
678 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 714 VerifyInfo(false, 0);
715 base::RunLoop().RunUntilIdle();
716
679 ExpectAggregatedRequestResultHistogram( 717 ExpectAggregatedRequestResultHistogram(
680 OfflinePageRequestJob::AggregatedRequestResult:: 718 OfflinePageRequestJob::AggregatedRequestResult::
681 PAGE_NOT_FOUND_ON_CONNECTED_NETWORK); 719 PAGE_NOT_FOUND_ON_CONNECTED_NETWORK);
682 } 720 }
683 721
684 TEST_F(OfflinePageRequestJobTest, DoNotLoadOfflinePageOnConnectedNetwork) { 722 TEST_F(OfflinePageRequestJobTest, DoNotLoadOfflinePageOnConnectedNetwork) {
685 SimulateHasNetworkConnectivity(true); 723 SimulateHasNetworkConnectivity(true);
686 724
687 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 725 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
688 base::RunLoop().Run(); 726 base::RunLoop().Run();
689 727
690 EXPECT_EQ(0, bytes_read()); 728 EXPECT_EQ(0, bytes_read());
691 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 729 VerifyInfo(false, 0);
730 base::RunLoop().RunUntilIdle();
692 } 731 }
693 732
694 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageByOfflineID) { 733 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageByOfflineID) {
695 SimulateHasNetworkConnectivity(true); 734 SimulateHasNetworkConnectivity(true);
696 735
697 InterceptRequest( 736 InterceptRequest(
698 kTestUrl, 737 kTestUrl,
699 "GET", 738 "GET",
700 kOfflinePageHeader, 739 kOfflinePageHeader,
701 std::string(kOfflinePageHeaderReasonKey) + "=download " + 740 std::string(kOfflinePageHeaderReasonKey) + "=download " +
702 kOfflinePageHeaderIDKey + "=" + base::Int64ToString(offline_id()), 741 kOfflinePageHeaderIDKey + "=" + base::Int64ToString(offline_id()),
703 content::RESOURCE_TYPE_MAIN_FRAME); 742 content::RESOURCE_TYPE_MAIN_FRAME);
704 base::RunLoop().Run(); 743 base::RunLoop().Run();
705 744
706 EXPECT_EQ(kTestFileSize, bytes_read()); 745 EXPECT_EQ(kTestFileSize, bytes_read());
707 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 746 VerifyInfo(true, offline_id());
708 EXPECT_EQ(offline_id(), 747 base::RunLoop().RunUntilIdle();
709 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 748
710 ExpectAggregatedRequestResultHistogram( 749 ExpectAggregatedRequestResultHistogram(
711 OfflinePageRequestJob::AggregatedRequestResult:: 750 OfflinePageRequestJob::AggregatedRequestResult::
712 SHOW_OFFLINE_ON_CONNECTED_NETWORK); 751 SHOW_OFFLINE_ON_CONNECTED_NETWORK);
713 } 752 }
714 753
715 TEST_F(OfflinePageRequestJobTest, 754 TEST_F(OfflinePageRequestJobTest,
716 LoadOfflinePageByOfflineIDAndFallbackToOnlineURL) { 755 LoadOfflinePageByOfflineIDAndFallbackToOnlineURL) {
717 SimulateHasNetworkConnectivity(true); 756 SimulateHasNetworkConnectivity(true);
718 757
719 // The offline page found with specific offline ID does not match the passed 758 // The offline page found with specific offline ID does not match the passed
720 // online URL. Should fall back to find the offline page based on the online 759 // online URL. Should fall back to find the offline page based on the online
721 // URL. 760 // URL.
722 InterceptRequest( 761 InterceptRequest(
723 kTestUrl2, 762 kTestUrl2,
724 "GET", 763 "GET",
725 kOfflinePageHeader, 764 kOfflinePageHeader,
726 std::string(kOfflinePageHeaderReasonKey) + "=download " + 765 std::string(kOfflinePageHeaderReasonKey) + "=download " +
727 kOfflinePageHeaderIDKey + "=" + base::Int64ToString(offline_id()), 766 kOfflinePageHeaderIDKey + "=" + base::Int64ToString(offline_id()),
728 content::RESOURCE_TYPE_MAIN_FRAME); 767 content::RESOURCE_TYPE_MAIN_FRAME);
729 base::RunLoop().Run(); 768 base::RunLoop().Run();
730 769
731 EXPECT_EQ(0, bytes_read()); 770 EXPECT_EQ(0, bytes_read());
732 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 771 VerifyInfo(false, 0);
772 base::RunLoop().RunUntilIdle();
773
733 ExpectAggregatedRequestResultHistogram( 774 ExpectAggregatedRequestResultHistogram(
734 OfflinePageRequestJob::AggregatedRequestResult:: 775 OfflinePageRequestJob::AggregatedRequestResult::
735 PAGE_NOT_FOUND_ON_CONNECTED_NETWORK); 776 PAGE_NOT_FOUND_ON_CONNECTED_NETWORK);
736 } 777 }
737 778
738 } // namespace offline_pages 779 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698