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 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
251 EXPECT_TRUE(request->browser_initiated()); | 251 EXPECT_TRUE(request->browser_initiated()); |
252 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, request->state()); | 252 EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, request->state()); |
253 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 253 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
254 | 254 |
255 // Simulate a beforeUnload denial. | 255 // Simulate a beforeUnload denial. |
256 main_test_rfh()->SendBeforeUnloadACK(false); | 256 main_test_rfh()->SendBeforeUnloadACK(false); |
257 EXPECT_FALSE(node->navigation_request()); | 257 EXPECT_FALSE(node->navigation_request()); |
258 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); | 258 EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
259 } | 259 } |
260 | 260 |
261 // PlzNavigate: Test that a proper NavigationRequest is created by | 261 // PlzNavigate: Test that navigation state is properly maintained when |
262 // RequestNavigation. | 262 // navigating simultaneously at the root frame and at a subframe levels. |
263 TEST_F(NavigatorTestWithBrowserSideNavigation, BeginNavigation) { | 263 TEST_F(NavigatorTestWithBrowserSideNavigation, |
clamy
2015/04/27 12:05:20
Note that the original goal of this test is to che
| |
264 NavigatingAtRootAndSubframeSimultaneously) { | |
264 const GURL kUrl1("http://www.google.com/"); | 265 const GURL kUrl1("http://www.google.com/"); |
265 const GURL kUrl2("http://www.chromium.org/"); | 266 const GURL kUrl2("http://www.chromium.org/"); |
266 const GURL kUrl3("http://www.gmail.com/"); | 267 const GURL kUrl3("http://www.gmail.com/"); |
267 | 268 |
268 contents()->NavigateAndCommit(kUrl1); | 269 contents()->NavigateAndCommit(kUrl1); |
270 process()->sink().ClearMessages(); | |
269 | 271 |
270 // Add a subframe. | 272 // Add a subframe. |
271 FrameTreeNode* root_node = contents()->GetFrameTree()->root(); | 273 FrameTreeNode* root_node = contents()->GetFrameTree()->root(); |
272 TestRenderFrameHost* subframe_rfh = main_test_rfh()->AppendChild("Child"); | 274 TestRenderFrameHost* subframe_rfh = main_test_rfh()->AppendChild("Child"); |
273 ASSERT_TRUE(subframe_rfh); | 275 ASSERT_TRUE(subframe_rfh); |
274 | 276 |
275 // Start a navigation at the subframe. | 277 // Start a navigation at the subframe. |
276 FrameTreeNode* subframe_node = subframe_rfh->frame_tree_node(); | 278 FrameTreeNode* subframe_node = subframe_rfh->frame_tree_node(); |
277 RequestNavigation(subframe_node, kUrl2); | 279 RequestNavigation(subframe_node, kUrl2); |
278 NavigationRequest* subframe_request = subframe_node->navigation_request(); | 280 NavigationRequest* subframe_request = subframe_node->navigation_request(); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
324 // BeforeUnloadACK was received from the renderer so the navigation should | 326 // BeforeUnloadACK was received from the renderer so the navigation should |
325 // have started. | 327 // have started. |
326 EXPECT_EQ(NavigationRequest::STARTED, main_request->state()); | 328 EXPECT_EQ(NavigationRequest::STARTED, main_request->state()); |
327 | 329 |
328 // Main frame navigation to a different site should use a speculative | 330 // Main frame navigation to a different site should use a speculative |
329 // RenderFrameHost. | 331 // RenderFrameHost. |
330 EXPECT_TRUE(GetSpeculativeRenderFrameHost(root_node)); | 332 EXPECT_TRUE(GetSpeculativeRenderFrameHost(root_node)); |
331 | 333 |
332 // As the main frame hasn't yet committed the subframe still exists. Thus, the | 334 // As the main frame hasn't yet committed the subframe still exists. Thus, the |
333 // above situation regarding subframe navigations is valid here. | 335 // above situation regarding subframe navigations is valid here. |
336 ASSERT_TRUE(subframe_node->navigation_request()); | |
334 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 337 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
335 switches::kSitePerProcess)) { | 338 switches::kSitePerProcess)) { |
336 EXPECT_TRUE(GetSpeculativeRenderFrameHost(subframe_node)); | 339 EXPECT_TRUE(GetSpeculativeRenderFrameHost(subframe_node)); |
337 } else { | 340 } else { |
338 EXPECT_FALSE(GetSpeculativeRenderFrameHost(subframe_node)); | 341 EXPECT_FALSE(GetSpeculativeRenderFrameHost(subframe_node)); |
339 } | 342 } |
343 | |
344 // Have the navigation commit for the root node's speculative RenderFrameHost. | |
clamy
2015/04/27 12:05:20
This comment is misleading. If you want to simulat
| |
345 scoped_refptr<ResourceResponse> response(new ResourceResponse); | |
346 main_loader->CallOnResponseStarted(response, MakeEmptyStream()); | |
347 TestRenderFrameHost* speculative_root_rfh = | |
348 GetSpeculativeRenderFrameHost(root_node); | |
349 ASSERT_TRUE(speculative_root_rfh); | |
350 EXPECT_TRUE(DidRenderFrameHostRequestCommit(speculative_root_rfh)); | |
351 | |
352 // The subframe request is still there as the subframe still exists. | |
353 ASSERT_TRUE(subframe_node->navigation_request()); | |
340 } | 354 } |
341 | 355 |
342 // PlzNavigate: Test that committing an HTTP 204 or HTTP 205 response cancels | 356 // PlzNavigate: Test that committing an HTTP 204 or HTTP 205 response cancels |
343 // the navigation. | 357 // the navigation. |
344 TEST_F(NavigatorTestWithBrowserSideNavigation, NoContent) { | 358 TEST_F(NavigatorTestWithBrowserSideNavigation, NoContent) { |
345 const GURL kUrl1("http://www.chromium.org/"); | 359 const GURL kUrl1("http://www.chromium.org/"); |
346 const GURL kUrl2("http://www.google.com/"); | 360 const GURL kUrl2("http://www.google.com/"); |
347 | 361 |
348 // Load a URL. | 362 // Load a URL. |
349 contents()->NavigateAndCommit(kUrl1); | 363 contents()->NavigateAndCommit(kUrl1); |
(...skipping 769 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1119 | 1133 |
1120 SiteInstance* converted_instance_2 = | 1134 SiteInstance* converted_instance_2 = |
1121 ConvertToSiteInstance(rfhm, descriptor, unrelated_instance.get()); | 1135 ConvertToSiteInstance(rfhm, descriptor, unrelated_instance.get()); |
1122 // Should return |unrelated_instance| because its site matches and it is | 1136 // Should return |unrelated_instance| because its site matches and it is |
1123 // unrelated to the current SiteInstance. | 1137 // unrelated to the current SiteInstance. |
1124 EXPECT_EQ(unrelated_instance.get(), converted_instance_2); | 1138 EXPECT_EQ(unrelated_instance.get(), converted_instance_2); |
1125 } | 1139 } |
1126 } | 1140 } |
1127 | 1141 |
1128 } // namespace content | 1142 } // namespace content |
OLD | NEW |