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..a4d5a65ebb4db390bb14b999fe35423665125990 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. |
| +TEST_F(NavigatorTestWithBrowserSideNavigation, DataUrls) { |
| + const GURL kUrl1("http://wikipedia.org/"); |
| + const GURL kUrl2("data:test"); |
|
nasko
2015/02/26 17:35:24
nit: this isn't a valid data URL. It needs a comma
Charlie Reis
2015/02/26 20:49:01
Yes, it seems like it should be data:text/html,tes
clamy
2015/02/27 12:53:59
Done. No it was there from the start.
|
| + |
| + // 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); |
| + 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 not be |
| + // 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 |