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

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

Issue 2507293006: Report redirect UMA in offline interceptor (Closed)
Patch Set: Address feedback Created 4 years, 1 month 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 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 const ClientId& client_id, 242 const ClientId& client_id,
243 const GURL& original_url, 243 const GURL& original_url,
244 std::unique_ptr<OfflinePageArchiver> archiver); 244 std::unique_ptr<OfflinePageArchiver> archiver);
245 245
246 void InterceptRequest(const GURL& url, 246 void InterceptRequest(const GURL& url,
247 const std::string& method, 247 const std::string& method,
248 const std::string& extra_header_name, 248 const std::string& extra_header_name,
249 const std::string& extra_header_value, 249 const std::string& extra_header_value,
250 content::ResourceType resource_type); 250 content::ResourceType resource_type);
251 251
252 void ExpectAggregatedRequestResultHistogram( 252 // Expect exactly one count of |result| UMA reported. No other bucket should
253 // have sample.
254 void ExpectOneUniqueSampleForAggregatedRequestResult(
253 OfflinePageRequestJob::AggregatedRequestResult result); 255 OfflinePageRequestJob::AggregatedRequestResult result);
254 void ExpectAggregatedRequestResultHistogramWithCount( 256 // Expect exactly |count| of |result| UMA reported. No other bucket should
257 // have sample.
258 void ExpectMultiUniqueSampleForAggregatedRequestResult(
255 OfflinePageRequestJob::AggregatedRequestResult result, int count); 259 OfflinePageRequestJob::AggregatedRequestResult result, int count);
260 // Expect one count of |result| UMA reported. Other buckets may have samples
261 // as well.
262 void ExpectOneNonuniqueSampleForAggregatedRequestResult(
263 OfflinePageRequestJob::AggregatedRequestResult result);
256 264
257 net::TestURLRequestContext* url_request_context() { 265 net::TestURLRequestContext* url_request_context() {
258 return test_url_request_context_.get(); 266 return test_url_request_context_.get();
259 } 267 }
260 Profile* profile() { return profile_; } 268 Profile* profile() { return profile_; }
261 OfflinePageTabHelper* offline_page_tab_helper() const { 269 OfflinePageTabHelper* offline_page_tab_helper() const {
262 return offline_page_tab_helper_; 270 return offline_page_tab_helper_;
263 } 271 }
264 int64_t offline_id() const { return offline_id_; } 272 int64_t offline_id() const { return offline_id_; }
265 int64_t offline_id2() const { return offline_id2_; } 273 int64_t offline_id2() const { return offline_id2_; }
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 1, /* render_frame_id */ 448 1, /* render_frame_id */
441 true, /* is_main_frame */ 449 true, /* is_main_frame */
442 false, /* parent_is_main_frame */ 450 false, /* parent_is_main_frame */
443 true, /* allow_download */ 451 true, /* allow_download */
444 true, /* is_async */ 452 true, /* is_async */
445 false /* is_using_lofi */); 453 false /* is_using_lofi */);
446 454
447 return request; 455 return request;
448 } 456 }
449 457
450 void OfflinePageRequestJobTest::ExpectAggregatedRequestResultHistogram( 458 void
459 OfflinePageRequestJobTest::ExpectOneUniqueSampleForAggregatedRequestResult(
451 OfflinePageRequestJob::AggregatedRequestResult result) { 460 OfflinePageRequestJob::AggregatedRequestResult result) {
452 histogram_tester_.ExpectUniqueSample( 461 histogram_tester_.ExpectUniqueSample(
453 kAggregatedRequestResultHistogram, static_cast<int>(result), 1); 462 kAggregatedRequestResultHistogram, static_cast<int>(result), 1);
454 } 463 }
455 464
456 void OfflinePageRequestJobTest::ExpectAggregatedRequestResultHistogramWithCount( 465 void
466 OfflinePageRequestJobTest::ExpectMultiUniqueSampleForAggregatedRequestResult(
457 OfflinePageRequestJob::AggregatedRequestResult result, int count) { 467 OfflinePageRequestJob::AggregatedRequestResult result, int count) {
458 histogram_tester_.ExpectUniqueSample( 468 histogram_tester_.ExpectUniqueSample(
459 kAggregatedRequestResultHistogram, static_cast<int>(result), count); 469 kAggregatedRequestResultHistogram, static_cast<int>(result), count);
460 } 470 }
461 471
472 void
473 OfflinePageRequestJobTest::ExpectOneNonuniqueSampleForAggregatedRequestResult(
474 OfflinePageRequestJob::AggregatedRequestResult result) {
475 histogram_tester_.ExpectBucketCount(
476 kAggregatedRequestResultHistogram, static_cast<int>(result), 1);
477 }
478
462 void OfflinePageRequestJobTest::SavePage( 479 void OfflinePageRequestJobTest::SavePage(
463 const GURL& url, 480 const GURL& url,
464 const ClientId& client_id, 481 const ClientId& client_id,
465 const GURL& original_url, 482 const GURL& original_url,
466 std::unique_ptr<OfflinePageArchiver> archiver) { 483 std::unique_ptr<OfflinePageArchiver> archiver) {
467 OfflinePageModel::SavePageParams save_page_params; 484 OfflinePageModel::SavePageParams save_page_params;
468 save_page_params.url = url; 485 save_page_params.url = url;
469 save_page_params.client_id = client_id; 486 save_page_params.client_id = client_id;
470 save_page_params.original_url = original_url; 487 save_page_params.original_url = original_url;
471 OfflinePageModelFactory::GetForBrowserContext(profile())->SavePage( 488 OfflinePageModelFactory::GetForBrowserContext(profile())->SavePage(
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnDisconnectedNetwork) { 598 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnDisconnectedNetwork) {
582 SimulateHasNetworkConnectivity(false); 599 SimulateHasNetworkConnectivity(false);
583 600
584 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 601 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
585 base::RunLoop().Run(); 602 base::RunLoop().Run();
586 603
587 EXPECT_EQ(kTestFileSize2, bytes_read()); 604 EXPECT_EQ(kTestFileSize2, bytes_read());
588 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 605 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest());
589 EXPECT_EQ(offline_id2(), 606 EXPECT_EQ(offline_id2(),
590 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 607 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id);
591 ExpectAggregatedRequestResultHistogram( 608 ExpectOneUniqueSampleForAggregatedRequestResult(
592 OfflinePageRequestJob::AggregatedRequestResult:: 609 OfflinePageRequestJob::AggregatedRequestResult::
593 SHOW_OFFLINE_ON_DISCONNECTED_NETWORK); 610 SHOW_OFFLINE_ON_DISCONNECTED_NETWORK);
594 } 611 }
595 612
596 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnDisconnectedNetwork) { 613 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnDisconnectedNetwork) {
597 SimulateHasNetworkConnectivity(false); 614 SimulateHasNetworkConnectivity(false);
598 615
599 InterceptRequest(kTestUrl2, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 616 InterceptRequest(kTestUrl2, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
600 base::RunLoop().Run(); 617 base::RunLoop().Run();
601 618
602 EXPECT_EQ(0, bytes_read()); 619 EXPECT_EQ(0, bytes_read());
603 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 620 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest());
604 ExpectAggregatedRequestResultHistogram( 621 ExpectOneUniqueSampleForAggregatedRequestResult(
605 OfflinePageRequestJob::AggregatedRequestResult:: 622 OfflinePageRequestJob::AggregatedRequestResult::
606 PAGE_NOT_FOUND_ON_DISCONNECTED_NETWORK); 623 PAGE_NOT_FOUND_ON_DISCONNECTED_NETWORK);
607 } 624 }
608 625
609 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnProhibitivelySlowNetwork) { 626 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnProhibitivelySlowNetwork) {
610 SimulateHasNetworkConnectivity(true); 627 SimulateHasNetworkConnectivity(true);
611 628
612 test_previews_decider()->set_should_allow_preview(true); 629 test_previews_decider()->set_should_allow_preview(true);
613 630
614 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 631 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
615 base::RunLoop().Run(); 632 base::RunLoop().Run();
616 633
617 EXPECT_EQ(kTestFileSize2, bytes_read()); 634 EXPECT_EQ(kTestFileSize2, bytes_read());
618 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 635 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest());
619 EXPECT_EQ(offline_id2(), 636 EXPECT_EQ(offline_id2(),
620 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 637 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id);
621 ExpectAggregatedRequestResultHistogram( 638 ExpectOneUniqueSampleForAggregatedRequestResult(
622 OfflinePageRequestJob::AggregatedRequestResult:: 639 OfflinePageRequestJob::AggregatedRequestResult::
623 SHOW_OFFLINE_ON_PROHIBITIVELY_SLOW_NETWORK); 640 SHOW_OFFLINE_ON_PROHIBITIVELY_SLOW_NETWORK);
624 test_previews_decider()->set_should_allow_preview(false); 641 test_previews_decider()->set_should_allow_preview(false);
625 } 642 }
626 643
627 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnProhibitivelySlowNetwork) { 644 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnProhibitivelySlowNetwork) {
628 SimulateHasNetworkConnectivity(true); 645 SimulateHasNetworkConnectivity(true);
629 646
630 test_previews_decider()->set_should_allow_preview(true); 647 test_previews_decider()->set_should_allow_preview(true);
631 648
632 InterceptRequest(kTestUrl2, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 649 InterceptRequest(kTestUrl2, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
633 base::RunLoop().Run(); 650 base::RunLoop().Run();
634 651
635 EXPECT_EQ(0, bytes_read()); 652 EXPECT_EQ(0, bytes_read());
636 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 653 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest());
637 ExpectAggregatedRequestResultHistogram( 654 ExpectOneUniqueSampleForAggregatedRequestResult(
638 OfflinePageRequestJob::AggregatedRequestResult:: 655 OfflinePageRequestJob::AggregatedRequestResult::
639 PAGE_NOT_FOUND_ON_PROHIBITIVELY_SLOW_NETWORK); 656 PAGE_NOT_FOUND_ON_PROHIBITIVELY_SLOW_NETWORK);
640 test_previews_decider()->set_should_allow_preview(false); 657 test_previews_decider()->set_should_allow_preview(false);
641 } 658 }
642 659
643 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnFlakyNetwork) { 660 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageOnFlakyNetwork) {
644 SimulateHasNetworkConnectivity(true); 661 SimulateHasNetworkConnectivity(true);
645 662
646 // When custom offline header exists and contains "reason=error", it means 663 // When custom offline header exists and contains "reason=error", it means
647 // that net error is hit in last request due to flaky network. 664 // that net error is hit in last request due to flaky network.
648 InterceptRequest( 665 InterceptRequest(
649 kTestUrl, 666 kTestUrl,
650 "GET", 667 "GET",
651 kOfflinePageHeader, 668 kOfflinePageHeader,
652 std::string(kOfflinePageHeaderReasonKey) + "=" + 669 std::string(kOfflinePageHeaderReasonKey) + "=" +
653 kOfflinePageHeaderReasonValueDueToNetError, 670 kOfflinePageHeaderReasonValueDueToNetError,
654 content::RESOURCE_TYPE_MAIN_FRAME); 671 content::RESOURCE_TYPE_MAIN_FRAME);
655 base::RunLoop().Run(); 672 base::RunLoop().Run();
656 673
657 EXPECT_EQ(kTestFileSize2, bytes_read()); 674 EXPECT_EQ(kTestFileSize2, bytes_read());
658 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 675 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest());
659 EXPECT_EQ(offline_id2(), 676 EXPECT_EQ(offline_id2(),
660 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 677 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id);
661 ExpectAggregatedRequestResultHistogram( 678 ExpectOneUniqueSampleForAggregatedRequestResult(
662 OfflinePageRequestJob::AggregatedRequestResult:: 679 OfflinePageRequestJob::AggregatedRequestResult::
663 SHOW_OFFLINE_ON_FLAKY_NETWORK); 680 SHOW_OFFLINE_ON_FLAKY_NETWORK);
664 } 681 }
665 682
666 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnFlakyNetwork) { 683 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnFlakyNetwork) {
667 SimulateHasNetworkConnectivity(true); 684 SimulateHasNetworkConnectivity(true);
668 685
669 // When custom offline header exists and contains "reason=error", it means 686 // When custom offline header exists and contains "reason=error", it means
670 // that net error is hit in last request due to flaky network. 687 // that net error is hit in last request due to flaky network.
671 InterceptRequest( 688 InterceptRequest(
672 kTestUrl2, 689 kTestUrl2,
673 "GET", 690 "GET",
674 kOfflinePageHeader, 691 kOfflinePageHeader,
675 std::string(kOfflinePageHeaderReasonKey) + "=" + 692 std::string(kOfflinePageHeaderReasonKey) + "=" +
676 kOfflinePageHeaderReasonValueDueToNetError, 693 kOfflinePageHeaderReasonValueDueToNetError,
677 content::RESOURCE_TYPE_MAIN_FRAME); 694 content::RESOURCE_TYPE_MAIN_FRAME);
678 base::RunLoop().Run(); 695 base::RunLoop().Run();
679 696
680 EXPECT_EQ(0, bytes_read()); 697 EXPECT_EQ(0, bytes_read());
681 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 698 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest());
682 ExpectAggregatedRequestResultHistogram( 699 ExpectOneUniqueSampleForAggregatedRequestResult(
683 OfflinePageRequestJob::AggregatedRequestResult:: 700 OfflinePageRequestJob::AggregatedRequestResult::
684 PAGE_NOT_FOUND_ON_FLAKY_NETWORK); 701 PAGE_NOT_FOUND_ON_FLAKY_NETWORK);
685 } 702 }
686 703
687 TEST_F(OfflinePageRequestJobTest, ForceLoadOfflinePageOnConnectedNetwork) { 704 TEST_F(OfflinePageRequestJobTest, ForceLoadOfflinePageOnConnectedNetwork) {
688 SimulateHasNetworkConnectivity(true); 705 SimulateHasNetworkConnectivity(true);
689 706
690 // When custom offline header exists and contains value other than 707 // When custom offline header exists and contains value other than
691 // "reason=error", it means that offline page is forced to load. 708 // "reason=error", it means that offline page is forced to load.
692 InterceptRequest( 709 InterceptRequest(
693 kTestUrl, 710 kTestUrl,
694 "GET", 711 "GET",
695 kOfflinePageHeader, 712 kOfflinePageHeader,
696 std::string(kOfflinePageHeaderReasonKey) + "=download", 713 std::string(kOfflinePageHeaderReasonKey) + "=download",
697 content::RESOURCE_TYPE_MAIN_FRAME); 714 content::RESOURCE_TYPE_MAIN_FRAME);
698 base::RunLoop().Run(); 715 base::RunLoop().Run();
699 716
700 EXPECT_EQ(kTestFileSize2, bytes_read()); 717 EXPECT_EQ(kTestFileSize2, bytes_read());
701 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 718 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest());
702 EXPECT_EQ(offline_id2(), 719 EXPECT_EQ(offline_id2(),
703 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 720 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id);
704 ExpectAggregatedRequestResultHistogram( 721 ExpectOneUniqueSampleForAggregatedRequestResult(
705 OfflinePageRequestJob::AggregatedRequestResult:: 722 OfflinePageRequestJob::AggregatedRequestResult::
706 SHOW_OFFLINE_ON_CONNECTED_NETWORK); 723 SHOW_OFFLINE_ON_CONNECTED_NETWORK);
707 } 724 }
708 725
709 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnConnectedNetwork) { 726 TEST_F(OfflinePageRequestJobTest, PageNotFoundOnConnectedNetwork) {
710 SimulateHasNetworkConnectivity(true); 727 SimulateHasNetworkConnectivity(true);
711 728
712 // When custom offline header exists and contains value other than 729 // When custom offline header exists and contains value other than
713 // "reason=error", it means that offline page is forced to load. 730 // "reason=error", it means that offline page is forced to load.
714 InterceptRequest( 731 InterceptRequest(
715 kTestUrl2, 732 kTestUrl2,
716 "GET", 733 "GET",
717 kOfflinePageHeader, 734 kOfflinePageHeader,
718 std::string(kOfflinePageHeaderReasonKey) + "=download", 735 std::string(kOfflinePageHeaderReasonKey) + "=download",
719 content::RESOURCE_TYPE_MAIN_FRAME); 736 content::RESOURCE_TYPE_MAIN_FRAME);
720 base::RunLoop().Run(); 737 base::RunLoop().Run();
721 738
722 EXPECT_EQ(0, bytes_read()); 739 EXPECT_EQ(0, bytes_read());
723 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 740 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest());
724 ExpectAggregatedRequestResultHistogram( 741 ExpectOneUniqueSampleForAggregatedRequestResult(
725 OfflinePageRequestJob::AggregatedRequestResult:: 742 OfflinePageRequestJob::AggregatedRequestResult::
726 PAGE_NOT_FOUND_ON_CONNECTED_NETWORK); 743 PAGE_NOT_FOUND_ON_CONNECTED_NETWORK);
727 } 744 }
728 745
729 TEST_F(OfflinePageRequestJobTest, DoNotLoadOfflinePageOnConnectedNetwork) { 746 TEST_F(OfflinePageRequestJobTest, DoNotLoadOfflinePageOnConnectedNetwork) {
730 SimulateHasNetworkConnectivity(true); 747 SimulateHasNetworkConnectivity(true);
731 748
732 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 749 InterceptRequest(kTestUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
733 base::RunLoop().Run(); 750 base::RunLoop().Run();
734 751
(...skipping 10 matching lines...) Expand all
745 kOfflinePageHeader, 762 kOfflinePageHeader,
746 std::string(kOfflinePageHeaderReasonKey) + "=download " + 763 std::string(kOfflinePageHeaderReasonKey) + "=download " +
747 kOfflinePageHeaderIDKey + "=" + base::Int64ToString(offline_id()), 764 kOfflinePageHeaderIDKey + "=" + base::Int64ToString(offline_id()),
748 content::RESOURCE_TYPE_MAIN_FRAME); 765 content::RESOURCE_TYPE_MAIN_FRAME);
749 base::RunLoop().Run(); 766 base::RunLoop().Run();
750 767
751 EXPECT_EQ(kTestFileSize, bytes_read()); 768 EXPECT_EQ(kTestFileSize, bytes_read());
752 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 769 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest());
753 EXPECT_EQ(offline_id(), 770 EXPECT_EQ(offline_id(),
754 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 771 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id);
755 ExpectAggregatedRequestResultHistogram( 772 ExpectOneUniqueSampleForAggregatedRequestResult(
756 OfflinePageRequestJob::AggregatedRequestResult:: 773 OfflinePageRequestJob::AggregatedRequestResult::
757 SHOW_OFFLINE_ON_CONNECTED_NETWORK); 774 SHOW_OFFLINE_ON_CONNECTED_NETWORK);
758 } 775 }
759 776
760 TEST_F(OfflinePageRequestJobTest, 777 TEST_F(OfflinePageRequestJobTest,
761 LoadOfflinePageByOfflineIDAndFallbackToOnlineURL) { 778 LoadOfflinePageByOfflineIDAndFallbackToOnlineURL) {
762 SimulateHasNetworkConnectivity(true); 779 SimulateHasNetworkConnectivity(true);
763 780
764 // The offline page found with specific offline ID does not match the passed 781 // The offline page found with specific offline ID does not match the passed
765 // online URL. Should fall back to find the offline page based on the online 782 // online URL. Should fall back to find the offline page based on the online
766 // URL. 783 // URL.
767 InterceptRequest( 784 InterceptRequest(
768 kTestUrl2, 785 kTestUrl2,
769 "GET", 786 "GET",
770 kOfflinePageHeader, 787 kOfflinePageHeader,
771 std::string(kOfflinePageHeaderReasonKey) + "=download " + 788 std::string(kOfflinePageHeaderReasonKey) + "=download " +
772 kOfflinePageHeaderIDKey + "=" + base::Int64ToString(offline_id()), 789 kOfflinePageHeaderIDKey + "=" + base::Int64ToString(offline_id()),
773 content::RESOURCE_TYPE_MAIN_FRAME); 790 content::RESOURCE_TYPE_MAIN_FRAME);
774 base::RunLoop().Run(); 791 base::RunLoop().Run();
775 792
776 EXPECT_EQ(0, bytes_read()); 793 EXPECT_EQ(0, bytes_read());
777 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest()); 794 EXPECT_FALSE(offline_page_tab_helper()->GetOfflinePageForTest());
778 ExpectAggregatedRequestResultHistogram( 795 ExpectOneUniqueSampleForAggregatedRequestResult(
779 OfflinePageRequestJob::AggregatedRequestResult:: 796 OfflinePageRequestJob::AggregatedRequestResult::
780 PAGE_NOT_FOUND_ON_CONNECTED_NETWORK); 797 PAGE_NOT_FOUND_ON_CONNECTED_NETWORK);
781 } 798 }
782 799
783 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageForUrlWithFragment) { 800 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageForUrlWithFragment) {
784 SimulateHasNetworkConnectivity(false); 801 SimulateHasNetworkConnectivity(false);
785 802
786 // Loads an url with fragment, that will match the offline URL without the 803 // Loads an url with fragment, that will match the offline URL without the
787 // fragment. 804 // fragment.
788 GURL url_with_fragment(kTestUrl.spec() + "#ref"); 805 GURL url_with_fragment(kTestUrl.spec() + "#ref");
789 InterceptRequest( 806 InterceptRequest(
790 url_with_fragment, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 807 url_with_fragment, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
791 base::RunLoop().Run(); 808 base::RunLoop().Run();
792 809
793 EXPECT_EQ(kTestFileSize2, bytes_read()); 810 EXPECT_EQ(kTestFileSize2, bytes_read());
794 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 811 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest());
795 EXPECT_EQ(offline_id2(), 812 EXPECT_EQ(offline_id2(),
796 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 813 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id);
797 ExpectAggregatedRequestResultHistogram( 814 ExpectOneUniqueSampleForAggregatedRequestResult(
798 OfflinePageRequestJob::AggregatedRequestResult:: 815 OfflinePageRequestJob::AggregatedRequestResult::
799 SHOW_OFFLINE_ON_DISCONNECTED_NETWORK); 816 SHOW_OFFLINE_ON_DISCONNECTED_NETWORK);
800 817
801 // Loads an url without fragment, that will match the offline URL with the 818 // Loads an url without fragment, that will match the offline URL with the
802 // fragment. 819 // fragment.
803 InterceptRequest(kTestUrl3, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 820 InterceptRequest(kTestUrl3, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
804 base::RunLoop().Run(); 821 base::RunLoop().Run();
805 822
806 EXPECT_EQ(kTestFileSize3, bytes_read()); 823 EXPECT_EQ(kTestFileSize3, bytes_read());
807 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 824 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest());
808 EXPECT_EQ(offline_id3(), 825 EXPECT_EQ(offline_id3(),
809 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 826 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id);
810 ExpectAggregatedRequestResultHistogramWithCount( 827 ExpectMultiUniqueSampleForAggregatedRequestResult(
811 OfflinePageRequestJob::AggregatedRequestResult:: 828 OfflinePageRequestJob::AggregatedRequestResult::
812 SHOW_OFFLINE_ON_DISCONNECTED_NETWORK, 2); 829 SHOW_OFFLINE_ON_DISCONNECTED_NETWORK, 2);
813 830
814 // Loads an url with fragment, that will match the offline URL with different 831 // Loads an url with fragment, that will match the offline URL with different
815 // fragment. 832 // fragment.
816 GURL url3_with_different_fragment(kTestUrl3.spec() + "#different_ref"); 833 GURL url3_with_different_fragment(kTestUrl3.spec() + "#different_ref");
817 InterceptRequest(url3_with_different_fragment, "GET", "", "", 834 InterceptRequest(url3_with_different_fragment, "GET", "", "",
818 content::RESOURCE_TYPE_MAIN_FRAME); 835 content::RESOURCE_TYPE_MAIN_FRAME);
819 base::RunLoop().Run(); 836 base::RunLoop().Run();
820 837
821 EXPECT_EQ(kTestFileSize3, bytes_read()); 838 EXPECT_EQ(kTestFileSize3, bytes_read());
822 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 839 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest());
823 EXPECT_EQ(offline_id3(), 840 EXPECT_EQ(offline_id3(),
824 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 841 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id);
825 ExpectAggregatedRequestResultHistogramWithCount( 842 ExpectMultiUniqueSampleForAggregatedRequestResult(
826 OfflinePageRequestJob::AggregatedRequestResult:: 843 OfflinePageRequestJob::AggregatedRequestResult::
827 SHOW_OFFLINE_ON_DISCONNECTED_NETWORK, 3); 844 SHOW_OFFLINE_ON_DISCONNECTED_NETWORK, 3);
828 845
829 } 846 }
830 847
831 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageAfterRedirect) { 848 TEST_F(OfflinePageRequestJobTest, LoadOfflinePageAfterRedirect) {
832 SimulateHasNetworkConnectivity(false); 849 SimulateHasNetworkConnectivity(false);
833 850
834 // This should trigger redirect first. 851 // This should trigger redirect first.
835 InterceptRequest( 852 InterceptRequest(
836 kTestOriginalUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME); 853 kTestOriginalUrl, "GET", "", "", content::RESOURCE_TYPE_MAIN_FRAME);
837 base::RunLoop().Run(); 854 base::RunLoop().Run();
838 855
839 EXPECT_EQ(kTestFileSize3, bytes_read()); 856 EXPECT_EQ(kTestFileSize3, bytes_read());
840 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest()); 857 ASSERT_TRUE(offline_page_tab_helper()->GetOfflinePageForTest());
841 EXPECT_EQ(offline_id3(), 858 EXPECT_EQ(offline_id3(),
842 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id); 859 offline_page_tab_helper()->GetOfflinePageForTest()->offline_id);
843 ExpectAggregatedRequestResultHistogram( 860 ExpectOneNonuniqueSampleForAggregatedRequestResult(
861 OfflinePageRequestJob::AggregatedRequestResult::
862 REDIRECTED_ON_DISCONNECTED_NETWORK);
863 ExpectOneNonuniqueSampleForAggregatedRequestResult(
844 OfflinePageRequestJob::AggregatedRequestResult:: 864 OfflinePageRequestJob::AggregatedRequestResult::
845 SHOW_OFFLINE_ON_DISCONNECTED_NETWORK); 865 SHOW_OFFLINE_ON_DISCONNECTED_NETWORK);
846 } 866 }
847 867
848 } // namespace offline_pages 868 } // namespace offline_pages
OLDNEW
« no previous file with comments | « chrome/browser/android/offline_pages/offline_page_request_job.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698