Index: chrome/browser/net/chrome_network_delegate_unittest.cc |
diff --git a/chrome/browser/net/chrome_network_delegate_unittest.cc b/chrome/browser/net/chrome_network_delegate_unittest.cc |
index edecbe6a5fb7ef84ffd2b5b6a3d2323ad5d8a7cb..8a08c72d5fb84e79059c66ec6190cad7d9f3ccef 100644 |
--- a/chrome/browser/net/chrome_network_delegate_unittest.cc |
+++ b/chrome/browser/net/chrome_network_delegate_unittest.cc |
@@ -235,6 +235,55 @@ TEST_F(ChromeNetworkDelegateTest, ReportOffTheRecordDataUseToAggregator) { |
fake_aggregator.off_the_record_rx_bytes()); |
} |
+TEST_F(ChromeNetworkDelegateTest, HttpRequestCompletionErrorCodes) { |
+ Initialize(); |
+ |
+ const struct { |
+ const GURL url; |
+ int net_error; |
+ bool is_main_frame; |
+ int expected_sample_bucket; |
+ int expected_request_completion_count; |
+ int expected_request_completion_main_frame_count; |
+ } kTests[] = { |
+ {GURL("http://example.com"), net::OK, true, std::abs(net::OK), 1, 1}, |
+ {GURL("http://example.com"), net::ERR_ABORTED, true, |
+ std::abs(net::ERR_ABORTED), 1, 1}, |
+ {GURL("http://example.com"), net::OK, false, std::abs(net::OK), 1, 0}, |
+ {GURL("https://example.com"), net::OK, true, std::abs(net::OK), 0, 0}, |
+ }; |
+ |
+ const char kHttpRequestCompletionErrorCode[] = |
+ "Net.HttpRequestCompletionErrorCodes"; |
+ const char kHttpRequestCompletionErrorCodeMainFrame[] = |
+ "Net.HttpRequestCompletionErrorCodes.MainFrame"; |
+ |
+ for (const auto& test : kTests) { |
+ base::HistogramTester histograms; |
+ |
+ net::TestDelegate test_delegate; |
+ std::unique_ptr<net::URLRequest> request(context()->CreateRequest( |
+ test.url, net::DEFAULT_PRIORITY, &test_delegate)); |
+ if (test.is_main_frame) { |
+ request->SetLoadFlags(request->load_flags() | |
+ net::LOAD_MAIN_FRAME_DEPRECATED); |
+ } |
+ network_delegate()->NotifyCompleted(request.get(), false, test.net_error); |
+ |
+ histograms.ExpectTotalCount(kHttpRequestCompletionErrorCode, |
+ test.expected_request_completion_count); |
+ histograms.ExpectUniqueSample(kHttpRequestCompletionErrorCode, |
+ test.expected_sample_bucket, |
+ test.expected_request_completion_count); |
+ histograms.ExpectTotalCount( |
+ kHttpRequestCompletionErrorCodeMainFrame, |
+ test.expected_request_completion_main_frame_count); |
+ histograms.ExpectUniqueSample( |
+ kHttpRequestCompletionErrorCodeMainFrame, test.expected_sample_bucket, |
+ test.expected_request_completion_main_frame_count); |
+ } |
+} |
+ |
class ChromeNetworkDelegatePolicyTest : public testing::Test { |
public: |
ChromeNetworkDelegatePolicyTest() |