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

Side by Side Diff: content/browser/frame_host/navigation_controller_impl_browsertest.cc

Issue 1214073005: Remove NAVIGATION_TYPE_IN_PAGE. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: didreplace Created 5 years, 5 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/command_line.h" 6 #include "base/command_line.h"
7 #include "base/strings/stringprintf.h" 7 #include "base/strings/stringprintf.h"
8 #include "content/browser/frame_host/frame_navigation_entry.h" 8 #include "content/browser/frame_host/frame_navigation_entry.h"
9 #include "content/browser/frame_host/frame_tree.h" 9 #include "content/browser/frame_host/frame_tree.h"
10 #include "content/browser/frame_host/navigation_controller_impl.h" 10 #include "content/browser/frame_host/navigation_controller_impl.h"
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 // Simple load. 545 // Simple load.
546 FrameNavigateParamsCapturer capturer(root); 546 FrameNavigateParamsCapturer capturer(root);
547 GURL frame_url(embedded_test_server()->GetURL( 547 GURL frame_url(embedded_test_server()->GetURL(
548 "/navigation_controller/page_with_links.html")); 548 "/navigation_controller/page_with_links.html"));
549 NavigateFrameToURL(root, frame_url); 549 NavigateFrameToURL(root, frame_url);
550 capturer.Wait(); 550 capturer.Wait();
551 // TODO(avi,creis): Why is this (and quite a few others below) a "link" 551 // TODO(avi,creis): Why is this (and quite a few others below) a "link"
552 // transition? Lots of these transitions should be cleaned up. 552 // transition? Lots of these transitions should be cleaned up.
553 EXPECT_EQ(ui::PAGE_TRANSITION_LINK, capturer.params().transition); 553 EXPECT_EQ(ui::PAGE_TRANSITION_LINK, capturer.params().transition);
554 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); 554 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type);
555 EXPECT_FALSE(capturer.details().is_in_page);
555 } 556 }
556 557
557 { 558 {
558 // Load via a fragment link click. 559 // Load via a fragment link click.
559 FrameNavigateParamsCapturer capturer(root); 560 FrameNavigateParamsCapturer capturer(root);
560 std::string script = "document.getElementById('fraglink').click()"; 561 std::string script = "document.getElementById('fraglink').click()";
561 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script)); 562 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script));
562 capturer.Wait(); 563 capturer.Wait();
563 EXPECT_EQ(ui::PAGE_TRANSITION_LINK, capturer.params().transition); 564 EXPECT_EQ(ui::PAGE_TRANSITION_LINK, capturer.params().transition);
564 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); 565 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type);
566 EXPECT_TRUE(capturer.details().is_in_page);
565 } 567 }
566 568
567 { 569 {
568 // Load via link click. 570 // Load via link click.
569 FrameNavigateParamsCapturer capturer(root); 571 FrameNavigateParamsCapturer capturer(root);
570 std::string script = "document.getElementById('thelink').click()"; 572 std::string script = "document.getElementById('thelink').click()";
571 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script)); 573 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script));
572 capturer.Wait(); 574 capturer.Wait();
573 EXPECT_EQ(ui::PAGE_TRANSITION_LINK, capturer.params().transition); 575 EXPECT_EQ(ui::PAGE_TRANSITION_LINK, capturer.params().transition);
574 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); 576 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type);
577 EXPECT_FALSE(capturer.details().is_in_page);
575 } 578 }
576 579
577 { 580 {
578 // location.assign(). 581 // location.assign().
579 FrameNavigateParamsCapturer capturer(root); 582 FrameNavigateParamsCapturer capturer(root);
580 GURL frame_url(embedded_test_server()->GetURL( 583 GURL frame_url(embedded_test_server()->GetURL(
581 "/navigation_controller/simple_page_2.html")); 584 "/navigation_controller/simple_page_2.html"));
582 std::string script = "location.assign('" + frame_url.spec() + "')"; 585 std::string script = "location.assign('" + frame_url.spec() + "')";
583 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script)); 586 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script));
584 capturer.Wait(); 587 capturer.Wait();
585 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT, 588 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT,
586 capturer.params().transition); 589 capturer.params().transition);
587 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); 590 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type);
591 EXPECT_FALSE(capturer.details().is_in_page);
588 } 592 }
589 593
590 { 594 {
591 // history.pushState(). 595 // history.pushState().
592 FrameNavigateParamsCapturer capturer(root); 596 FrameNavigateParamsCapturer capturer(root);
593 std::string script = 597 std::string script =
594 "history.pushState({}, 'page 1', 'simple_page_1.html')"; 598 "history.pushState({}, 'page 1', 'simple_page_1.html')";
595 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script)); 599 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script));
596 capturer.Wait(); 600 capturer.Wait();
597 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT, 601 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT,
598 capturer.params().transition); 602 capturer.params().transition);
599 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); 603 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type);
604 EXPECT_TRUE(capturer.details().is_in_page);
600 } 605 }
601 } 606 }
602 607
603 // Verify that navigations for NAVIGATION_TYPE_EXISTING_PAGE are correctly 608 // Verify that navigations for NAVIGATION_TYPE_EXISTING_PAGE are correctly
604 // classified. 609 // classified.
605 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, 610 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
606 NavigationTypeClassification_ExistingPage) { 611 NavigationTypeClassification_ExistingPage) {
607 GURL url1(embedded_test_server()->GetURL( 612 GURL url1(embedded_test_server()->GetURL(
608 "/navigation_controller/simple_page_1.html")); 613 "/navigation_controller/simple_page_1.html"));
609 NavigateToURL(shell(), url1); 614 NavigateToURL(shell(), url1);
610 GURL url2(embedded_test_server()->GetURL( 615 GURL url2(embedded_test_server()->GetURL(
611 "/navigation_controller/simple_page_2.html")); 616 "/navigation_controller/simple_page_2.html"));
612 NavigateToURL(shell(), url2); 617 NavigateToURL(shell(), url2);
613 618
614 FrameTreeNode* root = 619 FrameTreeNode* root =
615 static_cast<WebContentsImpl*>(shell()->web_contents())-> 620 static_cast<WebContentsImpl*>(shell()->web_contents())->
616 GetFrameTree()->root(); 621 GetFrameTree()->root();
617 622
618 { 623 {
619 // Back from the browser side. 624 // Back from the browser side.
620 FrameNavigateParamsCapturer capturer(root); 625 FrameNavigateParamsCapturer capturer(root);
621 shell()->web_contents()->GetController().GoBack(); 626 shell()->web_contents()->GetController().GoBack();
622 capturer.Wait(); 627 capturer.Wait();
623 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED 628 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED
624 | ui::PAGE_TRANSITION_FORWARD_BACK 629 | ui::PAGE_TRANSITION_FORWARD_BACK
625 | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR, 630 | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR,
626 capturer.params().transition); 631 capturer.params().transition);
627 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); 632 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
633 EXPECT_FALSE(capturer.details().is_in_page);
628 } 634 }
629 635
630 { 636 {
631 // Forward from the browser side. 637 // Forward from the browser side.
632 FrameNavigateParamsCapturer capturer(root); 638 FrameNavigateParamsCapturer capturer(root);
633 shell()->web_contents()->GetController().GoForward(); 639 shell()->web_contents()->GetController().GoForward();
634 capturer.Wait(); 640 capturer.Wait();
635 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED 641 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED
636 | ui::PAGE_TRANSITION_FORWARD_BACK 642 | ui::PAGE_TRANSITION_FORWARD_BACK
637 | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR, 643 | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR,
638 capturer.params().transition); 644 capturer.params().transition);
639 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); 645 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
646 EXPECT_FALSE(capturer.details().is_in_page);
640 } 647 }
641 648
642 { 649 {
643 // Back from the renderer side. 650 // Back from the renderer side.
644 FrameNavigateParamsCapturer capturer(root); 651 FrameNavigateParamsCapturer capturer(root);
645 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), 652 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(),
646 "history.back()")); 653 "history.back()"));
647 capturer.Wait(); 654 capturer.Wait();
648 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED 655 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED
649 | ui::PAGE_TRANSITION_FORWARD_BACK 656 | ui::PAGE_TRANSITION_FORWARD_BACK
650 | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR, 657 | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR,
651 capturer.params().transition); 658 capturer.params().transition);
652 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); 659 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
660 EXPECT_FALSE(capturer.details().is_in_page);
653 } 661 }
654 662
655 { 663 {
656 // Forward from the renderer side. 664 // Forward from the renderer side.
657 FrameNavigateParamsCapturer capturer(root); 665 FrameNavigateParamsCapturer capturer(root);
658 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), 666 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(),
659 "history.forward()")); 667 "history.forward()"));
660 capturer.Wait(); 668 capturer.Wait();
661 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED 669 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED
662 | ui::PAGE_TRANSITION_FORWARD_BACK 670 | ui::PAGE_TRANSITION_FORWARD_BACK
663 | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR, 671 | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR,
664 capturer.params().transition); 672 capturer.params().transition);
665 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); 673 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
674 EXPECT_FALSE(capturer.details().is_in_page);
666 } 675 }
667 676
668 { 677 {
669 // Back from the renderer side via history.go(). 678 // Back from the renderer side via history.go().
670 FrameNavigateParamsCapturer capturer(root); 679 FrameNavigateParamsCapturer capturer(root);
671 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), 680 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(),
672 "history.go(-1)")); 681 "history.go(-1)"));
673 capturer.Wait(); 682 capturer.Wait();
674 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED 683 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED
675 | ui::PAGE_TRANSITION_FORWARD_BACK 684 | ui::PAGE_TRANSITION_FORWARD_BACK
676 | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR, 685 | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR,
677 capturer.params().transition); 686 capturer.params().transition);
678 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); 687 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
688 EXPECT_FALSE(capturer.details().is_in_page);
679 } 689 }
680 690
681 { 691 {
682 // Forward from the renderer side via history.go(). 692 // Forward from the renderer side via history.go().
683 FrameNavigateParamsCapturer capturer(root); 693 FrameNavigateParamsCapturer capturer(root);
684 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), 694 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(),
685 "history.go(1)")); 695 "history.go(1)"));
686 capturer.Wait(); 696 capturer.Wait();
687 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED 697 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED
688 | ui::PAGE_TRANSITION_FORWARD_BACK 698 | ui::PAGE_TRANSITION_FORWARD_BACK
689 | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR, 699 | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR,
690 capturer.params().transition); 700 capturer.params().transition);
691 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); 701 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
702 EXPECT_FALSE(capturer.details().is_in_page);
692 } 703 }
693 704
694 { 705 {
695 // Reload from the browser side. 706 // Reload from the browser side.
696 FrameNavigateParamsCapturer capturer(root); 707 FrameNavigateParamsCapturer capturer(root);
697 shell()->web_contents()->GetController().Reload(false); 708 shell()->web_contents()->GetController().Reload(false);
698 capturer.Wait(); 709 capturer.Wait();
699 EXPECT_EQ(ui::PAGE_TRANSITION_RELOAD, capturer.params().transition); 710 EXPECT_EQ(ui::PAGE_TRANSITION_RELOAD, capturer.params().transition);
700 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); 711 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
712 EXPECT_FALSE(capturer.details().is_in_page);
701 } 713 }
702 714
703 { 715 {
704 // Reload from the renderer side. 716 // Reload from the renderer side.
705 FrameNavigateParamsCapturer capturer(root); 717 FrameNavigateParamsCapturer capturer(root);
706 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), 718 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(),
707 "location.reload()")); 719 "location.reload()"));
708 capturer.Wait(); 720 capturer.Wait();
709 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT, 721 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT,
710 capturer.params().transition); 722 capturer.params().transition);
711 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); 723 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
724 EXPECT_FALSE(capturer.details().is_in_page);
712 } 725 }
713 726
714 { 727 {
715 // location.replace(). 728 // location.replace().
716 FrameNavigateParamsCapturer capturer(root); 729 FrameNavigateParamsCapturer capturer(root);
717 GURL frame_url(embedded_test_server()->GetURL( 730 GURL frame_url(embedded_test_server()->GetURL(
718 "/navigation_controller/simple_page_1.html")); 731 "/navigation_controller/simple_page_1.html"));
719 std::string script = "location.replace('" + frame_url.spec() + "')"; 732 std::string script = "location.replace('" + frame_url.spec() + "')";
720 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script)); 733 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script));
721 capturer.Wait(); 734 capturer.Wait();
722 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT, 735 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT,
723 capturer.params().transition); 736 capturer.params().transition);
724 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); 737 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
738 EXPECT_FALSE(capturer.details().is_in_page);
725 } 739 }
726 }
727 740
728 // Verify that navigations for NAVIGATION_TYPE_SAME_PAGE are correctly 741 // Now, various in-page navigations.
729 // classified.
730 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
731 NavigationTypeClassification_SamePage) {
732 GURL url1(embedded_test_server()->GetURL(
733 "/navigation_controller/simple_page_1.html"));
734 NavigateToURL(shell(), url1);
735
736 FrameTreeNode* root =
737 static_cast<WebContentsImpl*>(shell()->web_contents())->
738 GetFrameTree()->root();
739
740 {
741 // Simple load.
742 FrameNavigateParamsCapturer capturer(root);
743 GURL frame_url(embedded_test_server()->GetURL(
744 "/navigation_controller/simple_page_1.html"));
745 NavigateFrameToURL(root, frame_url);
746 capturer.Wait();
747 EXPECT_EQ(ui::PAGE_TRANSITION_LINK, capturer.params().transition);
748 EXPECT_EQ(NAVIGATION_TYPE_SAME_PAGE, capturer.details().type);
749 }
750 }
751
752 // Verify that navigations for NAVIGATION_TYPE_IN_PAGE are correctly
753 // classified.
754 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
755 NavigationTypeClassification_InPage) {
756 GURL url1(embedded_test_server()->GetURL(
757 "/navigation_controller/simple_page_1.html"));
758 NavigateToURL(shell(), url1);
759
760 FrameTreeNode* root =
761 static_cast<WebContentsImpl*>(shell()->web_contents())->
762 GetFrameTree()->root();
763 742
764 { 743 {
765 // history.replaceState(). 744 // history.replaceState().
766 FrameNavigateParamsCapturer capturer(root); 745 FrameNavigateParamsCapturer capturer(root);
767 std::string script = 746 std::string script =
768 "history.replaceState({}, 'page 1', 'simple_page_2.html')"; 747 "history.replaceState({}, 'page 2', 'simple_page_2.html')";
769 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script)); 748 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script));
770 capturer.Wait(); 749 capturer.Wait();
771 EXPECT_EQ(ui::PAGE_TRANSITION_LINK, capturer.params().transition); 750 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_CLIENT_REDIRECT,
772 EXPECT_EQ(NAVIGATION_TYPE_IN_PAGE, capturer.details().type); 751 capturer.params().transition);
752 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
773 EXPECT_TRUE(capturer.details().is_in_page); 753 EXPECT_TRUE(capturer.details().is_in_page);
774 } 754 }
775 755
776 // Back and forward across a fragment navigation. 756 // Back and forward across a fragment navigation.
777 757
778 GURL url2(embedded_test_server()->GetURL( 758 GURL url_links(embedded_test_server()->GetURL(
779 "/navigation_controller/page_with_links.html")); 759 "/navigation_controller/page_with_links.html"));
780 NavigateToURL(shell(), url2); 760 NavigateToURL(shell(), url_links);
781 std::string script = "document.getElementById('fraglink').click()"; 761 std::string script = "document.getElementById('fraglink').click()";
782 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script)); 762 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script));
783 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); 763 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
784 764
785 { 765 {
786 // Back. 766 // Back.
787 FrameNavigateParamsCapturer capturer(root); 767 FrameNavigateParamsCapturer capturer(root);
788 shell()->web_contents()->GetController().GoBack(); 768 shell()->web_contents()->GetController().GoBack();
789 capturer.Wait(); 769 capturer.Wait();
790 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED 770 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED
791 | ui::PAGE_TRANSITION_FORWARD_BACK 771 | ui::PAGE_TRANSITION_FORWARD_BACK
792 | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR, 772 | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR,
793 capturer.params().transition); 773 capturer.params().transition);
794 EXPECT_EQ(NAVIGATION_TYPE_IN_PAGE, capturer.details().type); 774 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
795 EXPECT_TRUE(capturer.details().is_in_page); 775 EXPECT_TRUE(capturer.details().is_in_page);
796 } 776 }
797 777
798 { 778 {
799 // Forward. 779 // Forward.
800 FrameNavigateParamsCapturer capturer(root); 780 FrameNavigateParamsCapturer capturer(root);
801 shell()->web_contents()->GetController().GoForward(); 781 shell()->web_contents()->GetController().GoForward();
802 capturer.Wait(); 782 capturer.Wait();
803 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_FORWARD_BACK, 783 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_FORWARD_BACK,
804 capturer.params().transition); 784 capturer.params().transition);
805 EXPECT_EQ(NAVIGATION_TYPE_IN_PAGE, capturer.details().type); 785 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
806 EXPECT_TRUE(capturer.details().is_in_page); 786 EXPECT_TRUE(capturer.details().is_in_page);
807 } 787 }
808 788
809 // Back and forward across a pushState-created navigation. 789 // Back and forward across a pushState-created navigation.
810 790
811 NavigateToURL(shell(), url1); 791 NavigateToURL(shell(), url1);
812 script = "history.pushState({}, 'page 2', 'simple_page_2.html')"; 792 script = "history.pushState({}, 'page 2', 'simple_page_2.html')";
813 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script)); 793 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script));
814 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); 794 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents()));
815 795
816 { 796 {
817 // Back. 797 // Back.
818 FrameNavigateParamsCapturer capturer(root); 798 FrameNavigateParamsCapturer capturer(root);
819 shell()->web_contents()->GetController().GoBack(); 799 shell()->web_contents()->GetController().GoBack();
820 capturer.Wait(); 800 capturer.Wait();
821 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED 801 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED
822 | ui::PAGE_TRANSITION_FORWARD_BACK 802 | ui::PAGE_TRANSITION_FORWARD_BACK
823 | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR, 803 | ui::PAGE_TRANSITION_FROM_ADDRESS_BAR,
824 capturer.params().transition); 804 capturer.params().transition);
825 EXPECT_EQ(NAVIGATION_TYPE_IN_PAGE, capturer.details().type); 805 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
826 EXPECT_TRUE(capturer.details().is_in_page); 806 EXPECT_TRUE(capturer.details().is_in_page);
827 } 807 }
828 808
829 { 809 {
830 // Forward. 810 // Forward.
831 FrameNavigateParamsCapturer capturer(root); 811 FrameNavigateParamsCapturer capturer(root);
832 shell()->web_contents()->GetController().GoForward(); 812 shell()->web_contents()->GetController().GoForward();
833 capturer.Wait(); 813 capturer.Wait();
834 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_FORWARD_BACK, 814 EXPECT_EQ(ui::PAGE_TRANSITION_LINK | ui::PAGE_TRANSITION_FORWARD_BACK,
835 capturer.params().transition); 815 capturer.params().transition);
836 EXPECT_EQ(NAVIGATION_TYPE_IN_PAGE, capturer.details().type); 816 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
837 EXPECT_TRUE(capturer.details().is_in_page); 817 EXPECT_TRUE(capturer.details().is_in_page);
838 } 818 }
839 } 819 }
840 820
821 // Verify that navigations for NAVIGATION_TYPE_SAME_PAGE are correctly
822 // classified.
823 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
824 NavigationTypeClassification_SamePage) {
825 GURL url1(embedded_test_server()->GetURL(
826 "/navigation_controller/simple_page_1.html"));
827 NavigateToURL(shell(), url1);
828
829 FrameTreeNode* root =
830 static_cast<WebContentsImpl*>(shell()->web_contents())->
831 GetFrameTree()->root();
832
833 {
834 // Simple load.
835 FrameNavigateParamsCapturer capturer(root);
836 GURL frame_url(embedded_test_server()->GetURL(
837 "/navigation_controller/simple_page_1.html"));
838 NavigateFrameToURL(root, frame_url);
839 capturer.Wait();
840 EXPECT_EQ(ui::PAGE_TRANSITION_LINK, capturer.params().transition);
841 EXPECT_EQ(NAVIGATION_TYPE_SAME_PAGE, capturer.details().type);
842 }
843 }
844
841 // Verify that navigations for NAVIGATION_TYPE_NEW_SUBFRAME and 845 // Verify that navigations for NAVIGATION_TYPE_NEW_SUBFRAME and
842 // NAVIGATION_TYPE_AUTO_SUBFRAME are properly classified. 846 // NAVIGATION_TYPE_AUTO_SUBFRAME are properly classified.
843 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, 847 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
844 NavigationTypeClassification_NewAndAutoSubframe) { 848 NavigationTypeClassification_NewAndAutoSubframe) {
845 GURL main_url(embedded_test_server()->GetURL( 849 GURL main_url(embedded_test_server()->GetURL(
846 "/navigation_controller/page_with_iframe.html")); 850 "/navigation_controller/page_with_iframe.html"));
847 NavigateToURL(shell(), main_url); 851 NavigateToURL(shell(), main_url);
848 852
849 // It is safe to obtain the root frame tree node here, as it doesn't change. 853 // It is safe to obtain the root frame tree node here, as it doesn't change.
850 FrameTreeNode* root = 854 FrameTreeNode* root =
(...skipping 978 matching lines...) Expand 10 before | Expand all | Expand 10 after
1829 // Now the existing page uses history.replaceState(). 1833 // Now the existing page uses history.replaceState().
1830 FrameNavigateParamsCapturer capturer(root); 1834 FrameNavigateParamsCapturer capturer(root);
1831 capturer.set_wait_for_load(false); 1835 capturer.set_wait_for_load(false);
1832 std::string script = 1836 std::string script =
1833 "history.replaceState({}, '', '" + replace_state_filename + "')"; 1837 "history.replaceState({}, '', '" + replace_state_filename + "')";
1834 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script)); 1838 EXPECT_TRUE(content::ExecuteScript(root->current_frame_host(), script));
1835 capturer.Wait(); 1839 capturer.Wait();
1836 1840
1837 // The fact that there was a pending entry shouldn't interfere with the 1841 // The fact that there was a pending entry shouldn't interfere with the
1838 // classification. 1842 // classification.
1839 EXPECT_EQ(NAVIGATION_TYPE_IN_PAGE, capturer.details().type); 1843 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type);
1844 EXPECT_TRUE(capturer.details().is_in_page);
1840 } 1845 }
1841 1846
1842 ResourceDispatcherHost::Get()->SetDelegate(nullptr); 1847 ResourceDispatcherHost::Get()->SetDelegate(nullptr);
1843 } 1848 }
1844 1849
1845 } // namespace 1850 } // namespace
1846 1851
1847 IN_PROC_BROWSER_TEST_F( 1852 IN_PROC_BROWSER_TEST_F(
1848 NavigationControllerBrowserTest, 1853 NavigationControllerBrowserTest,
1849 NavigationTypeClassification_On1InPageToXWhile2Pending) { 1854 NavigationTypeClassification_On1InPageToXWhile2Pending) {
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
2119 // tricky. 2124 // tricky.
2120 EXPECT_EQ(nullptr, controller.GetPendingEntry()); 2125 EXPECT_EQ(nullptr, controller.GetPendingEntry());
2121 shell()->web_contents()->Stop(); 2126 shell()->web_contents()->Stop();
2122 watcher.Wait(); 2127 watcher.Wait();
2123 } 2128 }
2124 2129
2125 ResourceDispatcherHost::Get()->SetDelegate(nullptr); 2130 ResourceDispatcherHost::Get()->SetDelegate(nullptr);
2126 } 2131 }
2127 2132
2128 } // namespace content 2133 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698