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