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

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

Issue 2225343002: Navigation: move RestoreType and ReloadType into a separate file (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase+ Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698