Index: chrome/browser/data_use_measurement/chrome_data_use_ascriber_unittest.cc |
diff --git a/chrome/browser/data_use_measurement/chrome_data_use_ascriber_unittest.cc b/chrome/browser/data_use_measurement/chrome_data_use_ascriber_unittest.cc |
index 973e7e5a8ce22e9d2c7751829feb7119fdafd663..d915e8be1b26b0e9641957606a3bf8adbc77563a 100644 |
--- a/chrome/browser/data_use_measurement/chrome_data_use_ascriber_unittest.cc |
+++ b/chrome/browser/data_use_measurement/chrome_data_use_ascriber_unittest.cc |
@@ -214,4 +214,29 @@ TEST_F(ChromeDataUseAscriberTest, MainFrameNavigation) { |
EXPECT_EQ(0u, recorders().size()); |
} |
+TEST_F(ChromeDataUseAscriberTest, FailedMainFrameNavigation) { |
+ if (content::IsBrowserSideNavigationEnabled()) |
+ return; |
+ |
+ std::unique_ptr<net::URLRequest> request = CreateNewRequest( |
+ "http://test.com", true, kRequestId, kRenderProcessId, kRenderFrameId); |
+ |
+ // Mainframe is created. |
+ ascriber()->RenderFrameCreated(kRenderProcessId, kRenderFrameId, -1, -1); |
+ EXPECT_EQ(1u, recorders().size()); |
+ |
+ // Request should cause a recorder to be created. |
+ ascriber()->OnBeforeUrlRequest(request.get()); |
+ EXPECT_EQ(2u, recorders().size()); |
+ |
+ // Failed request will remove the pending entry. |
+ request->Cancel(); |
+ ascriber()->OnUrlRequestCompleted(*request, false); |
+ |
+ ascriber()->RenderFrameDeleted(kRenderProcessId, kRenderFrameId, -1, -1); |
+ ascriber()->OnUrlRequestDestroyed(request.get()); |
+ |
+ EXPECT_EQ(0u, recorders().size()); |
+} |
+ |
} // namespace data_use_measurement |