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