Chromium Code Reviews| Index: content/browser/frame_host/navigator_impl_unittest.cc |
| diff --git a/content/browser/frame_host/navigator_impl_unittest.cc b/content/browser/frame_host/navigator_impl_unittest.cc |
| index 82a49874ec9561ca5d6d17ec8a0aeb1c70cb8cce..2740ee8f8bf221cbfaa9b4198884234c44b2bb4f 100644 |
| --- a/content/browser/frame_host/navigator_impl_unittest.cc |
| +++ b/content/browser/frame_host/navigator_impl_unittest.cc |
| @@ -941,4 +941,49 @@ TEST_F(NavigatorTestWithBrowserSideNavigation, |
| EXPECT_FALSE(rfhm->IsOnSwappedOutList(rfh1)); |
| } |
| +// PlzNavigate: Verify that data urls are properly handled. |
|
Charlie Reis
2015/02/20 22:11:50
Can you add a second test for base_url_for_data_ur
clamy
2015/02/26 15:28:36
What exactly would you want to test in that test?
|
| +TEST_F(NavigatorTestWithBrowserSideNavigation, DataUrls) { |
| + const GURL kUrl1("http://wikipedia.org/"); |
| + const GURL kUrl2("data:test"); |
| + |
| + // Navigate to an initial site. |
| + contents()->NavigateAndCommit(kUrl1); |
| + FrameTreeNode* node = main_test_rfh()->frame_tree_node(); |
| + |
| + // Navigate to a data url. |
| + RequestNavigation(node, kUrl2); |
| + NavigationRequest* navigation_request = |
| + GetNavigationRequestForFrameTreeNode(node); |
| + ASSERT_TRUE(navigation_request); |
| + EXPECT_EQ(NavigationRequest::WAITING_FOR_RENDERER_RESPONSE, |
| + navigation_request->state()); |
| + main_test_rfh()->SendBeforeUnloadACK(true); |
| + |
| + // The request should not have been sent to the IO thread but committed |
| + // immediately. |
| + EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, |
| + navigation_request->state()); |
| + EXPECT_FALSE(navigation_request->loader_for_testing()); |
| + TestRenderFrameHost* speculative_rfh = GetSpeculativeRenderFrameHost(node); |
| + ASSERT_TRUE(speculative_rfh); |
|
Charlie Reis
2015/02/20 22:11:50
Why is there a speculative RFH? NavigatorImpl::Be
carlosk
2015/02/23 10:50:28
Line 960 causes it to be called.
clamy
2015/02/26 15:28:36
No, in that case NavigationRequest::BeginNavigatio
|
| + speculative_rfh->SendNavigate(0, kUrl2); |
| + EXPECT_EQ(main_test_rfh(), speculative_rfh); |
| + |
| + // Go back to the initial site. |
| + contents()->NavigateAndCommit(kUrl1); |
| + |
| + // Do a renderer-initiated navigation to a data url. The request should be |
|
Charlie Reis
2015/02/20 22:11:50
should not?
clamy
2015/02/26 15:28:36
Done.
|
| + // sent to the IO thread, nor committed. |
| + TestRenderFrameHost* main_rfh = main_test_rfh(); |
| + main_rfh->SendBeginNavigationWithURL(kUrl2); |
| + navigation_request = GetNavigationRequestForFrameTreeNode(node); |
| + ASSERT_TRUE(navigation_request); |
| + EXPECT_EQ(NavigationRequest::RESPONSE_STARTED, |
| + navigation_request->state()); |
| + EXPECT_FALSE(navigation_request->loader_for_testing()); |
| + EXPECT_FALSE(GetSpeculativeRenderFrameHost(node)); |
| + main_rfh->SendNavigate(1, kUrl2); |
| + EXPECT_EQ(main_test_rfh(), main_rfh); |
| +} |
| + |
| } // namespace content |