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 "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/macros.h" | 6 #include "base/macros.h" |
7 #include "base/time/time.h" | 7 #include "base/time/time.h" |
8 #include "content/browser/frame_host/navigation_controller_impl.h" | 8 #include "content/browser/frame_host/navigation_controller_impl.h" |
9 #include "content/browser/frame_host/navigation_entry_impl.h" | 9 #include "content/browser/frame_host/navigation_entry_impl.h" |
10 #include "content/browser/frame_host/navigation_request.h" | 10 #include "content/browser/frame_host/navigation_request.h" |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 const Referrer& referrer, | 61 const Referrer& referrer, |
62 ui::PageTransition transition_type) { | 62 ui::PageTransition transition_type) { |
63 NavigationController::LoadURLParams load_params(url); | 63 NavigationController::LoadURLParams load_params(url); |
64 load_params.frame_tree_node_id = node->frame_tree_node_id(); | 64 load_params.frame_tree_node_id = node->frame_tree_node_id(); |
65 load_params.referrer = referrer; | 65 load_params.referrer = referrer; |
66 load_params.transition_type = transition_type; | 66 load_params.transition_type = transition_type; |
67 | 67 |
68 controller().LoadURLWithParams(load_params); | 68 controller().LoadURLWithParams(load_params); |
69 } | 69 } |
70 | 70 |
| 71 NavigationRequest* GetNavigationRequestForFrameTreeNode( |
| 72 FrameTreeNode* frame_tree_node) { |
| 73 return static_cast<NavigatorImpl*>(frame_tree_node->navigator()) |
| 74 ->GetNavigationRequestForNodeForTesting(frame_tree_node); |
| 75 } |
| 76 |
71 TestRenderFrameHost* GetSpeculativeRenderFrameHost(FrameTreeNode* node) { | 77 TestRenderFrameHost* GetSpeculativeRenderFrameHost(FrameTreeNode* node) { |
72 return static_cast<TestRenderFrameHost*>( | 78 return static_cast<TestRenderFrameHost*>( |
73 node->render_manager()->speculative_render_frame_host_.get()); | 79 node->render_manager()->speculative_render_frame_host_.get()); |
74 } | 80 } |
75 | 81 |
76 // Checks if this RenderFrameHost sent a single FrameMsg_CommitNavigation | 82 // Checks if this RenderFrameHost sent a single FrameMsg_CommitNavigation |
77 // since the last clearing of the sink. | 83 // since the last clearing of the sink. |
78 // Note: caller must invoke ClearMessages on the sink at some point before | 84 // Note: caller must invoke ClearMessages on the sink at some point before |
79 // the tracked commit happens to clear up commit messages from previous | 85 // the tracked commit happens to clear up commit messages from previous |
80 // navigations. | 86 // navigations. |
(...skipping 20 matching lines...) Expand all Loading... |
101 TEST_F(NavigatorTestWithBrowserSideNavigation, | 107 TEST_F(NavigatorTestWithBrowserSideNavigation, |
102 SimpleBrowserInitiatedNavigationFromNonLiveRenderer) { | 108 SimpleBrowserInitiatedNavigationFromNonLiveRenderer) { |
103 const GURL kUrl("http://chromium.org/"); | 109 const GURL kUrl("http://chromium.org/"); |
104 | 110 |
105 EXPECT_FALSE(main_test_rfh()->IsRenderFrameLive()); | 111 EXPECT_FALSE(main_test_rfh()->IsRenderFrameLive()); |
106 | 112 |
107 // Start a browser-initiated navigation. | 113 // Start a browser-initiated navigation. |
108 int32 site_instance_id = main_test_rfh()->GetSiteInstance()->GetId(); | 114 int32 site_instance_id = main_test_rfh()->GetSiteInstance()->GetId(); |
109 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 115 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
110 RequestNavigation(node, kUrl); | 116 RequestNavigation(node, kUrl); |
111 NavigationRequest* request = node->navigation_request(); | 117 NavigationRequest* request = GetNavigationRequestForFrameTreeNode(node); |
112 ASSERT_TRUE(request); | 118 ASSERT_TRUE(request); |
113 EXPECT_EQ(kUrl, request->common_params().url); | 119 EXPECT_EQ(kUrl, request->common_params().url); |
114 EXPECT_TRUE(request->browser_initiated()); | 120 EXPECT_TRUE(request->browser_initiated()); |
115 | 121 |
116 // As there's no live renderer the navigation should not wait for a | 122 // As there's no live renderer the navigation should not wait for a |
117 // beforeUnload ACK from the renderer and start right away. | 123 // beforeUnload ACK from the renderer and start right away. |
118 EXPECT_EQ(NavigationRequest::STARTED, request->state()); | 124 EXPECT_EQ(NavigationRequest::STARTED, request->state()); |
119 ASSERT_TRUE(GetLoaderForNavigationRequest(request)); | 125 ASSERT_TRUE(GetLoaderForNavigationRequest(request)); |
120 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 126 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
121 EXPECT_FALSE(node->render_manager()->pending_frame_host()); | 127 EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
122 | 128 |
123 // Have the current RenderFrameHost commit the navigation. | 129 // Have the current RenderFrameHost commit the navigation. |
124 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 130 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
125 GetLoaderForNavigationRequest(request) | 131 GetLoaderForNavigationRequest(request) |
126 ->CallOnResponseStarted(response, MakeEmptyStream()); | 132 ->CallOnResponseStarted(response, MakeEmptyStream()); |
127 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 133 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
128 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state()); | 134 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state()); |
129 | 135 |
130 // Commit the navigation. | 136 // Commit the navigation. |
131 main_test_rfh()->SendNavigate(0, kUrl); | 137 main_test_rfh()->SendNavigate(0, kUrl); |
132 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); | 138 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); |
133 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), | 139 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), |
134 main_test_rfh()->GetSiteInstance()->GetSiteURL()); | 140 main_test_rfh()->GetSiteInstance()->GetSiteURL()); |
135 EXPECT_EQ(kUrl, contents()->GetLastCommittedURL()); | 141 EXPECT_EQ(kUrl, contents()->GetLastCommittedURL()); |
136 EXPECT_FALSE(node->navigation_request()); | 142 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node)); |
137 EXPECT_FALSE(node->render_manager()->pending_frame_host()); | 143 EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
138 | 144 |
139 // The main RenderFrameHost should not have been changed, and the renderer | 145 // The main RenderFrameHost should not have been changed, and the renderer |
140 // should have been initialized. | 146 // should have been initialized. |
141 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); | 147 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); |
142 EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive()); | 148 EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive()); |
143 | 149 |
144 // After a navigation is finished no speculative RenderFrameHost should | 150 // After a navigation is finished no speculative RenderFrameHost should |
145 // exist. | 151 // exist. |
146 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 152 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
147 | 153 |
148 // With PlzNavigate enabled a pending RenderFrameHost should never exist. | 154 // With PlzNavigate enabled a pending RenderFrameHost should never exist. |
149 EXPECT_FALSE(node->render_manager()->pending_frame_host()); | 155 EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
150 } | 156 } |
151 | 157 |
152 // PlzNavigate: Test a complete renderer-initiated same-site navigation. | 158 // PlzNavigate: Test a complete renderer-initiated same-site navigation. |
153 TEST_F(NavigatorTestWithBrowserSideNavigation, | 159 TEST_F(NavigatorTestWithBrowserSideNavigation, |
154 SimpleRendererInitiatedSameSiteNavigation) { | 160 SimpleRendererInitiatedSameSiteNavigation) { |
155 const GURL kUrl1("http://www.chromium.org/"); | 161 const GURL kUrl1("http://www.chromium.org/"); |
156 const GURL kUrl2("http://www.chromium.org/Home"); | 162 const GURL kUrl2("http://www.chromium.org/Home"); |
157 | 163 |
158 contents()->NavigateAndCommit(kUrl1); | 164 contents()->NavigateAndCommit(kUrl1); |
159 EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive()); | 165 EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive()); |
160 | 166 |
161 // Start a renderer-initiated non-user-initiated navigation. | 167 // Start a renderer-initiated non-user-initiated navigation. |
162 process()->sink().ClearMessages(); | 168 process()->sink().ClearMessages(); |
163 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); | 169 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); |
164 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 170 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
165 NavigationRequest* request = node->navigation_request(); | 171 NavigationRequest* request = GetNavigationRequestForFrameTreeNode(node); |
166 ASSERT_TRUE(request); | 172 ASSERT_TRUE(request); |
167 | 173 |
168 // The navigation is immediately started as there's no need to wait for | 174 // The navigation is immediately started as there's no need to wait for |
169 // beforeUnload to be executed. | 175 // beforeUnload to be executed. |
170 EXPECT_EQ(NavigationRequest::STARTED, request->state()); | 176 EXPECT_EQ(NavigationRequest::STARTED, request->state()); |
171 EXPECT_FALSE(request->begin_params().has_user_gesture); | 177 EXPECT_FALSE(request->begin_params().has_user_gesture); |
172 EXPECT_EQ(kUrl2, request->common_params().url); | 178 EXPECT_EQ(kUrl2, request->common_params().url); |
173 EXPECT_FALSE(request->browser_initiated()); | 179 EXPECT_FALSE(request->browser_initiated()); |
174 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 180 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
175 | 181 |
176 // Have the current RenderFrameHost commit the navigation. | 182 // Have the current RenderFrameHost commit the navigation. |
177 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 183 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
178 GetLoaderForNavigationRequest(request) | 184 GetLoaderForNavigationRequest(request) |
179 ->CallOnResponseStarted(response, MakeEmptyStream()); | 185 ->CallOnResponseStarted(response, MakeEmptyStream()); |
180 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 186 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
181 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state()); | 187 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state()); |
182 | 188 |
183 // Commit the navigation. | 189 // Commit the navigation. |
184 main_test_rfh()->SendNavigate(0, kUrl2); | 190 main_test_rfh()->SendNavigate(0, kUrl2); |
185 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); | 191 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); |
186 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl2), | 192 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl2), |
187 main_test_rfh()->GetSiteInstance()->GetSiteURL()); | 193 main_test_rfh()->GetSiteInstance()->GetSiteURL()); |
188 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); | 194 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); |
189 EXPECT_FALSE(node->navigation_request()); | 195 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node)); |
190 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 196 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
191 EXPECT_FALSE(node->render_manager()->pending_frame_host()); | 197 EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
192 } | 198 } |
193 | 199 |
194 // PlzNavigate: Test a complete renderer-initiated navigation that should be | 200 // PlzNavigate: Test a complete renderer-initiated navigation that should be |
195 // cross-site but does not result in a SiteInstance swap because its | 201 // cross-site but does not result in a SiteInstance swap because its |
196 // renderer-initiated. | 202 // renderer-initiated. |
197 TEST_F(NavigatorTestWithBrowserSideNavigation, | 203 TEST_F(NavigatorTestWithBrowserSideNavigation, |
198 SimpleRendererInitiatedCrossSiteNavigation) { | 204 SimpleRendererInitiatedCrossSiteNavigation) { |
199 const GURL kUrl1("http://www.chromium.org/"); | 205 const GURL kUrl1("http://www.chromium.org/"); |
200 const GURL kUrl2("http://www.google.com"); | 206 const GURL kUrl2("http://www.google.com"); |
201 | 207 |
202 contents()->NavigateAndCommit(kUrl1); | 208 contents()->NavigateAndCommit(kUrl1); |
203 EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive()); | 209 EXPECT_TRUE(main_test_rfh()->IsRenderFrameLive()); |
204 int32 site_instance_id_1 = main_test_rfh()->GetSiteInstance()->GetId(); | 210 int32 site_instance_id_1 = main_test_rfh()->GetSiteInstance()->GetId(); |
205 | 211 |
206 // Start a renderer-initiated non-user-initiated navigation. | 212 // Start a renderer-initiated non-user-initiated navigation. |
207 process()->sink().ClearMessages(); | 213 process()->sink().ClearMessages(); |
208 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); | 214 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); |
209 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 215 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
210 NavigationRequest* request = node->navigation_request(); | 216 NavigationRequest* request = GetNavigationRequestForFrameTreeNode(node); |
211 ASSERT_TRUE(request); | 217 ASSERT_TRUE(request); |
212 | 218 |
213 // The navigation is immediately started as there's no need to wait for | 219 // The navigation is immediately started as there's no need to wait for |
214 // beforeUnload to be executed. | 220 // beforeUnload to be executed. |
215 EXPECT_EQ(NavigationRequest::STARTED, request->state()); | 221 EXPECT_EQ(NavigationRequest::STARTED, request->state()); |
216 EXPECT_FALSE(request->begin_params().has_user_gesture); | 222 EXPECT_FALSE(request->begin_params().has_user_gesture); |
217 EXPECT_EQ(kUrl2, request->common_params().url); | 223 EXPECT_EQ(kUrl2, request->common_params().url); |
218 EXPECT_FALSE(request->browser_initiated()); | 224 EXPECT_FALSE(request->browser_initiated()); |
219 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 225 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
220 | 226 |
221 // Have the current RenderFrameHost commit the navigation. | 227 // Have the current RenderFrameHost commit the navigation. |
222 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 228 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
223 GetLoaderForNavigationRequest(request) | 229 GetLoaderForNavigationRequest(request) |
224 ->CallOnResponseStarted(response, MakeEmptyStream()); | 230 ->CallOnResponseStarted(response, MakeEmptyStream()); |
225 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 231 EXPECT_TRUE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
226 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state()); | 232 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, request->state()); |
227 | 233 |
228 // Commit the navigation. | 234 // Commit the navigation. |
229 main_test_rfh()->SendNavigate(0, kUrl2); | 235 main_test_rfh()->SendNavigate(0, kUrl2); |
230 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); | 236 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, main_test_rfh()->rfh_state()); |
231 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); | 237 EXPECT_EQ(kUrl2, contents()->GetLastCommittedURL()); |
232 EXPECT_FALSE(node->navigation_request()); | 238 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node)); |
233 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 239 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
234 EXPECT_FALSE(node->render_manager()->pending_frame_host()); | 240 EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
235 | 241 |
236 // The SiteInstance did not change. | 242 // The SiteInstance did not change. |
237 EXPECT_EQ(site_instance_id_1, main_test_rfh()->GetSiteInstance()->GetId()); | 243 EXPECT_EQ(site_instance_id_1, main_test_rfh()->GetSiteInstance()->GetId()); |
238 } | 244 } |
239 | 245 |
240 // PlzNavigate: Test that a beforeUnload denial cancels the navigation. | 246 // PlzNavigate: Test that a beforeUnload denial cancels the navigation. |
241 TEST_F(NavigatorTestWithBrowserSideNavigation, | 247 TEST_F(NavigatorTestWithBrowserSideNavigation, |
242 BeforeUnloadDenialCancelNavigation) { | 248 BeforeUnloadDenialCancelNavigation) { |
243 const GURL kUrl1("http://www.google.com/"); | 249 const GURL kUrl1("http://www.google.com/"); |
244 const GURL kUrl2("http://www.chromium.org/"); | 250 const GURL kUrl2("http://www.chromium.org/"); |
245 | 251 |
246 contents()->NavigateAndCommit(kUrl1); | 252 contents()->NavigateAndCommit(kUrl1); |
247 | 253 |
248 // Start a new navigation. | 254 // Start a new navigation. |
249 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 255 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
250 RequestNavigation(node, kUrl2); | 256 RequestNavigation(node, kUrl2); |
251 NavigationRequest* request = node->navigation_request(); | 257 NavigationRequest* request = GetNavigationRequestForFrameTreeNode(node); |
252 ASSERT_TRUE(request); | 258 ASSERT_TRUE(request); |
253 EXPECT_TRUE(request->browser_initiated()); | 259 EXPECT_TRUE(request->browser_initiated()); |
254 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, request->state()); | 260 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, request->state()); |
255 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 261 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
256 | 262 |
257 // Simulate a beforeUnload denial. | 263 // Simulate a beforeUnload denial. |
258 main_test_rfh()->SendBeforeUnloadACK(false); | 264 main_test_rfh()->SendBeforeUnloadACK(false); |
259 EXPECT_FALSE(node->navigation_request()); | 265 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node)); |
260 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 266 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
261 } | 267 } |
262 | 268 |
263 // PlzNavigate: Test that a proper NavigationRequest is created by | 269 // PlzNavigate: Test that a proper NavigationRequest is created by |
264 // RequestNavigation. | 270 // RequestNavigation. |
265 TEST_F(NavigatorTestWithBrowserSideNavigation, BeginNavigation) { | 271 TEST_F(NavigatorTestWithBrowserSideNavigation, BeginNavigation) { |
266 const GURL kUrl1("http://www.google.com/"); | 272 const GURL kUrl1("http://www.google.com/"); |
267 const GURL kUrl2("http://www.chromium.org/"); | 273 const GURL kUrl2("http://www.chromium.org/"); |
268 const GURL kUrl3("http://www.gmail.com/"); | 274 const GURL kUrl3("http://www.gmail.com/"); |
269 | 275 |
270 contents()->NavigateAndCommit(kUrl1); | 276 contents()->NavigateAndCommit(kUrl1); |
271 | 277 |
272 // Add a subframe. | 278 // Add a subframe. |
273 FrameTreeNode* root_node = contents()->GetFrameTree()->root(); | 279 FrameTreeNode* root_node = contents()->GetFrameTree()->root(); |
274 TestRenderFrameHost* subframe_rfh = main_test_rfh()->AppendChild("Child"); | 280 TestRenderFrameHost* subframe_rfh = main_test_rfh()->AppendChild("Child"); |
275 ASSERT_TRUE(subframe_rfh); | 281 ASSERT_TRUE(subframe_rfh); |
276 | 282 |
277 // Start a navigation at the subframe. | 283 // Start a navigation at the subframe. |
278 FrameTreeNode* subframe_node = subframe_rfh->frame_tree_node(); | 284 FrameTreeNode* subframe_node = subframe_rfh->frame_tree_node(); |
279 RequestNavigation(subframe_node, kUrl2); | 285 RequestNavigation(subframe_node, kUrl2); |
280 NavigationRequest* subframe_request = subframe_node->navigation_request(); | 286 NavigationRequest* subframe_request = |
| 287 GetNavigationRequestForFrameTreeNode(subframe_node); |
281 TestNavigationURLLoader* subframe_loader = | 288 TestNavigationURLLoader* subframe_loader = |
282 GetLoaderForNavigationRequest(subframe_request); | 289 GetLoaderForNavigationRequest(subframe_request); |
283 | 290 |
284 // Subframe navigations should start right away as they don't have to request | 291 // Subframe navigations should start right away as they don't have to request |
285 // beforeUnload to run at the renderer. | 292 // beforeUnload to run at the renderer. |
286 ASSERT_TRUE(subframe_request); | 293 ASSERT_TRUE(subframe_request); |
287 ASSERT_TRUE(subframe_loader); | 294 ASSERT_TRUE(subframe_loader); |
288 EXPECT_EQ(NavigationRequest::STARTED, subframe_request->state()); | 295 EXPECT_EQ(NavigationRequest::STARTED, subframe_request->state()); |
289 EXPECT_EQ(kUrl2, subframe_request->common_params().url); | 296 EXPECT_EQ(kUrl2, subframe_request->common_params().url); |
290 EXPECT_EQ(kUrl2, subframe_loader->request_info()->common_params.url); | 297 EXPECT_EQ(kUrl2, subframe_loader->request_info()->common_params.url); |
291 // First party for cookies url should be that of the main frame. | 298 // First party for cookies url should be that of the main frame. |
292 EXPECT_EQ(kUrl1, subframe_loader->request_info()->first_party_for_cookies); | 299 EXPECT_EQ(kUrl1, subframe_loader->request_info()->first_party_for_cookies); |
293 EXPECT_FALSE(subframe_loader->request_info()->is_main_frame); | 300 EXPECT_FALSE(subframe_loader->request_info()->is_main_frame); |
294 EXPECT_TRUE(subframe_loader->request_info()->parent_is_main_frame); | 301 EXPECT_TRUE(subframe_loader->request_info()->parent_is_main_frame); |
295 EXPECT_TRUE(subframe_request->browser_initiated()); | 302 EXPECT_TRUE(subframe_request->browser_initiated()); |
296 EXPECT_FALSE(GetSpeculativeRenderFrameHost(root_node)); | 303 EXPECT_FALSE(GetSpeculativeRenderFrameHost(root_node)); |
297 | 304 |
298 // Subframe navigations should never create a speculative RenderFrameHost, | 305 // Subframe navigations should never create a speculative RenderFrameHost, |
299 // unless site-per-process is enabled. In that case, as the subframe | 306 // unless site-per-process is enabled. In that case, as the subframe |
300 // navigation is to a different site and is still ongoing, it should have one. | 307 // navigation is to a different site and is still ongoing, it should have one. |
301 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 308 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
302 switches::kSitePerProcess)) { | 309 switches::kSitePerProcess)) { |
303 EXPECT_TRUE(GetSpeculativeRenderFrameHost(subframe_node)); | 310 EXPECT_TRUE(GetSpeculativeRenderFrameHost(subframe_node)); |
304 } else { | 311 } else { |
305 EXPECT_FALSE(GetSpeculativeRenderFrameHost(subframe_node)); | 312 EXPECT_FALSE(GetSpeculativeRenderFrameHost(subframe_node)); |
306 } | 313 } |
307 | 314 |
308 // Now start a navigation at the root node. | 315 // Now start a navigation at the root node. |
309 RequestNavigation(root_node, kUrl3); | 316 RequestNavigation(root_node, kUrl3); |
310 NavigationRequest* main_request = root_node->navigation_request(); | 317 NavigationRequest* main_request = |
| 318 GetNavigationRequestForFrameTreeNode(root_node); |
311 ASSERT_TRUE(main_request); | 319 ASSERT_TRUE(main_request); |
312 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, | 320 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, |
313 main_request->state()); | 321 main_request->state()); |
314 EXPECT_FALSE(GetSpeculativeRenderFrameHost(root_node)); | 322 EXPECT_FALSE(GetSpeculativeRenderFrameHost(root_node)); |
315 | 323 |
316 // Simulate a BeforeUnloadACK IPC on the main frame. | 324 // Simulate a BeforeUnloadACK IPC on the main frame. |
317 main_test_rfh()->SendBeforeUnloadACK(true); | 325 main_test_rfh()->SendBeforeUnloadACK(true); |
318 TestNavigationURLLoader* main_loader = | 326 TestNavigationURLLoader* main_loader = |
319 GetLoaderForNavigationRequest(main_request); | 327 GetLoaderForNavigationRequest(main_request); |
320 EXPECT_EQ(kUrl3, main_request->common_params().url); | 328 EXPECT_EQ(kUrl3, main_request->common_params().url); |
(...skipping 28 matching lines...) Expand all Loading... |
349 | 357 |
350 // Load a URL. | 358 // Load a URL. |
351 contents()->NavigateAndCommit(kUrl1); | 359 contents()->NavigateAndCommit(kUrl1); |
352 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 360 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
353 | 361 |
354 // Navigate to a different site. | 362 // Navigate to a different site. |
355 process()->sink().ClearMessages(); | 363 process()->sink().ClearMessages(); |
356 RequestNavigation(node, kUrl2); | 364 RequestNavigation(node, kUrl2); |
357 main_test_rfh()->SendBeforeUnloadACK(true); | 365 main_test_rfh()->SendBeforeUnloadACK(true); |
358 | 366 |
359 NavigationRequest* main_request = node->navigation_request(); | 367 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); |
360 ASSERT_TRUE(main_request); | 368 ASSERT_TRUE(main_request); |
361 | 369 |
362 // Navigations to a different site do create a speculative RenderFrameHost. | 370 // Navigations to a different site do create a speculative RenderFrameHost. |
363 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 371 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
364 | 372 |
365 // Commit an HTTP 204 response. | 373 // Commit an HTTP 204 response. |
366 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 374 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
367 const char kNoContentHeaders[] = "HTTP/1.1 204 No Content\0\0"; | 375 const char kNoContentHeaders[] = "HTTP/1.1 204 No Content\0\0"; |
368 response->head.headers = new net::HttpResponseHeaders( | 376 response->head.headers = new net::HttpResponseHeaders( |
369 std::string(kNoContentHeaders, arraysize(kNoContentHeaders))); | 377 std::string(kNoContentHeaders, arraysize(kNoContentHeaders))); |
370 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( | 378 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( |
371 response, MakeEmptyStream()); | 379 response, MakeEmptyStream()); |
372 | 380 |
373 // There should be no pending nor speculative RenderFrameHost; the navigation | 381 // There should be no pending nor speculative RenderFrameHost; the navigation |
374 // was aborted. | 382 // was aborted. |
375 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 383 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
376 EXPECT_FALSE(node->navigation_request()); | 384 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node)); |
377 EXPECT_FALSE(node->render_manager()->pending_frame_host()); | 385 EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
378 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 386 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
379 | 387 |
380 // Now, repeat the test with 205 Reset Content. | 388 // Now, repeat the test with 205 Reset Content. |
381 | 389 |
382 // Navigate to a different site again. | 390 // Navigate to a different site again. |
383 process()->sink().ClearMessages(); | 391 process()->sink().ClearMessages(); |
384 RequestNavigation(node, kUrl2); | 392 RequestNavigation(node, kUrl2); |
385 main_test_rfh()->SendBeforeUnloadACK(true); | 393 main_test_rfh()->SendBeforeUnloadACK(true); |
386 | 394 |
387 main_request = node->navigation_request(); | 395 main_request = GetNavigationRequestForFrameTreeNode(node); |
388 ASSERT_TRUE(main_request); | 396 ASSERT_TRUE(main_request); |
389 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 397 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
390 | 398 |
391 // Commit an HTTP 205 response. | 399 // Commit an HTTP 205 response. |
392 response = new ResourceResponse; | 400 response = new ResourceResponse; |
393 const char kResetContentHeaders[] = "HTTP/1.1 205 Reset Content\0\0"; | 401 const char kResetContentHeaders[] = "HTTP/1.1 205 Reset Content\0\0"; |
394 response->head.headers = new net::HttpResponseHeaders( | 402 response->head.headers = new net::HttpResponseHeaders( |
395 std::string(kResetContentHeaders, arraysize(kResetContentHeaders))); | 403 std::string(kResetContentHeaders, arraysize(kResetContentHeaders))); |
396 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( | 404 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( |
397 response, MakeEmptyStream()); | 405 response, MakeEmptyStream()); |
398 | 406 |
399 // There should be no pending nor speculative RenderFrameHost; the navigation | 407 // There should be no pending nor speculative RenderFrameHost; the navigation |
400 // was aborted. | 408 // was aborted. |
401 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 409 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
402 EXPECT_FALSE(node->navigation_request()); | 410 EXPECT_FALSE(GetNavigationRequestForFrameTreeNode(node)); |
403 EXPECT_FALSE(node->render_manager()->pending_frame_host()); | 411 EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
404 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 412 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
405 } | 413 } |
406 | 414 |
407 // PlzNavigate: Test that a new RenderFrameHost is created when doing a cross | 415 // PlzNavigate: Test that a new RenderFrameHost is created when doing a cross |
408 // site navigation. | 416 // site navigation. |
409 TEST_F(NavigatorTestWithBrowserSideNavigation, CrossSiteNavigation) { | 417 TEST_F(NavigatorTestWithBrowserSideNavigation, CrossSiteNavigation) { |
410 const GURL kUrl1("http://www.chromium.org/"); | 418 const GURL kUrl1("http://www.chromium.org/"); |
411 const GURL kUrl2("http://www.google.com/"); | 419 const GURL kUrl2("http://www.google.com/"); |
412 | 420 |
413 contents()->NavigateAndCommit(kUrl1); | 421 contents()->NavigateAndCommit(kUrl1); |
414 RenderFrameHostImpl* initial_rfh = main_test_rfh(); | 422 RenderFrameHostImpl* initial_rfh = main_test_rfh(); |
415 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 423 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
416 | 424 |
417 // Navigate to a different site. | 425 // Navigate to a different site. |
418 process()->sink().ClearMessages(); | 426 process()->sink().ClearMessages(); |
419 RequestNavigation(node, kUrl2); | 427 RequestNavigation(node, kUrl2); |
420 NavigationRequest* main_request = node->navigation_request(); | 428 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); |
421 ASSERT_TRUE(main_request); | 429 ASSERT_TRUE(main_request); |
422 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 430 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
423 | 431 |
424 // Receive the beforeUnload ACK. | 432 // Receive the beforeUnload ACK. |
425 main_test_rfh()->SendBeforeUnloadACK(true); | 433 main_test_rfh()->SendBeforeUnloadACK(true); |
426 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); | 434 EXPECT_TRUE(GetSpeculativeRenderFrameHost(node)); |
427 | 435 |
428 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 436 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
429 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( | 437 GetLoaderForNavigationRequest(main_request)->CallOnResponseStarted( |
430 response, MakeEmptyStream()); | 438 response, MakeEmptyStream()); |
(...skipping 19 matching lines...) Expand all Loading... |
450 const GURL kUrl2("http://www.google.com/"); | 458 const GURL kUrl2("http://www.google.com/"); |
451 | 459 |
452 contents()->NavigateAndCommit(kUrl1); | 460 contents()->NavigateAndCommit(kUrl1); |
453 RenderFrameHostImpl* rfh = main_test_rfh(); | 461 RenderFrameHostImpl* rfh = main_test_rfh(); |
454 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 462 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
455 | 463 |
456 // Navigate to a URL on the same site. | 464 // Navigate to a URL on the same site. |
457 process()->sink().ClearMessages(); | 465 process()->sink().ClearMessages(); |
458 RequestNavigation(node, kUrl1); | 466 RequestNavigation(node, kUrl1); |
459 main_test_rfh()->SendBeforeUnloadACK(true); | 467 main_test_rfh()->SendBeforeUnloadACK(true); |
460 NavigationRequest* main_request = node->navigation_request(); | 468 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); |
461 ASSERT_TRUE(main_request); | 469 ASSERT_TRUE(main_request); |
462 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 470 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
463 | 471 |
464 // It then redirects to another site. | 472 // It then redirects to another site. |
465 GetLoaderForNavigationRequest(main_request)->SimulateServerRedirect(kUrl2); | 473 GetLoaderForNavigationRequest(main_request)->SimulateServerRedirect(kUrl2); |
466 | 474 |
467 // The redirect should have been followed. | 475 // The redirect should have been followed. |
468 EXPECT_EQ(1, GetLoaderForNavigationRequest(main_request)->redirect_count()); | 476 EXPECT_EQ(1, GetLoaderForNavigationRequest(main_request)->redirect_count()); |
469 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 477 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
470 | 478 |
(...skipping 29 matching lines...) Expand all Loading... |
500 const GURL kUrl2_site = SiteInstance::GetSiteForURL(browser_context(), kUrl2); | 508 const GURL kUrl2_site = SiteInstance::GetSiteForURL(browser_context(), kUrl2); |
501 | 509 |
502 // Initialization. | 510 // Initialization. |
503 contents()->NavigateAndCommit(kUrl0); | 511 contents()->NavigateAndCommit(kUrl0); |
504 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 512 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
505 | 513 |
506 // Request navigation to the 1st URL. | 514 // Request navigation to the 1st URL. |
507 process()->sink().ClearMessages(); | 515 process()->sink().ClearMessages(); |
508 RequestNavigation(node, kUrl1); | 516 RequestNavigation(node, kUrl1); |
509 main_test_rfh()->SendBeforeUnloadACK(true); | 517 main_test_rfh()->SendBeforeUnloadACK(true); |
510 NavigationRequest* request1 = node->navigation_request(); | 518 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); |
511 ASSERT_TRUE(request1); | 519 ASSERT_TRUE(request1); |
512 EXPECT_EQ(kUrl1, request1->common_params().url); | 520 EXPECT_EQ(kUrl1, request1->common_params().url); |
513 EXPECT_TRUE(request1->browser_initiated()); | 521 EXPECT_TRUE(request1->browser_initiated()); |
514 base::WeakPtr<TestNavigationURLLoader> loader1 = | 522 base::WeakPtr<TestNavigationURLLoader> loader1 = |
515 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); | 523 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); |
516 EXPECT_TRUE(loader1); | 524 EXPECT_TRUE(loader1); |
517 | 525 |
518 // Confirm a speculative RenderFrameHost was created. | 526 // Confirm a speculative RenderFrameHost was created. |
519 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 527 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
520 ASSERT_TRUE(speculative_rfh); | 528 ASSERT_TRUE(speculative_rfh); |
521 int32 site_instance_id_1 = speculative_rfh->GetSiteInstance()->GetId(); | 529 int32 site_instance_id_1 = speculative_rfh->GetSiteInstance()->GetId(); |
522 EXPECT_EQ(kUrl1_site, speculative_rfh->GetSiteInstance()->GetSiteURL()); | 530 EXPECT_EQ(kUrl1_site, speculative_rfh->GetSiteInstance()->GetSiteURL()); |
523 | 531 |
524 // Request navigation to the 2nd URL; the NavigationRequest must have been | 532 // Request navigation to the 2nd URL; the NavigationRequest must have been |
525 // replaced by a new one with a different URL. | 533 // replaced by a new one with a different URL. |
526 RequestNavigation(node, kUrl2); | 534 RequestNavigation(node, kUrl2); |
527 main_test_rfh()->SendBeforeUnloadACK(true); | 535 main_test_rfh()->SendBeforeUnloadACK(true); |
528 NavigationRequest* request2 = node->navigation_request(); | 536 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); |
529 ASSERT_TRUE(request2); | 537 ASSERT_TRUE(request2); |
530 EXPECT_EQ(kUrl2, request2->common_params().url); | 538 EXPECT_EQ(kUrl2, request2->common_params().url); |
531 EXPECT_TRUE(request2->browser_initiated()); | 539 EXPECT_TRUE(request2->browser_initiated()); |
532 | 540 |
533 // Confirm that the first loader got destroyed. | 541 // Confirm that the first loader got destroyed. |
534 EXPECT_FALSE(loader1); | 542 EXPECT_FALSE(loader1); |
535 | 543 |
536 // Confirm that a new speculative RenderFrameHost was created. | 544 // Confirm that a new speculative RenderFrameHost was created. |
537 speculative_rfh = GetSpeculativeRenderFrameHost(node); | 545 speculative_rfh = GetSpeculativeRenderFrameHost(node); |
538 ASSERT_TRUE(speculative_rfh); | 546 ASSERT_TRUE(speculative_rfh); |
(...skipping 29 matching lines...) Expand all Loading... |
568 | 576 |
569 // Initialization. | 577 // Initialization. |
570 contents()->NavigateAndCommit(kUrl0); | 578 contents()->NavigateAndCommit(kUrl0); |
571 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 579 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
572 | 580 |
573 // Start a browser-initiated navigation to the 1st URL and receive its | 581 // Start a browser-initiated navigation to the 1st URL and receive its |
574 // beforeUnload ACK. | 582 // beforeUnload ACK. |
575 process()->sink().ClearMessages(); | 583 process()->sink().ClearMessages(); |
576 RequestNavigation(node, kUrl1); | 584 RequestNavigation(node, kUrl1); |
577 main_test_rfh()->SendBeforeUnloadACK(true); | 585 main_test_rfh()->SendBeforeUnloadACK(true); |
578 NavigationRequest* request1 = node->navigation_request(); | 586 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); |
579 ASSERT_TRUE(request1); | 587 ASSERT_TRUE(request1); |
580 EXPECT_EQ(kUrl1, request1->common_params().url); | 588 EXPECT_EQ(kUrl1, request1->common_params().url); |
581 EXPECT_TRUE(request1->browser_initiated()); | 589 EXPECT_TRUE(request1->browser_initiated()); |
582 base::WeakPtr<TestNavigationURLLoader> loader1 = | 590 base::WeakPtr<TestNavigationURLLoader> loader1 = |
583 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); | 591 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); |
584 EXPECT_TRUE(loader1); | 592 EXPECT_TRUE(loader1); |
585 | 593 |
586 // Confirm that a speculative RenderFrameHost was created. | 594 // Confirm that a speculative RenderFrameHost was created. |
587 ASSERT_TRUE(GetSpeculativeRenderFrameHost(node)); | 595 ASSERT_TRUE(GetSpeculativeRenderFrameHost(node)); |
588 | 596 |
589 // Now receive a renderer-initiated user-initiated request. It should replace | 597 // Now receive a renderer-initiated user-initiated request. It should replace |
590 // the current NavigationRequest. | 598 // the current NavigationRequest. |
591 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, true); | 599 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, true); |
592 NavigationRequest* request2 = node->navigation_request(); | 600 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); |
593 ASSERT_TRUE(request2); | 601 ASSERT_TRUE(request2); |
594 EXPECT_EQ(kUrl2, request2->common_params().url); | 602 EXPECT_EQ(kUrl2, request2->common_params().url); |
595 EXPECT_FALSE(request2->browser_initiated()); | 603 EXPECT_FALSE(request2->browser_initiated()); |
596 EXPECT_TRUE(request2->begin_params().has_user_gesture); | 604 EXPECT_TRUE(request2->begin_params().has_user_gesture); |
597 | 605 |
598 // Confirm that the first loader got destroyed. | 606 // Confirm that the first loader got destroyed. |
599 EXPECT_FALSE(loader1); | 607 EXPECT_FALSE(loader1); |
600 | 608 |
601 // Confirm that the speculative RenderFrameHost was destroyed. | 609 // Confirm that the speculative RenderFrameHost was destroyed. |
602 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 610 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
(...skipping 21 matching lines...) Expand all Loading... |
624 const GURL kUrl1("http://www.chromium.org/"); | 632 const GURL kUrl1("http://www.chromium.org/"); |
625 const GURL kUrl2("http://www.google.com/"); | 633 const GURL kUrl2("http://www.google.com/"); |
626 | 634 |
627 // Initialization. | 635 // Initialization. |
628 contents()->NavigateAndCommit(kUrl0); | 636 contents()->NavigateAndCommit(kUrl0); |
629 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 637 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
630 | 638 |
631 // Start a renderer-initiated user-initiated navigation to the 1st URL. | 639 // Start a renderer-initiated user-initiated navigation to the 1st URL. |
632 process()->sink().ClearMessages(); | 640 process()->sink().ClearMessages(); |
633 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, true); | 641 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, true); |
634 NavigationRequest* request1 = node->navigation_request(); | 642 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); |
635 ASSERT_TRUE(request1); | 643 ASSERT_TRUE(request1); |
636 EXPECT_EQ(kUrl1, request1->common_params().url); | 644 EXPECT_EQ(kUrl1, request1->common_params().url); |
637 EXPECT_FALSE(request1->browser_initiated()); | 645 EXPECT_FALSE(request1->browser_initiated()); |
638 EXPECT_TRUE(request1->begin_params().has_user_gesture); | 646 EXPECT_TRUE(request1->begin_params().has_user_gesture); |
639 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 647 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
640 | 648 |
641 // Now receive a renderer-initiated non-user-initiated request. Nothing should | 649 // Now receive a renderer-initiated non-user-initiated request. Nothing should |
642 // change. | 650 // change. |
643 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); | 651 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); |
644 NavigationRequest* request2 = node->navigation_request(); | 652 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); |
645 ASSERT_TRUE(request2); | 653 ASSERT_TRUE(request2); |
646 EXPECT_EQ(request1, request2); | 654 EXPECT_EQ(request1, request2); |
647 EXPECT_EQ(kUrl1, request2->common_params().url); | 655 EXPECT_EQ(kUrl1, request2->common_params().url); |
648 EXPECT_FALSE(request2->browser_initiated()); | 656 EXPECT_FALSE(request2->browser_initiated()); |
649 EXPECT_TRUE(request2->begin_params().has_user_gesture); | 657 EXPECT_TRUE(request2->begin_params().has_user_gesture); |
650 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 658 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
651 | 659 |
652 // Have the RenderFrameHost commit the navigation. | 660 // Have the RenderFrameHost commit the navigation. |
653 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 661 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
654 GetLoaderForNavigationRequest(request2) | 662 GetLoaderForNavigationRequest(request2) |
(...skipping 13 matching lines...) Expand all Loading... |
668 const GURL kUrl1("http://www.chromium.org/"); | 676 const GURL kUrl1("http://www.chromium.org/"); |
669 const GURL kUrl2("http://www.google.com/"); | 677 const GURL kUrl2("http://www.google.com/"); |
670 | 678 |
671 // Initialization. | 679 // Initialization. |
672 contents()->NavigateAndCommit(kUrl0); | 680 contents()->NavigateAndCommit(kUrl0); |
673 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 681 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
674 | 682 |
675 // Start a browser-initiated navigation to the 1st URL. | 683 // Start a browser-initiated navigation to the 1st URL. |
676 process()->sink().ClearMessages(); | 684 process()->sink().ClearMessages(); |
677 RequestNavigation(node, kUrl1); | 685 RequestNavigation(node, kUrl1); |
678 NavigationRequest* request1 = node->navigation_request(); | 686 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); |
679 ASSERT_TRUE(request1); | 687 ASSERT_TRUE(request1); |
680 EXPECT_EQ(kUrl1, request1->common_params().url); | 688 EXPECT_EQ(kUrl1, request1->common_params().url); |
681 EXPECT_TRUE(request1->browser_initiated()); | 689 EXPECT_TRUE(request1->browser_initiated()); |
682 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 690 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
683 | 691 |
684 // Now receive a renderer-initiated non-user-initiated request. Nothing should | 692 // Now receive a renderer-initiated non-user-initiated request. Nothing should |
685 // change. | 693 // change. |
686 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); | 694 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); |
687 NavigationRequest* request2 = node->navigation_request(); | 695 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); |
688 ASSERT_TRUE(request2); | 696 ASSERT_TRUE(request2); |
689 EXPECT_EQ(request1, request2); | 697 EXPECT_EQ(request1, request2); |
690 EXPECT_EQ(kUrl1, request2->common_params().url); | 698 EXPECT_EQ(kUrl1, request2->common_params().url); |
691 EXPECT_TRUE(request2->browser_initiated()); | 699 EXPECT_TRUE(request2->browser_initiated()); |
692 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 700 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
693 | 701 |
694 // Now receive the beforeUnload ACK from the still ongoing navigation. | 702 // Now receive the beforeUnload ACK from the still ongoing navigation. |
695 main_test_rfh()->SendBeforeUnloadACK(true); | 703 main_test_rfh()->SendBeforeUnloadACK(true); |
696 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 704 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
697 ASSERT_TRUE(speculative_rfh); | 705 ASSERT_TRUE(speculative_rfh); |
(...skipping 19 matching lines...) Expand all Loading... |
717 const GURL kUrl2("http://www.google.com/"); | 725 const GURL kUrl2("http://www.google.com/"); |
718 | 726 |
719 // Initialization. | 727 // Initialization. |
720 contents()->NavigateAndCommit(kUrl0); | 728 contents()->NavigateAndCommit(kUrl0); |
721 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 729 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
722 int32 site_instance_id_0 = main_test_rfh()->GetSiteInstance()->GetId(); | 730 int32 site_instance_id_0 = main_test_rfh()->GetSiteInstance()->GetId(); |
723 | 731 |
724 // Start a renderer-initiated non-user-initiated navigation to the 1st URL. | 732 // Start a renderer-initiated non-user-initiated navigation to the 1st URL. |
725 process()->sink().ClearMessages(); | 733 process()->sink().ClearMessages(); |
726 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, false); | 734 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl1, false); |
727 NavigationRequest* request1 = node->navigation_request(); | 735 NavigationRequest* request1 = GetNavigationRequestForFrameTreeNode(node); |
728 ASSERT_TRUE(request1); | 736 ASSERT_TRUE(request1); |
729 EXPECT_EQ(kUrl1, request1->common_params().url); | 737 EXPECT_EQ(kUrl1, request1->common_params().url); |
730 EXPECT_FALSE(request1->browser_initiated()); | 738 EXPECT_FALSE(request1->browser_initiated()); |
731 EXPECT_FALSE(request1->begin_params().has_user_gesture); | 739 EXPECT_FALSE(request1->begin_params().has_user_gesture); |
732 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 740 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
733 base::WeakPtr<TestNavigationURLLoader> loader1 = | 741 base::WeakPtr<TestNavigationURLLoader> loader1 = |
734 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); | 742 GetLoaderForNavigationRequest(request1)->AsWeakPtr(); |
735 EXPECT_TRUE(loader1); | 743 EXPECT_TRUE(loader1); |
736 | 744 |
737 // Now receive a 2nd similar request that should replace the current one. | 745 // Now receive a 2nd similar request that should replace the current one. |
738 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); | 746 main_test_rfh()->SendRendererInitiatedNavigationRequest(kUrl2, false); |
739 NavigationRequest* request2 = node->navigation_request(); | 747 NavigationRequest* request2 = GetNavigationRequestForFrameTreeNode(node); |
740 EXPECT_EQ(kUrl2, request2->common_params().url); | 748 EXPECT_EQ(kUrl2, request2->common_params().url); |
741 EXPECT_FALSE(request2->browser_initiated()); | 749 EXPECT_FALSE(request2->browser_initiated()); |
742 EXPECT_FALSE(request2->begin_params().has_user_gesture); | 750 EXPECT_FALSE(request2->begin_params().has_user_gesture); |
743 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 751 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
744 | 752 |
745 // Confirm that the first loader got destroyed. | 753 // Confirm that the first loader got destroyed. |
746 EXPECT_FALSE(loader1); | 754 EXPECT_FALSE(loader1); |
747 | 755 |
748 // Have the RenderFrameHost commit the navigation. | 756 // Have the RenderFrameHost commit the navigation. |
749 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 757 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
(...skipping 12 matching lines...) Expand all Loading... |
762 // PlzNavigate: Test that a reload navigation is properly signaled to the | 770 // PlzNavigate: Test that a reload navigation is properly signaled to the |
763 // RenderFrame when the navigation can commit. A speculative RenderFrameHost | 771 // RenderFrame when the navigation can commit. A speculative RenderFrameHost |
764 // should not be created at any step. | 772 // should not be created at any step. |
765 TEST_F(NavigatorTestWithBrowserSideNavigation, Reload) { | 773 TEST_F(NavigatorTestWithBrowserSideNavigation, Reload) { |
766 const GURL kUrl("http://www.google.com/"); | 774 const GURL kUrl("http://www.google.com/"); |
767 contents()->NavigateAndCommit(kUrl); | 775 contents()->NavigateAndCommit(kUrl); |
768 | 776 |
769 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 777 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
770 controller().Reload(false); | 778 controller().Reload(false); |
771 // A NavigationRequest should have been generated. | 779 // A NavigationRequest should have been generated. |
772 NavigationRequest* main_request = node->navigation_request(); | 780 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); |
773 ASSERT_TRUE(main_request != NULL); | 781 ASSERT_TRUE(main_request != NULL); |
774 EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD, | 782 EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD, |
775 main_request->common_params().navigation_type); | 783 main_request->common_params().navigation_type); |
776 main_test_rfh()->PrepareForCommit(); | 784 main_test_rfh()->PrepareForCommit(); |
777 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 785 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
778 | 786 |
779 main_test_rfh()->SendNavigate(0, kUrl); | 787 main_test_rfh()->SendNavigate(0, kUrl); |
780 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 788 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
781 | 789 |
782 // Now do a shift+reload. | 790 // Now do a shift+reload. |
783 controller().ReloadIgnoringCache(false); | 791 controller().ReloadIgnoringCache(false); |
784 // A NavigationRequest should have been generated. | 792 // A NavigationRequest should have been generated. |
785 main_request = node->navigation_request(); | 793 main_request = GetNavigationRequestForFrameTreeNode(node); |
786 ASSERT_TRUE(main_request != NULL); | 794 ASSERT_TRUE(main_request != NULL); |
787 EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE, | 795 EXPECT_EQ(FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE, |
788 main_request->common_params().navigation_type); | 796 main_request->common_params().navigation_type); |
789 main_test_rfh()->PrepareForCommit(); | 797 main_test_rfh()->PrepareForCommit(); |
790 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 798 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
791 } | 799 } |
792 | 800 |
793 // PlzNavigate: Confirm that a speculative RenderFrameHost is used when | 801 // PlzNavigate: Confirm that a speculative RenderFrameHost is used when |
794 // navigating from one site to another. | 802 // navigating from one site to another. |
795 TEST_F(NavigatorTestWithBrowserSideNavigation, | 803 TEST_F(NavigatorTestWithBrowserSideNavigation, |
(...skipping 15 matching lines...) Expand all Loading... |
811 ASSERT_TRUE(speculative_rfh); | 819 ASSERT_TRUE(speculative_rfh); |
812 EXPECT_NE(speculative_rfh, main_test_rfh()); | 820 EXPECT_NE(speculative_rfh, main_test_rfh()); |
813 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), | 821 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), |
814 speculative_rfh->GetSiteInstance()->GetSiteURL()); | 822 speculative_rfh->GetSiteInstance()->GetSiteURL()); |
815 EXPECT_FALSE(node->render_manager()->pending_frame_host()); | 823 EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
816 int32 site_instance_id = speculative_rfh->GetSiteInstance()->GetId(); | 824 int32 site_instance_id = speculative_rfh->GetSiteInstance()->GetId(); |
817 | 825 |
818 // Ask Navigator to commit the navigation by simulating a call to | 826 // Ask Navigator to commit the navigation by simulating a call to |
819 // OnResponseStarted. | 827 // OnResponseStarted. |
820 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 828 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
821 GetLoaderForNavigationRequest(node->navigation_request()) | 829 GetLoaderForNavigationRequest(GetNavigationRequestForFrameTreeNode(node)) |
822 ->CallOnResponseStarted(response, MakeEmptyStream()); | 830 ->CallOnResponseStarted(response, MakeEmptyStream()); |
823 speculative_rfh = GetSpeculativeRenderFrameHost(node); | 831 speculative_rfh = GetSpeculativeRenderFrameHost(node); |
824 ASSERT_TRUE(speculative_rfh); | 832 ASSERT_TRUE(speculative_rfh); |
825 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); | 833 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_rfh)); |
826 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId()); | 834 EXPECT_EQ(site_instance_id, speculative_rfh->GetSiteInstance()->GetId()); |
827 EXPECT_FALSE(node->render_manager()->pending_frame_host()); | 835 EXPECT_FALSE(node->render_manager()->pending_frame_host()); |
828 | 836 |
829 // Invoke OnDidCommitProvisionalLoad. | 837 // Invoke OnDidCommitProvisionalLoad. |
830 speculative_rfh->SendNavigate(0, kUrl); | 838 speculative_rfh->SendNavigate(0, kUrl); |
831 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); | 839 EXPECT_EQ(site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); |
(...skipping 22 matching lines...) Expand all Loading... |
854 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 862 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
855 int32 site_instance_id = speculative_rfh->GetSiteInstance()->GetId(); | 863 int32 site_instance_id = speculative_rfh->GetSiteInstance()->GetId(); |
856 EXPECT_NE(init_site_instance_id, site_instance_id); | 864 EXPECT_NE(init_site_instance_id, site_instance_id); |
857 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); | 865 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); |
858 ASSERT_TRUE(speculative_rfh); | 866 ASSERT_TRUE(speculative_rfh); |
859 EXPECT_NE(speculative_rfh, main_test_rfh()); | 867 EXPECT_NE(speculative_rfh, main_test_rfh()); |
860 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), | 868 EXPECT_EQ(SiteInstanceImpl::GetSiteForURL(browser_context(), kUrl), |
861 speculative_rfh->GetSiteInstance()->GetSiteURL()); | 869 speculative_rfh->GetSiteInstance()->GetSiteURL()); |
862 | 870 |
863 // It then redirects to yet another site. | 871 // It then redirects to yet another site. |
864 NavigationRequest* main_request = node->navigation_request(); | 872 NavigationRequest* main_request = GetNavigationRequestForFrameTreeNode(node); |
865 ASSERT_TRUE(main_request); | 873 ASSERT_TRUE(main_request); |
866 const GURL kUrlRedirect("https://www.google.com/"); | 874 const GURL kUrlRedirect("https://www.google.com/"); |
867 GetLoaderForNavigationRequest(main_request) | 875 GetLoaderForNavigationRequest(main_request) |
868 ->SimulateServerRedirect(kUrlRedirect); | 876 ->SimulateServerRedirect(kUrlRedirect); |
869 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); | 877 EXPECT_EQ(init_site_instance_id, main_test_rfh()->GetSiteInstance()->GetId()); |
870 speculative_rfh = GetSpeculativeRenderFrameHost(node); | 878 speculative_rfh = GetSpeculativeRenderFrameHost(node); |
871 ASSERT_TRUE(speculative_rfh); | 879 ASSERT_TRUE(speculative_rfh); |
872 | 880 |
873 // For now, ensure that the speculative RenderFrameHost does not change after | 881 // For now, ensure that the speculative RenderFrameHost does not change after |
874 // the redirect. | 882 // the redirect. |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
935 .ClearMessages(); | 943 .ClearMessages(); |
936 RequestNavigation(node, kUrl1); | 944 RequestNavigation(node, kUrl1); |
937 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 945 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
938 | 946 |
939 main_test_rfh()->SendBeforeUnloadACK(true); | 947 main_test_rfh()->SendBeforeUnloadACK(true); |
940 EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node)); | 948 EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node)); |
941 EXPECT_NE(RenderFrameHostImpl::STATE_DEFAULT, | 949 EXPECT_NE(RenderFrameHostImpl::STATE_DEFAULT, |
942 GetSpeculativeRenderFrameHost(node)->rfh_state()); | 950 GetSpeculativeRenderFrameHost(node)->rfh_state()); |
943 | 951 |
944 scoped_refptr<ResourceResponse> response(new ResourceResponse); | 952 scoped_refptr<ResourceResponse> response(new ResourceResponse); |
945 GetLoaderForNavigationRequest(node->navigation_request()) | 953 GetLoaderForNavigationRequest(GetNavigationRequestForFrameTreeNode(node)) |
946 ->CallOnResponseStarted(response, MakeEmptyStream()); | 954 ->CallOnResponseStarted(response, MakeEmptyStream()); |
947 EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node)); | 955 EXPECT_EQ(rfh1, GetSpeculativeRenderFrameHost(node)); |
948 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, | 956 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, |
949 GetSpeculativeRenderFrameHost(node)->rfh_state()); | 957 GetSpeculativeRenderFrameHost(node)->rfh_state()); |
950 EXPECT_TRUE(DidRenderFrameHostRequestCommit(rfh1)); | 958 EXPECT_TRUE(DidRenderFrameHostRequestCommit(rfh1)); |
951 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); | 959 EXPECT_FALSE(DidRenderFrameHostRequestCommit(main_test_rfh())); |
952 | 960 |
953 rfh1->SendNavigate(1, kUrl1); | 961 rfh1->SendNavigate(1, kUrl1); |
954 EXPECT_EQ(rfh1, main_test_rfh()); | 962 EXPECT_EQ(rfh1, main_test_rfh()); |
955 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); | 963 EXPECT_EQ(RenderFrameHostImpl::STATE_DEFAULT, rfh1->rfh_state()); |
956 EXPECT_FALSE(rfhm->IsOnSwappedOutList(rfh1)); | 964 EXPECT_FALSE(rfhm->IsOnSwappedOutList(rfh1)); |
957 } | 965 } |
958 | 966 |
959 // PlzNavigate: Verify that data urls are properly handled. | 967 // PlzNavigate: Verify that data urls are properly handled. |
960 TEST_F(NavigatorTestWithBrowserSideNavigation, DataUrls) { | 968 TEST_F(NavigatorTestWithBrowserSideNavigation, DataUrls) { |
961 const GURL kUrl1("http://wikipedia.org/"); | 969 const GURL kUrl1("http://wikipedia.org/"); |
962 const GURL kUrl2("data:text/html,test"); | 970 const GURL kUrl2("data:text/html,test"); |
963 | 971 |
964 // Navigate to an initial site. | 972 // Navigate to an initial site. |
965 contents()->NavigateAndCommit(kUrl1); | 973 contents()->NavigateAndCommit(kUrl1); |
966 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); | 974 FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
967 | 975 |
968 // Navigate to a data url. | 976 // Navigate to a data url. |
969 RequestNavigation(node, kUrl2); | 977 RequestNavigation(node, kUrl2); |
970 NavigationRequest* navigation_request = node->navigation_request(); | 978 NavigationRequest* navigation_request = |
| 979 GetNavigationRequestForFrameTreeNode(node); |
971 ASSERT_TRUE(navigation_request); | 980 ASSERT_TRUE(navigation_request); |
972 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, | 981 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, |
973 navigation_request->state()); | 982 navigation_request->state()); |
974 main_test_rfh()->SendBeforeUnloadACK(true); | 983 main_test_rfh()->SendBeforeUnloadACK(true); |
975 | 984 |
976 // The request should not have been sent to the IO thread but committed | 985 // The request should not have been sent to the IO thread but committed |
977 // immediately. | 986 // immediately. |
978 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, | 987 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, |
979 navigation_request->state()); | 988 navigation_request->state()); |
980 EXPECT_FALSE(navigation_request->loader_for_testing()); | 989 EXPECT_FALSE(navigation_request->loader_for_testing()); |
981 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); | 990 TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
982 ASSERT_TRUE(speculative_rfh); | 991 ASSERT_TRUE(speculative_rfh); |
983 speculative_rfh->SendNavigate(0, kUrl2); | 992 speculative_rfh->SendNavigate(0, kUrl2); |
984 EXPECT_EQ(main_test_rfh(), speculative_rfh); | 993 EXPECT_EQ(main_test_rfh(), speculative_rfh); |
985 | 994 |
986 // Go back to the initial site. | 995 // Go back to the initial site. |
987 contents()->NavigateAndCommit(kUrl1); | 996 contents()->NavigateAndCommit(kUrl1); |
988 | 997 |
989 // Do a renderer-initiated navigation to a data url. The request should not be | 998 // Do a renderer-initiated navigation to a data url. The request should not be |
990 // sent to the IO thread, nor committed. | 999 // sent to the IO thread, nor committed. |
991 TestRenderFrameHost* main_rfh = main_test_rfh(); | 1000 TestRenderFrameHost* main_rfh = main_test_rfh(); |
992 main_rfh->SendRendererInitiatedNavigationRequest(kUrl2, true); | 1001 main_rfh->SendRendererInitiatedNavigationRequest(kUrl2, true); |
993 navigation_request = node->navigation_request(); | 1002 navigation_request = GetNavigationRequestForFrameTreeNode(node); |
994 ASSERT_TRUE(navigation_request); | 1003 ASSERT_TRUE(navigation_request); |
995 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, | 1004 EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, |
996 navigation_request->state()); | 1005 navigation_request->state()); |
997 EXPECT_FALSE(navigation_request->loader_for_testing()); | 1006 EXPECT_FALSE(navigation_request->loader_for_testing()); |
998 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 1007 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
999 } | 1008 } |
1000 | 1009 |
1001 // Tests several cases for converting SiteInstanceDescriptors into | 1010 // Tests several cases for converting SiteInstanceDescriptors into |
1002 // SiteInstances: | 1011 // SiteInstances: |
1003 // 1) Pointer to the current SiteInstance. | 1012 // 1) Pointer to the current SiteInstance. |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1121 | 1130 |
1122 SiteInstance* converted_instance_2 = | 1131 SiteInstance* converted_instance_2 = |
1123 ConvertToSiteInstance(rfhm, descriptor, unrelated_instance.get()); | 1132 ConvertToSiteInstance(rfhm, descriptor, unrelated_instance.get()); |
1124 // Should return |unrelated_instance| because its site matches and it is | 1133 // Should return |unrelated_instance| because its site matches and it is |
1125 // unrelated to the current SiteInstance. | 1134 // unrelated to the current SiteInstance. |
1126 EXPECT_EQ(unrelated_instance.get(), converted_instance_2); | 1135 EXPECT_EQ(unrelated_instance.get(), converted_instance_2); |
1127 } | 1136 } |
1128 } | 1137 } |
1129 | 1138 |
1130 } // namespace content | 1139 } // namespace content |
OLD | NEW |