OLD | NEW |
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 "content/browser/frame_host/navigation_controller_impl.h" | 5 #include "content/browser/frame_host/navigation_controller_impl.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 756 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
767 // The MessageLoopRunner used to spin the message loop. | 767 // The MessageLoopRunner used to spin the message loop. |
768 scoped_refptr<MessageLoopRunner> message_loop_runner_; | 768 scoped_refptr<MessageLoopRunner> message_loop_runner_; |
769 }; | 769 }; |
770 | 770 |
771 } // namespace | 771 } // namespace |
772 | 772 |
773 // Some pages create a popup, then write an iframe into it. This causes a | 773 // Some pages create a popup, then write an iframe into it. This causes a |
774 // subframe navigation without having any committed entry. Such navigations | 774 // subframe navigation without having any committed entry. Such navigations |
775 // just get thrown on the ground, but we shouldn't crash. | 775 // just get thrown on the ground, but we shouldn't crash. |
776 // | 776 // |
777 // This test actually hits NAVIGATION_TYPE_NAV_IGNORE four times. Two of them, | 777 // This test actually hits NavigationType::NAV_IGNORE four times. Two of them, |
778 // the initial window.open() and the iframe creation, don't try to create | 778 // the initial window.open() and the iframe creation, don't try to create |
779 // navigation entries, and the third and fourth, the new navigations, try to. | 779 // navigation entries, and the third and fourth, the new navigations, try to. |
780 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, SubframeOnEmptyPage) { | 780 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, SubframeOnEmptyPage) { |
781 // Navigate to a page to force the renderer process to start. | 781 // Navigate to a page to force the renderer process to start. |
782 EXPECT_TRUE(NavigateToURL(shell(), GURL(url::kAboutBlankURL))); | 782 EXPECT_TRUE(NavigateToURL(shell(), GURL(url::kAboutBlankURL))); |
783 FrameTreeNode* root = static_cast<WebContentsImpl*>(shell()->web_contents()) | 783 FrameTreeNode* root = static_cast<WebContentsImpl*>(shell()->web_contents()) |
784 ->GetFrameTree() | 784 ->GetFrameTree() |
785 ->root(); | 785 ->root(); |
786 | 786 |
787 // Pop open a new window with no last committed entry. | 787 // Pop open a new window with no last committed entry. |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
936 FrameTreeNode* root = | 936 FrameTreeNode* root = |
937 static_cast<WebContentsImpl*>(shell()->web_contents())-> | 937 static_cast<WebContentsImpl*>(shell()->web_contents())-> |
938 GetFrameTree()->root(); | 938 GetFrameTree()->root(); |
939 | 939 |
940 // Navigate to a page that fails to load. It must result in an error page, the | 940 // Navigate to a page that fails to load. It must result in an error page, the |
941 // NEW_PAGE navigation type, and an addition to the history list. | 941 // NEW_PAGE navigation type, and an addition to the history list. |
942 { | 942 { |
943 FrameNavigateParamsCapturer capturer(root); | 943 FrameNavigateParamsCapturer capturer(root); |
944 NavigateFrameToURL(root, error_url); | 944 NavigateFrameToURL(root, error_url); |
945 capturer.Wait(); | 945 capturer.Wait(); |
946 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); | 946 EXPECT_EQ(NavigationType::NEW_PAGE, capturer.details().type); |
947 NavigationEntry* entry = controller.GetLastCommittedEntry(); | 947 NavigationEntry* entry = controller.GetLastCommittedEntry(); |
948 EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType()); | 948 EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType()); |
949 EXPECT_EQ(2, controller.GetEntryCount()); | 949 EXPECT_EQ(2, controller.GetEntryCount()); |
950 } | 950 } |
951 | 951 |
952 // Navigate again to the page that fails to load. It must result in an error | 952 // Navigate again to the page that fails to load. It must result in an error |
953 // page, the EXISTING_PAGE navigation type, and no addition to the history | 953 // page, the EXISTING_PAGE navigation type, and no addition to the history |
954 // list. We do not use SAME_PAGE here; that case only differs in that it | 954 // list. We do not use SAME_PAGE here; that case only differs in that it |
955 // clears the pending entry, and there is no pending entry after a load | 955 // clears the pending entry, and there is no pending entry after a load |
956 // failure. | 956 // failure. |
957 { | 957 { |
958 FrameNavigateParamsCapturer capturer(root); | 958 FrameNavigateParamsCapturer capturer(root); |
959 NavigateFrameToURL(root, error_url); | 959 NavigateFrameToURL(root, error_url); |
960 capturer.Wait(); | 960 capturer.Wait(); |
961 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 961 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
962 NavigationEntry* entry = controller.GetLastCommittedEntry(); | 962 NavigationEntry* entry = controller.GetLastCommittedEntry(); |
963 EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType()); | 963 EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType()); |
964 EXPECT_EQ(2, controller.GetEntryCount()); | 964 EXPECT_EQ(2, controller.GetEntryCount()); |
965 } | 965 } |
966 | 966 |
967 // Make a new entry ... | 967 // Make a new entry ... |
968 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); | 968 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); |
969 EXPECT_EQ(3, controller.GetEntryCount()); | 969 EXPECT_EQ(3, controller.GetEntryCount()); |
970 | 970 |
971 // ... and replace it with a failed load. | 971 // ... and replace it with a failed load. |
972 // TODO(creis): Make this be NEW_PAGE along with the other location.replace | 972 // TODO(creis): Make this be NEW_PAGE along with the other location.replace |
973 // cases. There isn't much impact to having this be EXISTING_PAGE for now. | 973 // cases. There isn't much impact to having this be EXISTING_PAGE for now. |
974 // See https://crbug.com/596707. | 974 // See https://crbug.com/596707. |
975 { | 975 { |
976 FrameNavigateParamsCapturer capturer(root); | 976 FrameNavigateParamsCapturer capturer(root); |
977 RendererLocationReplace(shell(), error_url); | 977 RendererLocationReplace(shell(), error_url); |
978 capturer.Wait(); | 978 capturer.Wait(); |
979 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 979 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
980 NavigationEntry* entry = controller.GetLastCommittedEntry(); | 980 NavigationEntry* entry = controller.GetLastCommittedEntry(); |
981 EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType()); | 981 EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType()); |
982 EXPECT_EQ(3, controller.GetEntryCount()); | 982 EXPECT_EQ(3, controller.GetEntryCount()); |
983 } | 983 } |
984 | 984 |
985 // Make a new web ui page to force a process swap ... | 985 // Make a new web ui page to force a process swap ... |
986 GURL web_ui_page(std::string(kChromeUIScheme) + "://" + | 986 GURL web_ui_page(std::string(kChromeUIScheme) + "://" + |
987 std::string(kChromeUIGpuHost)); | 987 std::string(kChromeUIGpuHost)); |
988 NavigateToURL(shell(), web_ui_page); | 988 NavigateToURL(shell(), web_ui_page); |
989 EXPECT_EQ(4, controller.GetEntryCount()); | 989 EXPECT_EQ(4, controller.GetEntryCount()); |
990 | 990 |
991 // ... and replace it with a failed load. (It is NEW_PAGE for the reason noted | 991 // ... and replace it with a failed load. (It is NEW_PAGE for the reason noted |
992 // above.) | 992 // above.) |
993 { | 993 { |
994 FrameNavigateParamsCapturer capturer(root); | 994 FrameNavigateParamsCapturer capturer(root); |
995 RendererLocationReplace(shell(), error_url); | 995 RendererLocationReplace(shell(), error_url); |
996 capturer.Wait(); | 996 capturer.Wait(); |
997 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); | 997 EXPECT_EQ(NavigationType::NEW_PAGE, capturer.details().type); |
998 NavigationEntry* entry = controller.GetLastCommittedEntry(); | 998 NavigationEntry* entry = controller.GetLastCommittedEntry(); |
999 EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType()); | 999 EXPECT_EQ(PAGE_TYPE_ERROR, entry->GetPageType()); |
1000 EXPECT_EQ(4, controller.GetEntryCount()); | 1000 EXPECT_EQ(4, controller.GetEntryCount()); |
1001 } | 1001 } |
1002 } | 1002 } |
1003 | 1003 |
1004 // Various tests for navigation type classifications. TODO(avi): It's rather | 1004 // Various tests for navigation type classifications. TODO(avi): It's rather |
1005 // bogus that the same info is in two different enums; http://crbug.com/453555. | 1005 // bogus that the same info is in two different enums; http://crbug.com/453555. |
1006 | 1006 |
1007 // Verify that navigations for NAVIGATION_TYPE_NEW_PAGE are correctly | 1007 // Verify that navigations for NavigationType::NEW_PAGE are correctly |
1008 // classified. | 1008 // classified. |
1009 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, | 1009 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, |
1010 NavigationTypeClassification_NewPage) { | 1010 NavigationTypeClassification_NewPage) { |
1011 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); | 1011 NavigateToURL(shell(), GURL(url::kAboutBlankURL)); |
1012 | 1012 |
1013 FrameTreeNode* root = | 1013 FrameTreeNode* root = |
1014 static_cast<WebContentsImpl*>(shell()->web_contents())-> | 1014 static_cast<WebContentsImpl*>(shell()->web_contents())-> |
1015 GetFrameTree()->root(); | 1015 GetFrameTree()->root(); |
1016 | 1016 |
1017 { | 1017 { |
1018 // Simple load. | 1018 // Simple load. |
1019 FrameNavigateParamsCapturer capturer(root); | 1019 FrameNavigateParamsCapturer capturer(root); |
1020 GURL frame_url(embedded_test_server()->GetURL( | 1020 GURL frame_url(embedded_test_server()->GetURL( |
1021 "/navigation_controller/page_with_links.html")); | 1021 "/navigation_controller/page_with_links.html")); |
1022 NavigateFrameToURL(root, frame_url); | 1022 NavigateFrameToURL(root, frame_url); |
1023 capturer.Wait(); | 1023 capturer.Wait(); |
1024 // TODO(avi,creis): Why is this (and quite a few others below) a "link" | 1024 // TODO(avi,creis): Why is this (and quite a few others below) a "link" |
1025 // transition? Lots of these transitions should be cleaned up. | 1025 // transition? Lots of these transitions should be cleaned up. |
1026 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1026 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1027 capturer.params().transition, ui::PAGE_TRANSITION_LINK)); | 1027 capturer.params().transition, ui::PAGE_TRANSITION_LINK)); |
1028 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); | 1028 EXPECT_EQ(NavigationType::NEW_PAGE, capturer.details().type); |
1029 EXPECT_FALSE(capturer.details().is_in_page); | 1029 EXPECT_FALSE(capturer.details().is_in_page); |
1030 } | 1030 } |
1031 | 1031 |
1032 { | 1032 { |
1033 // Load via a fragment link click. | 1033 // Load via a fragment link click. |
1034 FrameNavigateParamsCapturer capturer(root); | 1034 FrameNavigateParamsCapturer capturer(root); |
1035 std::string script = "document.getElementById('fraglink').click()"; | 1035 std::string script = "document.getElementById('fraglink').click()"; |
1036 EXPECT_TRUE(ExecuteScript(root, script)); | 1036 EXPECT_TRUE(ExecuteScript(root, script)); |
1037 capturer.Wait(); | 1037 capturer.Wait(); |
1038 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1038 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1039 capturer.params().transition, ui::PAGE_TRANSITION_LINK)); | 1039 capturer.params().transition, ui::PAGE_TRANSITION_LINK)); |
1040 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); | 1040 EXPECT_EQ(NavigationType::NEW_PAGE, capturer.details().type); |
1041 EXPECT_TRUE(capturer.details().is_in_page); | 1041 EXPECT_TRUE(capturer.details().is_in_page); |
1042 } | 1042 } |
1043 | 1043 |
1044 { | 1044 { |
1045 // Load via link click. | 1045 // Load via link click. |
1046 FrameNavigateParamsCapturer capturer(root); | 1046 FrameNavigateParamsCapturer capturer(root); |
1047 std::string script = "document.getElementById('thelink').click()"; | 1047 std::string script = "document.getElementById('thelink').click()"; |
1048 EXPECT_TRUE(ExecuteScript(root, script)); | 1048 EXPECT_TRUE(ExecuteScript(root, script)); |
1049 capturer.Wait(); | 1049 capturer.Wait(); |
1050 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1050 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1051 capturer.params().transition, ui::PAGE_TRANSITION_LINK)); | 1051 capturer.params().transition, ui::PAGE_TRANSITION_LINK)); |
1052 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); | 1052 EXPECT_EQ(NavigationType::NEW_PAGE, capturer.details().type); |
1053 EXPECT_FALSE(capturer.details().is_in_page); | 1053 EXPECT_FALSE(capturer.details().is_in_page); |
1054 } | 1054 } |
1055 | 1055 |
1056 { | 1056 { |
1057 // location.assign(). | 1057 // location.assign(). |
1058 FrameNavigateParamsCapturer capturer(root); | 1058 FrameNavigateParamsCapturer capturer(root); |
1059 GURL frame_url(embedded_test_server()->GetURL( | 1059 GURL frame_url(embedded_test_server()->GetURL( |
1060 "/navigation_controller/simple_page_2.html")); | 1060 "/navigation_controller/simple_page_2.html")); |
1061 std::string script = "location.assign('" + frame_url.spec() + "')"; | 1061 std::string script = "location.assign('" + frame_url.spec() + "')"; |
1062 EXPECT_TRUE(ExecuteScript(root, script)); | 1062 EXPECT_TRUE(ExecuteScript(root, script)); |
1063 capturer.Wait(); | 1063 capturer.Wait(); |
1064 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1064 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1065 capturer.params().transition, | 1065 capturer.params().transition, |
1066 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | | 1066 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | |
1067 ui::PAGE_TRANSITION_CLIENT_REDIRECT))); | 1067 ui::PAGE_TRANSITION_CLIENT_REDIRECT))); |
1068 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); | 1068 EXPECT_EQ(NavigationType::NEW_PAGE, capturer.details().type); |
1069 EXPECT_FALSE(capturer.details().is_in_page); | 1069 EXPECT_FALSE(capturer.details().is_in_page); |
1070 } | 1070 } |
1071 | 1071 |
1072 { | 1072 { |
1073 // history.pushState(). | 1073 // history.pushState(). |
1074 FrameNavigateParamsCapturer capturer(root); | 1074 FrameNavigateParamsCapturer capturer(root); |
1075 std::string script = | 1075 std::string script = |
1076 "history.pushState({}, 'page 1', 'simple_page_1.html')"; | 1076 "history.pushState({}, 'page 1', 'simple_page_1.html')"; |
1077 EXPECT_TRUE(ExecuteScript(root, script)); | 1077 EXPECT_TRUE(ExecuteScript(root, script)); |
1078 capturer.Wait(); | 1078 capturer.Wait(); |
1079 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1079 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1080 capturer.params().transition, | 1080 capturer.params().transition, |
1081 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | | 1081 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | |
1082 ui::PAGE_TRANSITION_CLIENT_REDIRECT))); | 1082 ui::PAGE_TRANSITION_CLIENT_REDIRECT))); |
1083 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); | 1083 EXPECT_EQ(NavigationType::NEW_PAGE, capturer.details().type); |
1084 EXPECT_TRUE(capturer.details().is_in_page); | 1084 EXPECT_TRUE(capturer.details().is_in_page); |
1085 } | 1085 } |
1086 | 1086 |
1087 if (AreAllSitesIsolatedForTesting()) { | 1087 if (AreAllSitesIsolatedForTesting()) { |
1088 // Cross-process location.replace(). | 1088 // Cross-process location.replace(). |
1089 FrameNavigateParamsCapturer capturer(root); | 1089 FrameNavigateParamsCapturer capturer(root); |
1090 GURL frame_url(embedded_test_server()->GetURL( | 1090 GURL frame_url(embedded_test_server()->GetURL( |
1091 "foo.com", "/navigation_controller/simple_page_1.html")); | 1091 "foo.com", "/navigation_controller/simple_page_1.html")); |
1092 std::string script = "location.replace('" + frame_url.spec() + "')"; | 1092 std::string script = "location.replace('" + frame_url.spec() + "')"; |
1093 EXPECT_TRUE(ExecuteScript(root, script)); | 1093 EXPECT_TRUE(ExecuteScript(root, script)); |
1094 capturer.Wait(); | 1094 capturer.Wait(); |
1095 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1095 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1096 capturer.params().transition, | 1096 capturer.params().transition, |
1097 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | | 1097 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | |
1098 ui::PAGE_TRANSITION_CLIENT_REDIRECT))); | 1098 ui::PAGE_TRANSITION_CLIENT_REDIRECT))); |
1099 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); | 1099 EXPECT_EQ(NavigationType::NEW_PAGE, capturer.details().type); |
1100 EXPECT_FALSE(capturer.details().is_in_page); | 1100 EXPECT_FALSE(capturer.details().is_in_page); |
1101 } | 1101 } |
1102 } | 1102 } |
1103 | 1103 |
1104 // Verify that navigations for NAVIGATION_TYPE_EXISTING_PAGE are correctly | 1104 // Verify that navigations for NavigationType::EXISTING_PAGE are correctly |
1105 // classified. | 1105 // classified. |
1106 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, | 1106 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, |
1107 NavigationTypeClassification_ExistingPage) { | 1107 NavigationTypeClassification_ExistingPage) { |
1108 GURL url1(embedded_test_server()->GetURL( | 1108 GURL url1(embedded_test_server()->GetURL( |
1109 "/navigation_controller/simple_page_1.html")); | 1109 "/navigation_controller/simple_page_1.html")); |
1110 NavigateToURL(shell(), url1); | 1110 NavigateToURL(shell(), url1); |
1111 GURL url2(embedded_test_server()->GetURL( | 1111 GURL url2(embedded_test_server()->GetURL( |
1112 "/navigation_controller/simple_page_2.html")); | 1112 "/navigation_controller/simple_page_2.html")); |
1113 NavigateToURL(shell(), url2); | 1113 NavigateToURL(shell(), url2); |
1114 | 1114 |
1115 FrameTreeNode* root = | 1115 FrameTreeNode* root = |
1116 static_cast<WebContentsImpl*>(shell()->web_contents())-> | 1116 static_cast<WebContentsImpl*>(shell()->web_contents())-> |
1117 GetFrameTree()->root(); | 1117 GetFrameTree()->root(); |
1118 | 1118 |
1119 { | 1119 { |
1120 // Back from the browser side. | 1120 // Back from the browser side. |
1121 FrameNavigateParamsCapturer capturer(root); | 1121 FrameNavigateParamsCapturer capturer(root); |
1122 shell()->web_contents()->GetController().GoBack(); | 1122 shell()->web_contents()->GetController().GoBack(); |
1123 capturer.Wait(); | 1123 capturer.Wait(); |
1124 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1124 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1125 capturer.params().transition, | 1125 capturer.params().transition, |
1126 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | | 1126 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | |
1127 ui::PAGE_TRANSITION_FORWARD_BACK | | 1127 ui::PAGE_TRANSITION_FORWARD_BACK | |
1128 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR))); | 1128 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR))); |
1129 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 1129 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
1130 EXPECT_FALSE(capturer.details().is_in_page); | 1130 EXPECT_FALSE(capturer.details().is_in_page); |
1131 } | 1131 } |
1132 | 1132 |
1133 { | 1133 { |
1134 // Forward from the browser side. | 1134 // Forward from the browser side. |
1135 FrameNavigateParamsCapturer capturer(root); | 1135 FrameNavigateParamsCapturer capturer(root); |
1136 shell()->web_contents()->GetController().GoForward(); | 1136 shell()->web_contents()->GetController().GoForward(); |
1137 capturer.Wait(); | 1137 capturer.Wait(); |
1138 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1138 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1139 capturer.params().transition, | 1139 capturer.params().transition, |
1140 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | | 1140 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | |
1141 ui::PAGE_TRANSITION_FORWARD_BACK | | 1141 ui::PAGE_TRANSITION_FORWARD_BACK | |
1142 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR))); | 1142 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR))); |
1143 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 1143 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
1144 EXPECT_FALSE(capturer.details().is_in_page); | 1144 EXPECT_FALSE(capturer.details().is_in_page); |
1145 } | 1145 } |
1146 | 1146 |
1147 { | 1147 { |
1148 // Back from the renderer side. | 1148 // Back from the renderer side. |
1149 FrameNavigateParamsCapturer capturer(root); | 1149 FrameNavigateParamsCapturer capturer(root); |
1150 EXPECT_TRUE(ExecuteScript(root, "history.back()")); | 1150 EXPECT_TRUE(ExecuteScript(root, "history.back()")); |
1151 capturer.Wait(); | 1151 capturer.Wait(); |
1152 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1152 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1153 capturer.params().transition, | 1153 capturer.params().transition, |
1154 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | | 1154 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | |
1155 ui::PAGE_TRANSITION_FORWARD_BACK | | 1155 ui::PAGE_TRANSITION_FORWARD_BACK | |
1156 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR))); | 1156 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR))); |
1157 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 1157 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
1158 EXPECT_FALSE(capturer.details().is_in_page); | 1158 EXPECT_FALSE(capturer.details().is_in_page); |
1159 } | 1159 } |
1160 | 1160 |
1161 { | 1161 { |
1162 // Forward from the renderer side. | 1162 // Forward from the renderer side. |
1163 FrameNavigateParamsCapturer capturer(root); | 1163 FrameNavigateParamsCapturer capturer(root); |
1164 EXPECT_TRUE(ExecuteScript(root, "history.forward()")); | 1164 EXPECT_TRUE(ExecuteScript(root, "history.forward()")); |
1165 capturer.Wait(); | 1165 capturer.Wait(); |
1166 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1166 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1167 capturer.params().transition, | 1167 capturer.params().transition, |
1168 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | | 1168 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | |
1169 ui::PAGE_TRANSITION_FORWARD_BACK | | 1169 ui::PAGE_TRANSITION_FORWARD_BACK | |
1170 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR))); | 1170 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR))); |
1171 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 1171 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
1172 EXPECT_FALSE(capturer.details().is_in_page); | 1172 EXPECT_FALSE(capturer.details().is_in_page); |
1173 } | 1173 } |
1174 | 1174 |
1175 { | 1175 { |
1176 // Back from the renderer side via history.go(). | 1176 // Back from the renderer side via history.go(). |
1177 FrameNavigateParamsCapturer capturer(root); | 1177 FrameNavigateParamsCapturer capturer(root); |
1178 EXPECT_TRUE(ExecuteScript(root, "history.go(-1)")); | 1178 EXPECT_TRUE(ExecuteScript(root, "history.go(-1)")); |
1179 capturer.Wait(); | 1179 capturer.Wait(); |
1180 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1180 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1181 capturer.params().transition, | 1181 capturer.params().transition, |
1182 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | | 1182 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | |
1183 ui::PAGE_TRANSITION_FORWARD_BACK | | 1183 ui::PAGE_TRANSITION_FORWARD_BACK | |
1184 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR))); | 1184 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR))); |
1185 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 1185 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
1186 EXPECT_FALSE(capturer.details().is_in_page); | 1186 EXPECT_FALSE(capturer.details().is_in_page); |
1187 } | 1187 } |
1188 | 1188 |
1189 { | 1189 { |
1190 // Forward from the renderer side via history.go(). | 1190 // Forward from the renderer side via history.go(). |
1191 FrameNavigateParamsCapturer capturer(root); | 1191 FrameNavigateParamsCapturer capturer(root); |
1192 EXPECT_TRUE(ExecuteScript(root, "history.go(1)")); | 1192 EXPECT_TRUE(ExecuteScript(root, "history.go(1)")); |
1193 capturer.Wait(); | 1193 capturer.Wait(); |
1194 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1194 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1195 capturer.params().transition, | 1195 capturer.params().transition, |
1196 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | | 1196 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | |
1197 ui::PAGE_TRANSITION_FORWARD_BACK | | 1197 ui::PAGE_TRANSITION_FORWARD_BACK | |
1198 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR))); | 1198 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR))); |
1199 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 1199 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
1200 EXPECT_FALSE(capturer.details().is_in_page); | 1200 EXPECT_FALSE(capturer.details().is_in_page); |
1201 } | 1201 } |
1202 | 1202 |
1203 { | 1203 { |
1204 // Reload from the browser side. | 1204 // Reload from the browser side. |
1205 FrameNavigateParamsCapturer capturer(root); | 1205 FrameNavigateParamsCapturer capturer(root); |
1206 shell()->web_contents()->GetController().Reload(false); | 1206 shell()->web_contents()->GetController().Reload(false); |
1207 capturer.Wait(); | 1207 capturer.Wait(); |
1208 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1208 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1209 capturer.params().transition, ui::PAGE_TRANSITION_RELOAD)); | 1209 capturer.params().transition, ui::PAGE_TRANSITION_RELOAD)); |
1210 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 1210 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
1211 EXPECT_FALSE(capturer.details().is_in_page); | 1211 EXPECT_FALSE(capturer.details().is_in_page); |
1212 } | 1212 } |
1213 | 1213 |
1214 { | 1214 { |
1215 // Reload from the renderer side. | 1215 // Reload from the renderer side. |
1216 FrameNavigateParamsCapturer capturer(root); | 1216 FrameNavigateParamsCapturer capturer(root); |
1217 EXPECT_TRUE(ExecuteScript(root, "location.reload()")); | 1217 EXPECT_TRUE(ExecuteScript(root, "location.reload()")); |
1218 capturer.Wait(); | 1218 capturer.Wait(); |
1219 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1219 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1220 capturer.params().transition, | 1220 capturer.params().transition, |
1221 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | | 1221 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | |
1222 ui::PAGE_TRANSITION_CLIENT_REDIRECT))); | 1222 ui::PAGE_TRANSITION_CLIENT_REDIRECT))); |
1223 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 1223 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
1224 EXPECT_FALSE(capturer.details().is_in_page); | 1224 EXPECT_FALSE(capturer.details().is_in_page); |
1225 } | 1225 } |
1226 | 1226 |
1227 { | 1227 { |
1228 // location.replace(). | 1228 // location.replace(). |
1229 // TODO(creis): Change this to be NEW_PAGE with replacement in | 1229 // TODO(creis): Change this to be NEW_PAGE with replacement in |
1230 // https://crbug.com/596707. | 1230 // https://crbug.com/596707. |
1231 FrameNavigateParamsCapturer capturer(root); | 1231 FrameNavigateParamsCapturer capturer(root); |
1232 GURL frame_url(embedded_test_server()->GetURL( | 1232 GURL frame_url(embedded_test_server()->GetURL( |
1233 "/navigation_controller/simple_page_1.html")); | 1233 "/navigation_controller/simple_page_1.html")); |
1234 std::string script = "location.replace('" + frame_url.spec() + "')"; | 1234 std::string script = "location.replace('" + frame_url.spec() + "')"; |
1235 EXPECT_TRUE(ExecuteScript(root, script)); | 1235 EXPECT_TRUE(ExecuteScript(root, script)); |
1236 capturer.Wait(); | 1236 capturer.Wait(); |
1237 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1237 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1238 capturer.params().transition, | 1238 capturer.params().transition, |
1239 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | | 1239 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | |
1240 ui::PAGE_TRANSITION_CLIENT_REDIRECT))); | 1240 ui::PAGE_TRANSITION_CLIENT_REDIRECT))); |
1241 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 1241 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
1242 EXPECT_FALSE(capturer.details().is_in_page); | 1242 EXPECT_FALSE(capturer.details().is_in_page); |
1243 } | 1243 } |
1244 | 1244 |
1245 // Now, various in-page navigations. | 1245 // Now, various in-page navigations. |
1246 | 1246 |
1247 { | 1247 { |
1248 // history.replaceState(). | 1248 // history.replaceState(). |
1249 FrameNavigateParamsCapturer capturer(root); | 1249 FrameNavigateParamsCapturer capturer(root); |
1250 std::string script = | 1250 std::string script = |
1251 "history.replaceState({}, 'page 2', 'simple_page_2.html')"; | 1251 "history.replaceState({}, 'page 2', 'simple_page_2.html')"; |
1252 EXPECT_TRUE(ExecuteScript(root, script)); | 1252 EXPECT_TRUE(ExecuteScript(root, script)); |
1253 capturer.Wait(); | 1253 capturer.Wait(); |
1254 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1254 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1255 capturer.params().transition, | 1255 capturer.params().transition, |
1256 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | | 1256 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | |
1257 ui::PAGE_TRANSITION_CLIENT_REDIRECT))); | 1257 ui::PAGE_TRANSITION_CLIENT_REDIRECT))); |
1258 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 1258 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
1259 EXPECT_TRUE(capturer.details().is_in_page); | 1259 EXPECT_TRUE(capturer.details().is_in_page); |
1260 } | 1260 } |
1261 | 1261 |
1262 // Back and forward across a fragment navigation. | 1262 // Back and forward across a fragment navigation. |
1263 | 1263 |
1264 GURL url_links(embedded_test_server()->GetURL( | 1264 GURL url_links(embedded_test_server()->GetURL( |
1265 "/navigation_controller/page_with_links.html")); | 1265 "/navigation_controller/page_with_links.html")); |
1266 NavigateToURL(shell(), url_links); | 1266 NavigateToURL(shell(), url_links); |
1267 std::string script = "document.getElementById('fraglink').click()"; | 1267 std::string script = "document.getElementById('fraglink').click()"; |
1268 EXPECT_TRUE(ExecuteScript(root, script)); | 1268 EXPECT_TRUE(ExecuteScript(root, script)); |
1269 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); | 1269 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); |
1270 | 1270 |
1271 { | 1271 { |
1272 // Back. | 1272 // Back. |
1273 FrameNavigateParamsCapturer capturer(root); | 1273 FrameNavigateParamsCapturer capturer(root); |
1274 shell()->web_contents()->GetController().GoBack(); | 1274 shell()->web_contents()->GetController().GoBack(); |
1275 capturer.Wait(); | 1275 capturer.Wait(); |
1276 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1276 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1277 capturer.params().transition, | 1277 capturer.params().transition, |
1278 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | | 1278 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | |
1279 ui::PAGE_TRANSITION_FORWARD_BACK | | 1279 ui::PAGE_TRANSITION_FORWARD_BACK | |
1280 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR))); | 1280 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR))); |
1281 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 1281 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
1282 EXPECT_TRUE(capturer.details().is_in_page); | 1282 EXPECT_TRUE(capturer.details().is_in_page); |
1283 } | 1283 } |
1284 | 1284 |
1285 { | 1285 { |
1286 // Forward. | 1286 // Forward. |
1287 FrameNavigateParamsCapturer capturer(root); | 1287 FrameNavigateParamsCapturer capturer(root); |
1288 shell()->web_contents()->GetController().GoForward(); | 1288 shell()->web_contents()->GetController().GoForward(); |
1289 capturer.Wait(); | 1289 capturer.Wait(); |
1290 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1290 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1291 capturer.params().transition, | 1291 capturer.params().transition, |
1292 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | | 1292 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | |
1293 ui::PAGE_TRANSITION_FORWARD_BACK))); | 1293 ui::PAGE_TRANSITION_FORWARD_BACK))); |
1294 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 1294 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
1295 EXPECT_TRUE(capturer.details().is_in_page); | 1295 EXPECT_TRUE(capturer.details().is_in_page); |
1296 } | 1296 } |
1297 | 1297 |
1298 // Back and forward across a pushState-created navigation. | 1298 // Back and forward across a pushState-created navigation. |
1299 | 1299 |
1300 NavigateToURL(shell(), url1); | 1300 NavigateToURL(shell(), url1); |
1301 script = "history.pushState({}, 'page 2', 'simple_page_2.html')"; | 1301 script = "history.pushState({}, 'page 2', 'simple_page_2.html')"; |
1302 EXPECT_TRUE(ExecuteScript(root, script)); | 1302 EXPECT_TRUE(ExecuteScript(root, script)); |
1303 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); | 1303 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); |
1304 | 1304 |
1305 { | 1305 { |
1306 // Back. | 1306 // Back. |
1307 FrameNavigateParamsCapturer capturer(root); | 1307 FrameNavigateParamsCapturer capturer(root); |
1308 shell()->web_contents()->GetController().GoBack(); | 1308 shell()->web_contents()->GetController().GoBack(); |
1309 capturer.Wait(); | 1309 capturer.Wait(); |
1310 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1310 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1311 capturer.params().transition, | 1311 capturer.params().transition, |
1312 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | | 1312 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_TYPED | |
1313 ui::PAGE_TRANSITION_FORWARD_BACK | | 1313 ui::PAGE_TRANSITION_FORWARD_BACK | |
1314 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR))); | 1314 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR))); |
1315 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 1315 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
1316 EXPECT_TRUE(capturer.details().is_in_page); | 1316 EXPECT_TRUE(capturer.details().is_in_page); |
1317 } | 1317 } |
1318 | 1318 |
1319 { | 1319 { |
1320 // Forward. | 1320 // Forward. |
1321 FrameNavigateParamsCapturer capturer(root); | 1321 FrameNavigateParamsCapturer capturer(root); |
1322 shell()->web_contents()->GetController().GoForward(); | 1322 shell()->web_contents()->GetController().GoForward(); |
1323 capturer.Wait(); | 1323 capturer.Wait(); |
1324 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1324 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1325 capturer.params().transition, | 1325 capturer.params().transition, |
1326 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | | 1326 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | |
1327 ui::PAGE_TRANSITION_FORWARD_BACK))); | 1327 ui::PAGE_TRANSITION_FORWARD_BACK))); |
1328 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 1328 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
1329 EXPECT_TRUE(capturer.details().is_in_page); | 1329 EXPECT_TRUE(capturer.details().is_in_page); |
1330 } | 1330 } |
1331 } | 1331 } |
1332 | 1332 |
1333 // Verify that navigations for NAVIGATION_TYPE_SAME_PAGE are correctly | 1333 // Verify that navigations for NavigationType::SAME_PAGE are correctly |
1334 // classified. | 1334 // classified. |
1335 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, | 1335 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, |
1336 NavigationTypeClassification_SamePage) { | 1336 NavigationTypeClassification_SamePage) { |
1337 GURL url1(embedded_test_server()->GetURL( | 1337 GURL url1(embedded_test_server()->GetURL( |
1338 "/navigation_controller/simple_page_1.html")); | 1338 "/navigation_controller/simple_page_1.html")); |
1339 NavigateToURL(shell(), url1); | 1339 NavigateToURL(shell(), url1); |
1340 | 1340 |
1341 FrameTreeNode* root = | 1341 FrameTreeNode* root = |
1342 static_cast<WebContentsImpl*>(shell()->web_contents())-> | 1342 static_cast<WebContentsImpl*>(shell()->web_contents())-> |
1343 GetFrameTree()->root(); | 1343 GetFrameTree()->root(); |
1344 | 1344 |
1345 { | 1345 { |
1346 // Simple load. | 1346 // Simple load. |
1347 FrameNavigateParamsCapturer capturer(root); | 1347 FrameNavigateParamsCapturer capturer(root); |
1348 GURL frame_url(embedded_test_server()->GetURL( | 1348 GURL frame_url(embedded_test_server()->GetURL( |
1349 "/navigation_controller/simple_page_1.html")); | 1349 "/navigation_controller/simple_page_1.html")); |
1350 NavigateFrameToURL(root, frame_url); | 1350 NavigateFrameToURL(root, frame_url); |
1351 capturer.Wait(); | 1351 capturer.Wait(); |
1352 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1352 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1353 capturer.params().transition, ui::PAGE_TRANSITION_LINK)); | 1353 capturer.params().transition, ui::PAGE_TRANSITION_LINK)); |
1354 EXPECT_EQ(NAVIGATION_TYPE_SAME_PAGE, capturer.details().type); | 1354 EXPECT_EQ(NavigationType::SAME_PAGE, capturer.details().type); |
1355 } | 1355 } |
1356 } | 1356 } |
1357 | 1357 |
1358 // Verify that empty GURL navigations are not classified as SAME_PAGE. | 1358 // Verify that empty GURL navigations are not classified as SAME_PAGE. |
1359 // See https://crbug.com/534980. | 1359 // See https://crbug.com/534980. |
1360 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, | 1360 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, |
1361 NavigationTypeClassification_EmptyGURL) { | 1361 NavigationTypeClassification_EmptyGURL) { |
1362 GURL url1(embedded_test_server()->GetURL( | 1362 GURL url1(embedded_test_server()->GetURL( |
1363 "/navigation_controller/simple_page_1.html")); | 1363 "/navigation_controller/simple_page_1.html")); |
1364 NavigateToURL(shell(), url1); | 1364 NavigateToURL(shell(), url1); |
1365 | 1365 |
1366 FrameTreeNode* root = | 1366 FrameTreeNode* root = |
1367 static_cast<WebContentsImpl*>(shell()->web_contents())-> | 1367 static_cast<WebContentsImpl*>(shell()->web_contents())-> |
1368 GetFrameTree()->root(); | 1368 GetFrameTree()->root(); |
1369 | 1369 |
1370 { | 1370 { |
1371 // Load an (invalid) empty GURL. Blink will treat this as an inert commit, | 1371 // Load an (invalid) empty GURL. Blink will treat this as an inert commit, |
1372 // but we don't want it to show up as SAME_PAGE. | 1372 // but we don't want it to show up as SAME_PAGE. |
1373 FrameNavigateParamsCapturer capturer(root); | 1373 FrameNavigateParamsCapturer capturer(root); |
1374 NavigateFrameToURL(root, GURL()); | 1374 NavigateFrameToURL(root, GURL()); |
1375 capturer.Wait(); | 1375 capturer.Wait(); |
1376 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1376 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1377 capturer.params().transition, ui::PAGE_TRANSITION_LINK)); | 1377 capturer.params().transition, ui::PAGE_TRANSITION_LINK)); |
1378 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); | 1378 EXPECT_EQ(NavigationType::NEW_PAGE, capturer.details().type); |
1379 } | 1379 } |
1380 } | 1380 } |
1381 | 1381 |
1382 // Verify that navigations for NAVIGATION_TYPE_NEW_SUBFRAME and | 1382 // Verify that navigations for NavigationType::NEW_SUBFRAME and |
1383 // NAVIGATION_TYPE_AUTO_SUBFRAME are properly classified. | 1383 // NavigationType::AUTO_SUBFRAME are properly classified. |
1384 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, | 1384 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, |
1385 NavigationTypeClassification_NewAndAutoSubframe) { | 1385 NavigationTypeClassification_NewAndAutoSubframe) { |
1386 GURL main_url(embedded_test_server()->GetURL( | 1386 GURL main_url(embedded_test_server()->GetURL( |
1387 "/navigation_controller/page_with_iframe.html")); | 1387 "/navigation_controller/page_with_iframe.html")); |
1388 NavigateToURL(shell(), main_url); | 1388 NavigateToURL(shell(), main_url); |
1389 | 1389 |
1390 // It is safe to obtain the root frame tree node here, as it doesn't change. | 1390 // It is safe to obtain the root frame tree node here, as it doesn't change. |
1391 FrameTreeNode* root = | 1391 FrameTreeNode* root = |
1392 static_cast<WebContentsImpl*>(shell()->web_contents())-> | 1392 static_cast<WebContentsImpl*>(shell()->web_contents())-> |
1393 GetFrameTree()->root(); | 1393 GetFrameTree()->root(); |
(...skipping 14 matching lines...) Expand all Loading... |
1408 | 1408 |
1409 { | 1409 { |
1410 // Simple load. | 1410 // Simple load. |
1411 FrameNavigateParamsCapturer capturer(root->child_at(0)); | 1411 FrameNavigateParamsCapturer capturer(root->child_at(0)); |
1412 GURL frame_url(embedded_test_server()->GetURL( | 1412 GURL frame_url(embedded_test_server()->GetURL( |
1413 "/navigation_controller/simple_page_2.html")); | 1413 "/navigation_controller/simple_page_2.html")); |
1414 NavigateFrameToURL(root->child_at(0), frame_url); | 1414 NavigateFrameToURL(root->child_at(0), frame_url); |
1415 capturer.Wait(); | 1415 capturer.Wait(); |
1416 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1416 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1417 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); | 1417 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); |
1418 EXPECT_EQ(NAVIGATION_TYPE_NEW_SUBFRAME, capturer.details().type); | 1418 EXPECT_EQ(NavigationType::NEW_SUBFRAME, capturer.details().type); |
1419 } | 1419 } |
1420 | 1420 |
1421 { | 1421 { |
1422 // Back. | 1422 // Back. |
1423 FrameNavigateParamsCapturer capturer(root->child_at(0)); | 1423 FrameNavigateParamsCapturer capturer(root->child_at(0)); |
1424 shell()->web_contents()->GetController().GoBack(); | 1424 shell()->web_contents()->GetController().GoBack(); |
1425 capturer.Wait(); | 1425 capturer.Wait(); |
1426 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1426 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1427 capturer.params().transition, ui::PAGE_TRANSITION_AUTO_SUBFRAME)); | 1427 capturer.params().transition, ui::PAGE_TRANSITION_AUTO_SUBFRAME)); |
1428 EXPECT_EQ(NAVIGATION_TYPE_AUTO_SUBFRAME, capturer.details().type); | 1428 EXPECT_EQ(NavigationType::AUTO_SUBFRAME, capturer.details().type); |
1429 } | 1429 } |
1430 | 1430 |
1431 { | 1431 { |
1432 // Forward. | 1432 // Forward. |
1433 FrameNavigateParamsCapturer capturer(root->child_at(0)); | 1433 FrameNavigateParamsCapturer capturer(root->child_at(0)); |
1434 shell()->web_contents()->GetController().GoForward(); | 1434 shell()->web_contents()->GetController().GoForward(); |
1435 capturer.Wait(); | 1435 capturer.Wait(); |
1436 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1436 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1437 capturer.params().transition, ui::PAGE_TRANSITION_AUTO_SUBFRAME)); | 1437 capturer.params().transition, ui::PAGE_TRANSITION_AUTO_SUBFRAME)); |
1438 EXPECT_EQ(NAVIGATION_TYPE_AUTO_SUBFRAME, capturer.details().type); | 1438 EXPECT_EQ(NavigationType::AUTO_SUBFRAME, capturer.details().type); |
1439 } | 1439 } |
1440 | 1440 |
1441 { | 1441 { |
1442 // Simple load. | 1442 // Simple load. |
1443 FrameNavigateParamsCapturer capturer(root->child_at(0)); | 1443 FrameNavigateParamsCapturer capturer(root->child_at(0)); |
1444 GURL frame_url(embedded_test_server()->GetURL( | 1444 GURL frame_url(embedded_test_server()->GetURL( |
1445 "/navigation_controller/page_with_links.html")); | 1445 "/navigation_controller/page_with_links.html")); |
1446 NavigateFrameToURL(root->child_at(0), frame_url); | 1446 NavigateFrameToURL(root->child_at(0), frame_url); |
1447 capturer.Wait(); | 1447 capturer.Wait(); |
1448 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1448 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1449 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); | 1449 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); |
1450 EXPECT_EQ(NAVIGATION_TYPE_NEW_SUBFRAME, capturer.details().type); | 1450 EXPECT_EQ(NavigationType::NEW_SUBFRAME, capturer.details().type); |
1451 } | 1451 } |
1452 | 1452 |
1453 { | 1453 { |
1454 // Load via a fragment link click. | 1454 // Load via a fragment link click. |
1455 FrameNavigateParamsCapturer capturer(root->child_at(0)); | 1455 FrameNavigateParamsCapturer capturer(root->child_at(0)); |
1456 std::string script = "document.getElementById('fraglink').click()"; | 1456 std::string script = "document.getElementById('fraglink').click()"; |
1457 EXPECT_TRUE(ExecuteScript(root->child_at(0), script)); | 1457 EXPECT_TRUE(ExecuteScript(root->child_at(0), script)); |
1458 capturer.Wait(); | 1458 capturer.Wait(); |
1459 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1459 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1460 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); | 1460 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); |
1461 EXPECT_EQ(NAVIGATION_TYPE_NEW_SUBFRAME, capturer.details().type); | 1461 EXPECT_EQ(NavigationType::NEW_SUBFRAME, capturer.details().type); |
1462 } | 1462 } |
1463 | 1463 |
1464 { | 1464 { |
1465 // location.assign(). | 1465 // location.assign(). |
1466 FrameNavigateParamsCapturer capturer(root->child_at(0)); | 1466 FrameNavigateParamsCapturer capturer(root->child_at(0)); |
1467 GURL frame_url(embedded_test_server()->GetURL( | 1467 GURL frame_url(embedded_test_server()->GetURL( |
1468 "/navigation_controller/simple_page_1.html")); | 1468 "/navigation_controller/simple_page_1.html")); |
1469 std::string script = "location.assign('" + frame_url.spec() + "')"; | 1469 std::string script = "location.assign('" + frame_url.spec() + "')"; |
1470 EXPECT_TRUE(ExecuteScript(root->child_at(0), script)); | 1470 EXPECT_TRUE(ExecuteScript(root->child_at(0), script)); |
1471 capturer.Wait(); | 1471 capturer.Wait(); |
1472 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1472 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1473 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); | 1473 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); |
1474 EXPECT_EQ(NAVIGATION_TYPE_NEW_SUBFRAME, capturer.details().type); | 1474 EXPECT_EQ(NavigationType::NEW_SUBFRAME, capturer.details().type); |
1475 } | 1475 } |
1476 | 1476 |
1477 { | 1477 { |
1478 // location.replace(). | 1478 // location.replace(). |
1479 LoadCommittedCapturer capturer(root->child_at(0)); | 1479 LoadCommittedCapturer capturer(root->child_at(0)); |
1480 GURL frame_url(embedded_test_server()->GetURL( | 1480 GURL frame_url(embedded_test_server()->GetURL( |
1481 "/navigation_controller/simple_page_2.html")); | 1481 "/navigation_controller/simple_page_2.html")); |
1482 std::string script = "location.replace('" + frame_url.spec() + "')"; | 1482 std::string script = "location.replace('" + frame_url.spec() + "')"; |
1483 EXPECT_TRUE(ExecuteScript(root->child_at(0), script)); | 1483 EXPECT_TRUE(ExecuteScript(root->child_at(0), script)); |
1484 capturer.Wait(); | 1484 capturer.Wait(); |
1485 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1485 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1486 capturer.transition_type(), ui::PAGE_TRANSITION_AUTO_SUBFRAME)); | 1486 capturer.transition_type(), ui::PAGE_TRANSITION_AUTO_SUBFRAME)); |
1487 } | 1487 } |
1488 | 1488 |
1489 { | 1489 { |
1490 // history.pushState(). | 1490 // history.pushState(). |
1491 FrameNavigateParamsCapturer capturer(root->child_at(0)); | 1491 FrameNavigateParamsCapturer capturer(root->child_at(0)); |
1492 std::string script = | 1492 std::string script = |
1493 "history.pushState({}, 'page 1', 'simple_page_1.html')"; | 1493 "history.pushState({}, 'page 1', 'simple_page_1.html')"; |
1494 EXPECT_TRUE(ExecuteScript(root->child_at(0), script)); | 1494 EXPECT_TRUE(ExecuteScript(root->child_at(0), script)); |
1495 capturer.Wait(); | 1495 capturer.Wait(); |
1496 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1496 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1497 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); | 1497 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); |
1498 EXPECT_EQ(NAVIGATION_TYPE_NEW_SUBFRAME, capturer.details().type); | 1498 EXPECT_EQ(NavigationType::NEW_SUBFRAME, capturer.details().type); |
1499 } | 1499 } |
1500 | 1500 |
1501 { | 1501 { |
1502 // history.replaceState(). | 1502 // history.replaceState(). |
1503 LoadCommittedCapturer capturer(root->child_at(0)); | 1503 LoadCommittedCapturer capturer(root->child_at(0)); |
1504 std::string script = | 1504 std::string script = |
1505 "history.replaceState({}, 'page 2', 'simple_page_2.html')"; | 1505 "history.replaceState({}, 'page 2', 'simple_page_2.html')"; |
1506 EXPECT_TRUE(ExecuteScript(root->child_at(0), script)); | 1506 EXPECT_TRUE(ExecuteScript(root->child_at(0), script)); |
1507 capturer.Wait(); | 1507 capturer.Wait(); |
1508 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1508 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1552 "/navigation_controller/client_redirect.html")); | 1552 "/navigation_controller/client_redirect.html")); |
1553 NavigateFrameToURL(root, frame_url); | 1553 NavigateFrameToURL(root, frame_url); |
1554 capturer.Wait(); | 1554 capturer.Wait(); |
1555 | 1555 |
1556 std::vector<FrameNavigateParams> params = capturer.all_params(); | 1556 std::vector<FrameNavigateParams> params = capturer.all_params(); |
1557 std::vector<LoadCommittedDetails> details = capturer.all_details(); | 1557 std::vector<LoadCommittedDetails> details = capturer.all_details(); |
1558 ASSERT_EQ(2U, params.size()); | 1558 ASSERT_EQ(2U, params.size()); |
1559 ASSERT_EQ(2U, details.size()); | 1559 ASSERT_EQ(2U, details.size()); |
1560 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1560 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1561 params[0].transition, ui::PAGE_TRANSITION_LINK)); | 1561 params[0].transition, ui::PAGE_TRANSITION_LINK)); |
1562 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, details[0].type); | 1562 EXPECT_EQ(NavigationType::NEW_PAGE, details[0].type); |
1563 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1563 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1564 params[1].transition, | 1564 params[1].transition, |
1565 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | | 1565 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | |
1566 ui::PAGE_TRANSITION_CLIENT_REDIRECT))); | 1566 ui::PAGE_TRANSITION_CLIENT_REDIRECT))); |
1567 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, details[1].type); | 1567 EXPECT_EQ(NavigationType::EXISTING_PAGE, details[1].type); |
1568 } | 1568 } |
1569 } | 1569 } |
1570 | 1570 |
1571 // Verify that the LoadCommittedDetails::is_in_page value is properly set for | 1571 // Verify that the LoadCommittedDetails::is_in_page value is properly set for |
1572 // non-IN_PAGE navigations. (It's tested for IN_PAGE navigations with the | 1572 // non-IN_PAGE navigations. (It's tested for IN_PAGE navigations with the |
1573 // NavigationTypeClassification_InPage test.) | 1573 // NavigationTypeClassification_InPage test.) |
1574 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, | 1574 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, |
1575 LoadCommittedDetails_IsInPage) { | 1575 LoadCommittedDetails_IsInPage) { |
1576 GURL links_url(embedded_test_server()->GetURL( | 1576 GURL links_url(embedded_test_server()->GetURL( |
1577 "/navigation_controller/page_with_links.html")); | 1577 "/navigation_controller/page_with_links.html")); |
1578 NavigateToURL(shell(), links_url); | 1578 NavigateToURL(shell(), links_url); |
1579 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); | 1579 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); |
1580 | 1580 |
1581 FrameTreeNode* root = | 1581 FrameTreeNode* root = |
1582 static_cast<WebContentsImpl*>(shell()->web_contents())-> | 1582 static_cast<WebContentsImpl*>(shell()->web_contents())-> |
1583 GetFrameTree()->root(); | 1583 GetFrameTree()->root(); |
1584 | 1584 |
1585 { | 1585 { |
1586 // Do a fragment link click. | 1586 // Do a fragment link click. |
1587 FrameNavigateParamsCapturer capturer(root); | 1587 FrameNavigateParamsCapturer capturer(root); |
1588 std::string script = "document.getElementById('fraglink').click()"; | 1588 std::string script = "document.getElementById('fraglink').click()"; |
1589 EXPECT_TRUE(ExecuteScript(root, script)); | 1589 EXPECT_TRUE(ExecuteScript(root, script)); |
1590 capturer.Wait(); | 1590 capturer.Wait(); |
1591 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1591 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1592 capturer.params().transition, ui::PAGE_TRANSITION_LINK)); | 1592 capturer.params().transition, ui::PAGE_TRANSITION_LINK)); |
1593 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); | 1593 EXPECT_EQ(NavigationType::NEW_PAGE, capturer.details().type); |
1594 EXPECT_TRUE(capturer.details().is_in_page); | 1594 EXPECT_TRUE(capturer.details().is_in_page); |
1595 } | 1595 } |
1596 | 1596 |
1597 { | 1597 { |
1598 // Do a non-fragment link click. | 1598 // Do a non-fragment link click. |
1599 FrameNavigateParamsCapturer capturer(root); | 1599 FrameNavigateParamsCapturer capturer(root); |
1600 std::string script = "document.getElementById('thelink').click()"; | 1600 std::string script = "document.getElementById('thelink').click()"; |
1601 EXPECT_TRUE(ExecuteScript(root, script)); | 1601 EXPECT_TRUE(ExecuteScript(root, script)); |
1602 capturer.Wait(); | 1602 capturer.Wait(); |
1603 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1603 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1604 capturer.params().transition, ui::PAGE_TRANSITION_LINK)); | 1604 capturer.params().transition, ui::PAGE_TRANSITION_LINK)); |
1605 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); | 1605 EXPECT_EQ(NavigationType::NEW_PAGE, capturer.details().type); |
1606 EXPECT_FALSE(capturer.details().is_in_page); | 1606 EXPECT_FALSE(capturer.details().is_in_page); |
1607 } | 1607 } |
1608 | 1608 |
1609 // Second verse, same as the first. (But in a subframe.) | 1609 // Second verse, same as the first. (But in a subframe.) |
1610 | 1610 |
1611 GURL iframe_url(embedded_test_server()->GetURL( | 1611 GURL iframe_url(embedded_test_server()->GetURL( |
1612 "/navigation_controller/page_with_iframe.html")); | 1612 "/navigation_controller/page_with_iframe.html")); |
1613 NavigateToURL(shell(), iframe_url); | 1613 NavigateToURL(shell(), iframe_url); |
1614 | 1614 |
1615 root = static_cast<WebContentsImpl*>(shell()->web_contents())-> | 1615 root = static_cast<WebContentsImpl*>(shell()->web_contents())-> |
1616 GetFrameTree()->root(); | 1616 GetFrameTree()->root(); |
1617 | 1617 |
1618 ASSERT_EQ(1U, root->child_count()); | 1618 ASSERT_EQ(1U, root->child_count()); |
1619 ASSERT_NE(nullptr, root->child_at(0)); | 1619 ASSERT_NE(nullptr, root->child_at(0)); |
1620 | 1620 |
1621 NavigateFrameToURL(root->child_at(0), links_url); | 1621 NavigateFrameToURL(root->child_at(0), links_url); |
1622 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); | 1622 EXPECT_TRUE(WaitForLoadStop(shell()->web_contents())); |
1623 | 1623 |
1624 { | 1624 { |
1625 // Do a fragment link click. | 1625 // Do a fragment link click. |
1626 FrameNavigateParamsCapturer capturer(root->child_at(0)); | 1626 FrameNavigateParamsCapturer capturer(root->child_at(0)); |
1627 std::string script = "document.getElementById('fraglink').click()"; | 1627 std::string script = "document.getElementById('fraglink').click()"; |
1628 EXPECT_TRUE(ExecuteScript(root->child_at(0), script)); | 1628 EXPECT_TRUE(ExecuteScript(root->child_at(0), script)); |
1629 capturer.Wait(); | 1629 capturer.Wait(); |
1630 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1630 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1631 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); | 1631 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); |
1632 EXPECT_EQ(NAVIGATION_TYPE_NEW_SUBFRAME, capturer.details().type); | 1632 EXPECT_EQ(NavigationType::NEW_SUBFRAME, capturer.details().type); |
1633 EXPECT_TRUE(capturer.details().is_in_page); | 1633 EXPECT_TRUE(capturer.details().is_in_page); |
1634 } | 1634 } |
1635 | 1635 |
1636 { | 1636 { |
1637 // Do a non-fragment link click. | 1637 // Do a non-fragment link click. |
1638 FrameNavigateParamsCapturer capturer(root->child_at(0)); | 1638 FrameNavigateParamsCapturer capturer(root->child_at(0)); |
1639 std::string script = "document.getElementById('thelink').click()"; | 1639 std::string script = "document.getElementById('thelink').click()"; |
1640 EXPECT_TRUE(ExecuteScript(root->child_at(0), script)); | 1640 EXPECT_TRUE(ExecuteScript(root->child_at(0), script)); |
1641 capturer.Wait(); | 1641 capturer.Wait(); |
1642 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 1642 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
1643 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); | 1643 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); |
1644 EXPECT_EQ(NAVIGATION_TYPE_NEW_SUBFRAME, capturer.details().type); | 1644 EXPECT_EQ(NavigationType::NEW_SUBFRAME, capturer.details().type); |
1645 EXPECT_FALSE(capturer.details().is_in_page); | 1645 EXPECT_FALSE(capturer.details().is_in_page); |
1646 } | 1646 } |
1647 } | 1647 } |
1648 | 1648 |
1649 // Verify the tree of FrameNavigationEntries after initial about:blank commits | 1649 // Verify the tree of FrameNavigationEntries after initial about:blank commits |
1650 // in subframes, which should not count as real committed loads. | 1650 // in subframes, which should not count as real committed loads. |
1651 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, | 1651 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, |
1652 FrameNavigationEntry_BlankAutoSubframe) { | 1652 FrameNavigationEntry_BlankAutoSubframe) { |
1653 GURL about_blank_url(url::kAboutBlankURL); | 1653 GURL about_blank_url(url::kAboutBlankURL); |
1654 GURL main_url(embedded_test_server()->GetURL( | 1654 GURL main_url(embedded_test_server()->GetURL( |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1957 FrameTreeNode* root = static_cast<WebContentsImpl*>(shell()->web_contents()) | 1957 FrameTreeNode* root = static_cast<WebContentsImpl*>(shell()->web_contents()) |
1958 ->GetFrameTree() | 1958 ->GetFrameTree() |
1959 ->root(); | 1959 ->root(); |
1960 | 1960 |
1961 // 1. Navigate in-page. | 1961 // 1. Navigate in-page. |
1962 { | 1962 { |
1963 FrameNavigateParamsCapturer capturer(root); | 1963 FrameNavigateParamsCapturer capturer(root); |
1964 std::string script = "history.pushState({}, 'foo', 'foo')"; | 1964 std::string script = "history.pushState({}, 'foo', 'foo')"; |
1965 EXPECT_TRUE(ExecuteScript(root, script)); | 1965 EXPECT_TRUE(ExecuteScript(root, script)); |
1966 capturer.Wait(); | 1966 capturer.Wait(); |
1967 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); | 1967 EXPECT_EQ(NavigationType::NEW_PAGE, capturer.details().type); |
1968 EXPECT_TRUE(capturer.details().is_in_page); | 1968 EXPECT_TRUE(capturer.details().is_in_page); |
1969 } | 1969 } |
1970 | 1970 |
1971 // 2. Create an iframe. | 1971 // 2. Create an iframe. |
1972 GURL child_url(embedded_test_server()->GetURL( | 1972 GURL child_url(embedded_test_server()->GetURL( |
1973 "/navigation_controller/simple_page_2.html")); | 1973 "/navigation_controller/simple_page_2.html")); |
1974 { | 1974 { |
1975 LoadCommittedCapturer capturer(shell()->web_contents()); | 1975 LoadCommittedCapturer capturer(shell()->web_contents()); |
1976 std::string script = "var iframe = document.createElement('iframe');" | 1976 std::string script = "var iframe = document.createElement('iframe');" |
1977 "iframe.src = '" + child_url.spec() + "';" | 1977 "iframe.src = '" + child_url.spec() + "';" |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2050 capturer.Wait(); | 2050 capturer.Wait(); |
2051 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 2051 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
2052 capturer.transition_type(), ui::PAGE_TRANSITION_AUTO_SUBFRAME)); | 2052 capturer.transition_type(), ui::PAGE_TRANSITION_AUTO_SUBFRAME)); |
2053 } | 2053 } |
2054 | 2054 |
2055 // TODO(creis): Check subframe entries once we create them in this case. | 2055 // TODO(creis): Check subframe entries once we create them in this case. |
2056 // See https://crbug.com/608402. | 2056 // See https://crbug.com/608402. |
2057 EXPECT_EQ(bar_url, root->child_at(0)->child_at(0)->current_url()); | 2057 EXPECT_EQ(bar_url, root->child_at(0)->child_at(0)->current_url()); |
2058 } | 2058 } |
2059 | 2059 |
2060 // Verify the tree of FrameNavigationEntries after NAVIGATION_TYPE_AUTO_SUBFRAME | 2060 // Verify the tree of FrameNavigationEntries after NavigationType::AUTO_SUBFRAME |
2061 // commits. | 2061 // commits. |
2062 // TODO(creis): Test updating entries for history auto subframe navigations. | 2062 // TODO(creis): Test updating entries for history auto subframe navigations. |
2063 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, | 2063 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, |
2064 FrameNavigationEntry_AutoSubframe) { | 2064 FrameNavigationEntry_AutoSubframe) { |
2065 GURL main_url(embedded_test_server()->GetURL( | 2065 GURL main_url(embedded_test_server()->GetURL( |
2066 "/navigation_controller/simple_page_1.html")); | 2066 "/navigation_controller/simple_page_1.html")); |
2067 NavigateToURL(shell(), main_url); | 2067 NavigateToURL(shell(), main_url); |
2068 const NavigationControllerImpl& controller = | 2068 const NavigationControllerImpl& controller = |
2069 static_cast<const NavigationControllerImpl&>( | 2069 static_cast<const NavigationControllerImpl&>( |
2070 shell()->web_contents()->GetController()); | 2070 shell()->web_contents()->GetController()); |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2247 " |--Site B ------- proxies for A\n" | 2247 " |--Site B ------- proxies for A\n" |
2248 " | +--Site B -- proxies for A\n" | 2248 " | +--Site B -- proxies for A\n" |
2249 " +--Site B ------- proxies for A\n" | 2249 " +--Site B ------- proxies for A\n" |
2250 " +--Site A -- proxies for B\n" | 2250 " +--Site A -- proxies for B\n" |
2251 "Where A = http://127.0.0.1/\n" | 2251 "Where A = http://127.0.0.1/\n" |
2252 " B = http://foo.com/", | 2252 " B = http://foo.com/", |
2253 visualizer.DepictFrameTree(root)); | 2253 visualizer.DepictFrameTree(root)); |
2254 } | 2254 } |
2255 } | 2255 } |
2256 | 2256 |
2257 // Verify the tree of FrameNavigationEntries after NAVIGATION_TYPE_NEW_SUBFRAME | 2257 // Verify the tree of FrameNavigationEntries after NavigationType::NEW_SUBFRAME |
2258 // commits. | 2258 // commits. |
2259 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, | 2259 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, |
2260 FrameNavigationEntry_NewSubframe) { | 2260 FrameNavigationEntry_NewSubframe) { |
2261 GURL main_url(embedded_test_server()->GetURL( | 2261 GURL main_url(embedded_test_server()->GetURL( |
2262 "/navigation_controller/simple_page_1.html")); | 2262 "/navigation_controller/simple_page_1.html")); |
2263 NavigateToURL(shell(), main_url); | 2263 NavigateToURL(shell(), main_url); |
2264 const NavigationControllerImpl& controller = | 2264 const NavigationControllerImpl& controller = |
2265 static_cast<const NavigationControllerImpl&>( | 2265 static_cast<const NavigationControllerImpl&>( |
2266 shell()->web_contents()->GetController()); | 2266 shell()->web_contents()->GetController()); |
2267 FrameTreeNode* root = | 2267 FrameTreeNode* root = |
(...skipping 15 matching lines...) Expand all Loading... |
2283 | 2283 |
2284 // 2. Navigate in the subframe same-site. | 2284 // 2. Navigate in the subframe same-site. |
2285 GURL frame_url2(embedded_test_server()->GetURL( | 2285 GURL frame_url2(embedded_test_server()->GetURL( |
2286 "/navigation_controller/page_with_links.html")); | 2286 "/navigation_controller/page_with_links.html")); |
2287 { | 2287 { |
2288 FrameNavigateParamsCapturer capturer(root->child_at(0)); | 2288 FrameNavigateParamsCapturer capturer(root->child_at(0)); |
2289 NavigateFrameToURL(root->child_at(0), frame_url2); | 2289 NavigateFrameToURL(root->child_at(0), frame_url2); |
2290 capturer.Wait(); | 2290 capturer.Wait(); |
2291 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 2291 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
2292 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); | 2292 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); |
2293 EXPECT_EQ(NAVIGATION_TYPE_NEW_SUBFRAME, capturer.details().type); | 2293 EXPECT_EQ(NavigationType::NEW_SUBFRAME, capturer.details().type); |
2294 } | 2294 } |
2295 | 2295 |
2296 // We should have created a new NavigationEntry with the same main frame URL. | 2296 // We should have created a new NavigationEntry with the same main frame URL. |
2297 EXPECT_EQ(2, controller.GetEntryCount()); | 2297 EXPECT_EQ(2, controller.GetEntryCount()); |
2298 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex()); | 2298 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex()); |
2299 NavigationEntryImpl* entry2 = controller.GetLastCommittedEntry(); | 2299 NavigationEntryImpl* entry2 = controller.GetLastCommittedEntry(); |
2300 EXPECT_NE(entry, entry2); | 2300 EXPECT_NE(entry, entry2); |
2301 EXPECT_EQ(main_url, entry2->GetURL()); | 2301 EXPECT_EQ(main_url, entry2->GetURL()); |
2302 FrameNavigationEntry* root_entry2 = entry2->root_node()->frame_entry.get(); | 2302 FrameNavigationEntry* root_entry2 = entry2->root_node()->frame_entry.get(); |
2303 EXPECT_EQ(main_url, root_entry2->url()); | 2303 EXPECT_EQ(main_url, root_entry2->url()); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2335 capturer.Wait(); | 2335 capturer.Wait(); |
2336 } | 2336 } |
2337 GURL bar_url(embedded_test_server()->GetURL( | 2337 GURL bar_url(embedded_test_server()->GetURL( |
2338 "bar.com", "/navigation_controller/simple_page_1.html")); | 2338 "bar.com", "/navigation_controller/simple_page_1.html")); |
2339 { | 2339 { |
2340 FrameNavigateParamsCapturer capturer(root->child_at(1)->child_at(0)); | 2340 FrameNavigateParamsCapturer capturer(root->child_at(1)->child_at(0)); |
2341 NavigateFrameToURL(root->child_at(1)->child_at(0), bar_url); | 2341 NavigateFrameToURL(root->child_at(1)->child_at(0), bar_url); |
2342 capturer.Wait(); | 2342 capturer.Wait(); |
2343 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 2343 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
2344 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); | 2344 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); |
2345 EXPECT_EQ(NAVIGATION_TYPE_NEW_SUBFRAME, capturer.details().type); | 2345 EXPECT_EQ(NavigationType::NEW_SUBFRAME, capturer.details().type); |
2346 } | 2346 } |
2347 | 2347 |
2348 // We should have created a new NavigationEntry with the same main frame URL. | 2348 // We should have created a new NavigationEntry with the same main frame URL. |
2349 EXPECT_EQ(3, controller.GetEntryCount()); | 2349 EXPECT_EQ(3, controller.GetEntryCount()); |
2350 EXPECT_EQ(2, controller.GetLastCommittedEntryIndex()); | 2350 EXPECT_EQ(2, controller.GetLastCommittedEntryIndex()); |
2351 NavigationEntryImpl* entry3 = controller.GetLastCommittedEntry(); | 2351 NavigationEntryImpl* entry3 = controller.GetLastCommittedEntry(); |
2352 EXPECT_NE(entry, entry3); | 2352 EXPECT_NE(entry, entry3); |
2353 EXPECT_EQ(main_url, entry3->GetURL()); | 2353 EXPECT_EQ(main_url, entry3->GetURL()); |
2354 FrameNavigationEntry* root_entry3 = entry3->root_node()->frame_entry.get(); | 2354 FrameNavigationEntry* root_entry3 = entry3->root_node()->frame_entry.get(); |
2355 EXPECT_EQ(main_url, root_entry3->url()); | 2355 EXPECT_EQ(main_url, root_entry3->url()); |
(...skipping 17 matching lines...) Expand all Loading... |
2373 GURL baz_url(embedded_test_server()->GetURL( | 2373 GURL baz_url(embedded_test_server()->GetURL( |
2374 "baz.com", "/navigation_controller/simple_page_1.html")); | 2374 "baz.com", "/navigation_controller/simple_page_1.html")); |
2375 { | 2375 { |
2376 FrameNavigateParamsCapturer capturer(root->child_at(1)); | 2376 FrameNavigateParamsCapturer capturer(root->child_at(1)); |
2377 std::string script = "var frames = document.getElementsByTagName('iframe');" | 2377 std::string script = "var frames = document.getElementsByTagName('iframe');" |
2378 "frames[1].src = '" + baz_url.spec() + "';"; | 2378 "frames[1].src = '" + baz_url.spec() + "';"; |
2379 EXPECT_TRUE(ExecuteScript(root, script)); | 2379 EXPECT_TRUE(ExecuteScript(root, script)); |
2380 capturer.Wait(); | 2380 capturer.Wait(); |
2381 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 2381 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
2382 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); | 2382 capturer.params().transition, ui::PAGE_TRANSITION_MANUAL_SUBFRAME)); |
2383 EXPECT_EQ(NAVIGATION_TYPE_NEW_SUBFRAME, capturer.details().type); | 2383 EXPECT_EQ(NavigationType::NEW_SUBFRAME, capturer.details().type); |
2384 } | 2384 } |
2385 | 2385 |
2386 // We should have created a new NavigationEntry with the same main frame URL. | 2386 // We should have created a new NavigationEntry with the same main frame URL. |
2387 EXPECT_EQ(4, controller.GetEntryCount()); | 2387 EXPECT_EQ(4, controller.GetEntryCount()); |
2388 EXPECT_EQ(3, controller.GetLastCommittedEntryIndex()); | 2388 EXPECT_EQ(3, controller.GetLastCommittedEntryIndex()); |
2389 NavigationEntryImpl* entry4 = controller.GetLastCommittedEntry(); | 2389 NavigationEntryImpl* entry4 = controller.GetLastCommittedEntry(); |
2390 EXPECT_NE(entry, entry4); | 2390 EXPECT_NE(entry, entry4); |
2391 EXPECT_EQ(main_url, entry4->GetURL()); | 2391 EXPECT_EQ(main_url, entry4->GetURL()); |
2392 FrameNavigationEntry* root_entry4 = entry4->root_node()->frame_entry.get(); | 2392 FrameNavigationEntry* root_entry4 = entry4->root_node()->frame_entry.get(); |
2393 EXPECT_EQ(main_url, root_entry4->url()); | 2393 EXPECT_EQ(main_url, root_entry4->url()); |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2543 EXPECT_EQ(2, controller.GetLastCommittedEntryIndex()); | 2543 EXPECT_EQ(2, controller.GetLastCommittedEntryIndex()); |
2544 NavigationEntryImpl* entry3 = controller.GetLastCommittedEntry(); | 2544 NavigationEntryImpl* entry3 = controller.GetLastCommittedEntry(); |
2545 | 2545 |
2546 // 4. Go back in the subframe. | 2546 // 4. Go back in the subframe. |
2547 { | 2547 { |
2548 FrameNavigateParamsCapturer capturer(root->child_at(0)); | 2548 FrameNavigateParamsCapturer capturer(root->child_at(0)); |
2549 shell()->web_contents()->GetController().GoBack(); | 2549 shell()->web_contents()->GetController().GoBack(); |
2550 capturer.Wait(); | 2550 capturer.Wait(); |
2551 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 2551 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
2552 capturer.params().transition, ui::PAGE_TRANSITION_AUTO_SUBFRAME)); | 2552 capturer.params().transition, ui::PAGE_TRANSITION_AUTO_SUBFRAME)); |
2553 EXPECT_EQ(NAVIGATION_TYPE_AUTO_SUBFRAME, capturer.details().type); | 2553 EXPECT_EQ(NavigationType::AUTO_SUBFRAME, capturer.details().type); |
2554 } | 2554 } |
2555 EXPECT_EQ(3, controller.GetEntryCount()); | 2555 EXPECT_EQ(3, controller.GetEntryCount()); |
2556 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex()); | 2556 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex()); |
2557 EXPECT_EQ(entry2, controller.GetLastCommittedEntry()); | 2557 EXPECT_EQ(entry2, controller.GetLastCommittedEntry()); |
2558 | 2558 |
2559 // Verify subframe entries if they're enabled (e.g. in --site-per-process). | 2559 // Verify subframe entries if they're enabled (e.g. in --site-per-process). |
2560 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { | 2560 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { |
2561 // The entry should have a FrameNavigationEntry for the subframe. | 2561 // The entry should have a FrameNavigationEntry for the subframe. |
2562 ASSERT_EQ(1U, entry2->root_node()->children.size()); | 2562 ASSERT_EQ(1U, entry2->root_node()->children.size()); |
2563 EXPECT_EQ(frame_url2, entry2->root_node()->children[0]->frame_entry->url()); | 2563 EXPECT_EQ(frame_url2, entry2->root_node()->children[0]->frame_entry->url()); |
2564 } else { | 2564 } else { |
2565 // There are no subframe FrameNavigationEntries by default. | 2565 // There are no subframe FrameNavigationEntries by default. |
2566 EXPECT_EQ(0U, entry2->root_node()->children.size()); | 2566 EXPECT_EQ(0U, entry2->root_node()->children.size()); |
2567 } | 2567 } |
2568 | 2568 |
2569 // 5. Go back in the subframe again to the parent page's site. | 2569 // 5. Go back in the subframe again to the parent page's site. |
2570 { | 2570 { |
2571 FrameNavigateParamsCapturer capturer(root->child_at(0)); | 2571 FrameNavigateParamsCapturer capturer(root->child_at(0)); |
2572 shell()->web_contents()->GetController().GoBack(); | 2572 shell()->web_contents()->GetController().GoBack(); |
2573 capturer.Wait(); | 2573 capturer.Wait(); |
2574 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 2574 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
2575 capturer.params().transition, ui::PAGE_TRANSITION_AUTO_SUBFRAME)); | 2575 capturer.params().transition, ui::PAGE_TRANSITION_AUTO_SUBFRAME)); |
2576 EXPECT_EQ(NAVIGATION_TYPE_AUTO_SUBFRAME, capturer.details().type); | 2576 EXPECT_EQ(NavigationType::AUTO_SUBFRAME, capturer.details().type); |
2577 } | 2577 } |
2578 EXPECT_EQ(3, controller.GetEntryCount()); | 2578 EXPECT_EQ(3, controller.GetEntryCount()); |
2579 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); | 2579 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); |
2580 EXPECT_EQ(entry1, controller.GetLastCommittedEntry()); | 2580 EXPECT_EQ(entry1, controller.GetLastCommittedEntry()); |
2581 | 2581 |
2582 // Verify subframe entries if they're enabled (e.g. in --site-per-process). | 2582 // Verify subframe entries if they're enabled (e.g. in --site-per-process). |
2583 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { | 2583 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { |
2584 // The entry should have a FrameNavigationEntry for the subframe. | 2584 // The entry should have a FrameNavigationEntry for the subframe. |
2585 ASSERT_EQ(1U, entry1->root_node()->children.size()); | 2585 ASSERT_EQ(1U, entry1->root_node()->children.size()); |
2586 EXPECT_EQ(frame_url, entry1->root_node()->children[0]->frame_entry->url()); | 2586 EXPECT_EQ(frame_url, entry1->root_node()->children[0]->frame_entry->url()); |
2587 } else { | 2587 } else { |
2588 // There are no subframe FrameNavigationEntries by default. | 2588 // There are no subframe FrameNavigationEntries by default. |
2589 EXPECT_EQ(0U, entry1->root_node()->children.size()); | 2589 EXPECT_EQ(0U, entry1->root_node()->children.size()); |
2590 } | 2590 } |
2591 | 2591 |
2592 // 6. Go forward in the subframe cross-site. | 2592 // 6. Go forward in the subframe cross-site. |
2593 { | 2593 { |
2594 FrameNavigateParamsCapturer capturer(root->child_at(0)); | 2594 FrameNavigateParamsCapturer capturer(root->child_at(0)); |
2595 shell()->web_contents()->GetController().GoForward(); | 2595 shell()->web_contents()->GetController().GoForward(); |
2596 capturer.Wait(); | 2596 capturer.Wait(); |
2597 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 2597 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
2598 capturer.params().transition, ui::PAGE_TRANSITION_AUTO_SUBFRAME)); | 2598 capturer.params().transition, ui::PAGE_TRANSITION_AUTO_SUBFRAME)); |
2599 EXPECT_EQ(NAVIGATION_TYPE_AUTO_SUBFRAME, capturer.details().type); | 2599 EXPECT_EQ(NavigationType::AUTO_SUBFRAME, capturer.details().type); |
2600 } | 2600 } |
2601 EXPECT_EQ(3, controller.GetEntryCount()); | 2601 EXPECT_EQ(3, controller.GetEntryCount()); |
2602 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex()); | 2602 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex()); |
2603 EXPECT_EQ(entry2, controller.GetLastCommittedEntry()); | 2603 EXPECT_EQ(entry2, controller.GetLastCommittedEntry()); |
2604 | 2604 |
2605 // Verify subframe entries if they're enabled (e.g. in --site-per-process). | 2605 // Verify subframe entries if they're enabled (e.g. in --site-per-process). |
2606 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { | 2606 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { |
2607 // The entry should have a FrameNavigationEntry for the subframe. | 2607 // The entry should have a FrameNavigationEntry for the subframe. |
2608 ASSERT_EQ(1U, entry2->root_node()->children.size()); | 2608 ASSERT_EQ(1U, entry2->root_node()->children.size()); |
2609 EXPECT_EQ(frame_url2, entry2->root_node()->children[0]->frame_entry->url()); | 2609 EXPECT_EQ(frame_url2, entry2->root_node()->children[0]->frame_entry->url()); |
2610 } else { | 2610 } else { |
2611 // There are no subframe FrameNavigationEntries by default. | 2611 // There are no subframe FrameNavigationEntries by default. |
2612 EXPECT_EQ(0U, entry2->root_node()->children.size()); | 2612 EXPECT_EQ(0U, entry2->root_node()->children.size()); |
2613 } | 2613 } |
2614 | 2614 |
2615 // 7. Go forward in the subframe again, cross-site. | 2615 // 7. Go forward in the subframe again, cross-site. |
2616 { | 2616 { |
2617 FrameNavigateParamsCapturer capturer(root->child_at(0)); | 2617 FrameNavigateParamsCapturer capturer(root->child_at(0)); |
2618 shell()->web_contents()->GetController().GoForward(); | 2618 shell()->web_contents()->GetController().GoForward(); |
2619 capturer.Wait(); | 2619 capturer.Wait(); |
2620 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 2620 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
2621 capturer.params().transition, ui::PAGE_TRANSITION_AUTO_SUBFRAME)); | 2621 capturer.params().transition, ui::PAGE_TRANSITION_AUTO_SUBFRAME)); |
2622 EXPECT_EQ(NAVIGATION_TYPE_AUTO_SUBFRAME, capturer.details().type); | 2622 EXPECT_EQ(NavigationType::AUTO_SUBFRAME, capturer.details().type); |
2623 } | 2623 } |
2624 EXPECT_EQ(3, controller.GetEntryCount()); | 2624 EXPECT_EQ(3, controller.GetEntryCount()); |
2625 EXPECT_EQ(2, controller.GetLastCommittedEntryIndex()); | 2625 EXPECT_EQ(2, controller.GetLastCommittedEntryIndex()); |
2626 EXPECT_EQ(entry3, controller.GetLastCommittedEntry()); | 2626 EXPECT_EQ(entry3, controller.GetLastCommittedEntry()); |
2627 | 2627 |
2628 // Verify subframe entries if they're enabled (e.g. in --site-per-process). | 2628 // Verify subframe entries if they're enabled (e.g. in --site-per-process). |
2629 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { | 2629 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { |
2630 // The entry should have a FrameNavigationEntry for the subframe. | 2630 // The entry should have a FrameNavigationEntry for the subframe. |
2631 ASSERT_EQ(1U, entry3->root_node()->children.size()); | 2631 ASSERT_EQ(1U, entry3->root_node()->children.size()); |
2632 EXPECT_EQ(frame_url3, entry3->root_node()->children[0]->frame_entry->url()); | 2632 EXPECT_EQ(frame_url3, entry3->root_node()->children[0]->frame_entry->url()); |
(...skipping 894 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3527 entries.push_back(std::move(restored_entry)); | 3527 entries.push_back(std::move(restored_entry)); |
3528 Shell* new_shell = Shell::CreateNewWindow( | 3528 Shell* new_shell = Shell::CreateNewWindow( |
3529 controller.GetBrowserContext(), GURL::EmptyGURL(), nullptr, gfx::Size()); | 3529 controller.GetBrowserContext(), GURL::EmptyGURL(), nullptr, gfx::Size()); |
3530 FrameTreeNode* new_root = | 3530 FrameTreeNode* new_root = |
3531 static_cast<WebContentsImpl*>(new_shell->web_contents()) | 3531 static_cast<WebContentsImpl*>(new_shell->web_contents()) |
3532 ->GetFrameTree() | 3532 ->GetFrameTree() |
3533 ->root(); | 3533 ->root(); |
3534 NavigationControllerImpl& new_controller = | 3534 NavigationControllerImpl& new_controller = |
3535 static_cast<NavigationControllerImpl&>( | 3535 static_cast<NavigationControllerImpl&>( |
3536 new_shell->web_contents()->GetController()); | 3536 new_shell->web_contents()->GetController()); |
3537 new_controller.Restore( | 3537 new_controller.Restore(entries.size() - 1, |
3538 entries.size() - 1, | 3538 RestoreType::LAST_SESSION_EXITED_CLEANLY, &entries); |
3539 NavigationController::RESTORE_LAST_SESSION_EXITED_CLEANLY, &entries); | |
3540 ASSERT_EQ(0u, entries.size()); | 3539 ASSERT_EQ(0u, entries.size()); |
3541 { | 3540 { |
3542 TestNavigationObserver restore_observer(new_shell->web_contents()); | 3541 TestNavigationObserver restore_observer(new_shell->web_contents()); |
3543 new_controller.LoadIfNecessary(); | 3542 new_controller.LoadIfNecessary(); |
3544 restore_observer.Wait(); | 3543 restore_observer.Wait(); |
3545 } | 3544 } |
3546 ASSERT_EQ(1U, new_root->child_count()); | 3545 ASSERT_EQ(1U, new_root->child_count()); |
3547 EXPECT_EQ(main_url_a, new_root->current_url()); | 3546 EXPECT_EQ(main_url_a, new_root->current_url()); |
3548 EXPECT_EQ(frame_url_b, new_root->child_at(0)->current_url()); | 3547 EXPECT_EQ(frame_url_b, new_root->child_at(0)->current_url()); |
3549 | 3548 |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3786 EXPECT_EQ(frame_url, subframe_entry->url()); | 3785 EXPECT_EQ(frame_url, subframe_entry->url()); |
3787 } | 3786 } |
3788 | 3787 |
3789 // 3. Reload the main frame. | 3788 // 3. Reload the main frame. |
3790 { | 3789 { |
3791 FrameNavigateParamsCapturer capturer(root); | 3790 FrameNavigateParamsCapturer capturer(root); |
3792 controller.Reload(false); | 3791 controller.Reload(false); |
3793 capturer.Wait(); | 3792 capturer.Wait(); |
3794 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 3793 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
3795 capturer.params().transition, ui::PAGE_TRANSITION_RELOAD)); | 3794 capturer.params().transition, ui::PAGE_TRANSITION_RELOAD)); |
3796 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 3795 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
3797 EXPECT_FALSE(capturer.details().is_in_page); | 3796 EXPECT_FALSE(capturer.details().is_in_page); |
3798 } | 3797 } |
3799 | 3798 |
3800 // 4. Add the iframe again. | 3799 // 4. Add the iframe again. |
3801 { | 3800 { |
3802 LoadCommittedCapturer capturer(shell()->web_contents()); | 3801 LoadCommittedCapturer capturer(shell()->web_contents()); |
3803 EXPECT_TRUE(ExecuteScript(root, script)); | 3802 EXPECT_TRUE(ExecuteScript(root, script)); |
3804 capturer.Wait(); | 3803 capturer.Wait(); |
3805 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 3804 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
3806 capturer.transition_type(), ui::PAGE_TRANSITION_AUTO_SUBFRAME)); | 3805 capturer.transition_type(), ui::PAGE_TRANSITION_AUTO_SUBFRAME)); |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3956 entries.push_back(std::move(restored_entry)); | 3955 entries.push_back(std::move(restored_entry)); |
3957 Shell* new_shell = Shell::CreateNewWindow( | 3956 Shell* new_shell = Shell::CreateNewWindow( |
3958 controller.GetBrowserContext(), GURL::EmptyGURL(), nullptr, gfx::Size()); | 3957 controller.GetBrowserContext(), GURL::EmptyGURL(), nullptr, gfx::Size()); |
3959 FrameTreeNode* new_root = | 3958 FrameTreeNode* new_root = |
3960 static_cast<WebContentsImpl*>(new_shell->web_contents()) | 3959 static_cast<WebContentsImpl*>(new_shell->web_contents()) |
3961 ->GetFrameTree() | 3960 ->GetFrameTree() |
3962 ->root(); | 3961 ->root(); |
3963 NavigationControllerImpl& new_controller = | 3962 NavigationControllerImpl& new_controller = |
3964 static_cast<NavigationControllerImpl&>( | 3963 static_cast<NavigationControllerImpl&>( |
3965 new_shell->web_contents()->GetController()); | 3964 new_shell->web_contents()->GetController()); |
3966 new_controller.Restore( | 3965 new_controller.Restore(entries.size() - 1, |
3967 entries.size() - 1, | 3966 RestoreType::LAST_SESSION_EXITED_CLEANLY, &entries); |
3968 NavigationController::RESTORE_LAST_SESSION_EXITED_CLEANLY, &entries); | |
3969 ASSERT_EQ(0u, entries.size()); | 3967 ASSERT_EQ(0u, entries.size()); |
3970 { | 3968 { |
3971 TestNavigationObserver restore_observer(new_shell->web_contents()); | 3969 TestNavigationObserver restore_observer(new_shell->web_contents()); |
3972 new_controller.LoadIfNecessary(); | 3970 new_controller.LoadIfNecessary(); |
3973 restore_observer.Wait(); | 3971 restore_observer.Wait(); |
3974 } | 3972 } |
3975 ASSERT_EQ(1U, new_root->child_count()); | 3973 ASSERT_EQ(1U, new_root->child_count()); |
3976 EXPECT_EQ(main_url_a, new_root->current_url()); | 3974 EXPECT_EQ(main_url_a, new_root->current_url()); |
3977 EXPECT_EQ(frame_url_b, new_root->child_at(0)->current_url()); | 3975 EXPECT_EQ(frame_url_b, new_root->child_at(0)->current_url()); |
3978 | 3976 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4022 // Now the existing page uses history.replaceState(). | 4020 // Now the existing page uses history.replaceState(). |
4023 FrameNavigateParamsCapturer capturer(root); | 4021 FrameNavigateParamsCapturer capturer(root); |
4024 capturer.set_wait_for_load(false); | 4022 capturer.set_wait_for_load(false); |
4025 std::string script = | 4023 std::string script = |
4026 "history.replaceState({}, '', '" + replace_state_filename + "')"; | 4024 "history.replaceState({}, '', '" + replace_state_filename + "')"; |
4027 EXPECT_TRUE(ExecuteScript(root, script)); | 4025 EXPECT_TRUE(ExecuteScript(root, script)); |
4028 capturer.Wait(); | 4026 capturer.Wait(); |
4029 | 4027 |
4030 // The fact that there was a pending entry shouldn't interfere with the | 4028 // The fact that there was a pending entry shouldn't interfere with the |
4031 // classification. | 4029 // classification. |
4032 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 4030 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
4033 EXPECT_TRUE(capturer.details().is_in_page); | 4031 EXPECT_TRUE(capturer.details().is_in_page); |
4034 } | 4032 } |
4035 | 4033 |
4036 ResourceDispatcherHost::Get()->SetDelegate(nullptr); | 4034 ResourceDispatcherHost::Get()->SetDelegate(nullptr); |
4037 } | 4035 } |
4038 | 4036 |
4039 } // namespace | 4037 } // namespace |
4040 | 4038 |
4041 IN_PROC_BROWSER_TEST_F( | 4039 IN_PROC_BROWSER_TEST_F( |
4042 NavigationControllerBrowserTest, | 4040 NavigationControllerBrowserTest, |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4108 EXPECT_EQ(entry_count, controller.GetEntryCount()); | 4106 EXPECT_EQ(entry_count, controller.GetEntryCount()); |
4109 | 4107 |
4110 { | 4108 { |
4111 // Now the existing page uses history.pushState() while the pending entry | 4109 // Now the existing page uses history.pushState() while the pending entry |
4112 // for the other navigation still exists. | 4110 // for the other navigation still exists. |
4113 FrameNavigateParamsCapturer capturer(root); | 4111 FrameNavigateParamsCapturer capturer(root); |
4114 capturer.set_wait_for_load(false); | 4112 capturer.set_wait_for_load(false); |
4115 std::string script = "history.pushState({}, '', 'pushed')"; | 4113 std::string script = "history.pushState({}, '', 'pushed')"; |
4116 EXPECT_TRUE(ExecuteScript(root, script)); | 4114 EXPECT_TRUE(ExecuteScript(root, script)); |
4117 capturer.Wait(); | 4115 capturer.Wait(); |
4118 EXPECT_EQ(NAVIGATION_TYPE_NEW_PAGE, capturer.details().type); | 4116 EXPECT_EQ(NavigationType::NEW_PAGE, capturer.details().type); |
4119 EXPECT_TRUE(capturer.details().is_in_page); | 4117 EXPECT_TRUE(capturer.details().is_in_page); |
4120 } | 4118 } |
4121 | 4119 |
4122 // The in-page navigation should not have replaced the previous entry. | 4120 // The in-page navigation should not have replaced the previous entry. |
4123 GURL push_state_url( | 4121 GURL push_state_url( |
4124 embedded_test_server()->GetURL("/navigation_controller/pushed")); | 4122 embedded_test_server()->GetURL("/navigation_controller/pushed")); |
4125 EXPECT_EQ(entry_count + 1, controller.GetEntryCount()); | 4123 EXPECT_EQ(entry_count + 1, controller.GetEntryCount()); |
4126 EXPECT_EQ(push_state_url, controller.GetLastCommittedEntry()->GetURL()); | 4124 EXPECT_EQ(push_state_url, controller.GetLastCommittedEntry()->GetURL()); |
4127 EXPECT_EQ(start_url, controller.GetEntryAtIndex(0)->GetURL()); | 4125 EXPECT_EQ(start_url, controller.GetEntryAtIndex(0)->GetURL()); |
4128 | 4126 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4189 ASSERT_EQ(1U, root->child_count()); | 4187 ASSERT_EQ(1U, root->child_count()); |
4190 ASSERT_NE(nullptr, root->child_at(0)); | 4188 ASSERT_NE(nullptr, root->child_at(0)); |
4191 | 4189 |
4192 { | 4190 { |
4193 // Navigate in the iframe. | 4191 // Navigate in the iframe. |
4194 FrameNavigateParamsCapturer capturer(root->child_at(0)); | 4192 FrameNavigateParamsCapturer capturer(root->child_at(0)); |
4195 GURL frame_url(embedded_test_server()->GetURL( | 4193 GURL frame_url(embedded_test_server()->GetURL( |
4196 "/navigation_controller/simple_page_2.html")); | 4194 "/navigation_controller/simple_page_2.html")); |
4197 NavigateFrameToURL(root->child_at(0), frame_url); | 4195 NavigateFrameToURL(root->child_at(0), frame_url); |
4198 capturer.Wait(); | 4196 capturer.Wait(); |
4199 EXPECT_EQ(NAVIGATION_TYPE_NEW_SUBFRAME, capturer.details().type); | 4197 EXPECT_EQ(NavigationType::NEW_SUBFRAME, capturer.details().type); |
4200 } | 4198 } |
4201 | 4199 |
4202 { | 4200 { |
4203 // Go back in the iframe. | 4201 // Go back in the iframe. |
4204 TestNavigationObserver back_load_observer(shell()->web_contents()); | 4202 TestNavigationObserver back_load_observer(shell()->web_contents()); |
4205 shell()->web_contents()->GetController().GoBack(); | 4203 shell()->web_contents()->GetController().GoBack(); |
4206 back_load_observer.Wait(); | 4204 back_load_observer.Wait(); |
4207 } | 4205 } |
4208 | 4206 |
4209 { | 4207 { |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4286 ASSERT_EQ(1U, root->child_count()); | 4284 ASSERT_EQ(1U, root->child_count()); |
4287 ASSERT_NE(nullptr, root->child_at(0)); | 4285 ASSERT_NE(nullptr, root->child_at(0)); |
4288 | 4286 |
4289 { | 4287 { |
4290 // Navigate in the iframe. | 4288 // Navigate in the iframe. |
4291 FrameNavigateParamsCapturer capturer(root->child_at(0)); | 4289 FrameNavigateParamsCapturer capturer(root->child_at(0)); |
4292 GURL frame_url(embedded_test_server()->GetURL( | 4290 GURL frame_url(embedded_test_server()->GetURL( |
4293 "/navigation_controller/simple_page_2.html")); | 4291 "/navigation_controller/simple_page_2.html")); |
4294 NavigateFrameToURL(root->child_at(0), frame_url); | 4292 NavigateFrameToURL(root->child_at(0), frame_url); |
4295 capturer.Wait(); | 4293 capturer.Wait(); |
4296 EXPECT_EQ(NAVIGATION_TYPE_NEW_SUBFRAME, capturer.details().type); | 4294 EXPECT_EQ(NavigationType::NEW_SUBFRAME, capturer.details().type); |
4297 } | 4295 } |
4298 | 4296 |
4299 { | 4297 { |
4300 // history.replaceState(). | 4298 // history.replaceState(). |
4301 FrameNavigateParamsCapturer capturer(root); | 4299 FrameNavigateParamsCapturer capturer(root); |
4302 std::string script = | 4300 std::string script = |
4303 "history.replaceState({}, 'replaced', 'replaced')"; | 4301 "history.replaceState({}, 'replaced', 'replaced')"; |
4304 EXPECT_TRUE(ExecuteScript(root, script)); | 4302 EXPECT_TRUE(ExecuteScript(root, script)); |
4305 capturer.Wait(); | 4303 capturer.Wait(); |
4306 } | 4304 } |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4457 "foo.com", "/navigation_controller/simple_page_1.html")); | 4455 "foo.com", "/navigation_controller/simple_page_1.html")); |
4458 { | 4456 { |
4459 std::string script = "location.replace('" + redirect_url.spec() + "');"; | 4457 std::string script = "location.replace('" + redirect_url.spec() + "');"; |
4460 FrameNavigateParamsCapturer capturer(root); | 4458 FrameNavigateParamsCapturer capturer(root); |
4461 EXPECT_TRUE(ExecuteScript(shell(), script)); | 4459 EXPECT_TRUE(ExecuteScript(shell(), script)); |
4462 capturer.Wait(); | 4460 capturer.Wait(); |
4463 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | 4461 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( |
4464 capturer.params().transition, | 4462 capturer.params().transition, |
4465 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | | 4463 ui::PageTransitionFromInt(ui::PAGE_TRANSITION_LINK | |
4466 ui::PAGE_TRANSITION_CLIENT_REDIRECT))); | 4464 ui::PAGE_TRANSITION_CLIENT_REDIRECT))); |
4467 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, capturer.details().type); | 4465 EXPECT_EQ(NavigationType::EXISTING_PAGE, capturer.details().type); |
4468 } | 4466 } |
4469 | 4467 |
4470 // Modify an entry in the session history and reload the original request. | 4468 // Modify an entry in the session history and reload the original request. |
4471 { | 4469 { |
4472 // We first send a replaceState() to the renderer, which will cause the | 4470 // We first send a replaceState() to the renderer, which will cause the |
4473 // renderer to send back a DidCommitProvisionalLoad. Immediately after, | 4471 // renderer to send back a DidCommitProvisionalLoad. Immediately after, |
4474 // we send a ReloadOriginalRequest (which in this case is a different | 4472 // we send a ReloadOriginalRequest (which in this case is a different |
4475 // origin) and will also cause the renderer to commit the frame. In the | 4473 // origin) and will also cause the renderer to commit the frame. In the |
4476 // end we verify that both navigations committed and that the URLs are | 4474 // end we verify that both navigations committed and that the URLs are |
4477 // correct. | 4475 // correct. |
(...skipping 1224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5702 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { | 5700 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { |
5703 EXPECT_EQ(1U, nav_entry->root_node()->children.size()); | 5701 EXPECT_EQ(1U, nav_entry->root_node()->children.size()); |
5704 EXPECT_EQ(tree_node, nav_entry->root_node()->children[0]); | 5702 EXPECT_EQ(tree_node, nav_entry->root_node()->children[0]); |
5705 } | 5703 } |
5706 | 5704 |
5707 EXPECT_TRUE(ExecuteScript(root, kRemoveFrameScript)); | 5705 EXPECT_TRUE(ExecuteScript(root, kRemoveFrameScript)); |
5708 EXPECT_EQ(0U, root->child_count()); | 5706 EXPECT_EQ(0U, root->child_count()); |
5709 } | 5707 } |
5710 | 5708 |
5711 } // namespace content | 5709 } // namespace content |
OLD | NEW |