Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(992)

Side by Side Diff: net/nqe/network_quality_estimator.cc

Issue 2332643002: Change net/nqe and some url_request tests to use new URLRequest API (Closed)
Patch Set: add ftp job unittests and http job files Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/nqe/network_quality_estimator.h ('k') | net/nqe/throughput_analyzer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "net/nqe/network_quality_estimator.h" 5 #include "net/nqe/network_quality_estimator.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <limits> 9 #include <limits>
10 #include <utility> 10 #include <utility>
(...skipping 789 matching lines...) Expand 10 before | Expand all | Expand 10 after
800 const int estimated_observed_diff_milliseconds = 800 const int estimated_observed_diff_milliseconds =
801 external_estimate_provider_quality_.http_rtt().InMilliseconds() - 801 external_estimate_provider_quality_.http_rtt().InMilliseconds() -
802 recent_http_rtt.InMilliseconds(); 802 recent_http_rtt.InMilliseconds();
803 803
804 RecordRTTAccuracy("NQE.ExternalEstimateProvider.RTT.Accuracy", 804 RecordRTTAccuracy("NQE.ExternalEstimateProvider.RTT.Accuracy",
805 estimated_observed_diff_milliseconds, measuring_duration, 805 estimated_observed_diff_milliseconds, measuring_duration,
806 recent_http_rtt); 806 recent_http_rtt);
807 } 807 }
808 } 808 }
809 809
810 void NetworkQualityEstimator::NotifyRequestCompleted( 810 void NetworkQualityEstimator::NotifyRequestCompleted(const URLRequest& request,
811 const URLRequest& request) { 811 int net_error) {
812 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"), 812 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("net"),
813 "NetworkQualityEstimator::NotifyRequestCompleted"); 813 "NetworkQualityEstimator::NotifyRequestCompleted");
814 DCHECK(thread_checker_.CalledOnValidThread()); 814 DCHECK(thread_checker_.CalledOnValidThread());
815 815
816 if (!RequestSchemeIsHTTPOrHTTPS(request)) 816 if (!RequestSchemeIsHTTPOrHTTPS(request))
817 return; 817 return;
818 818
819 throughput_analyzer_->NotifyRequestCompleted(request); 819 throughput_analyzer_->NotifyRequestCompleted(request);
820 RecordCorrelationMetric(request); 820 RecordCorrelationMetric(request, net_error);
821 } 821 }
822 822
823 void NetworkQualityEstimator::RecordCorrelationMetric( 823 void NetworkQualityEstimator::RecordCorrelationMetric(const URLRequest& request,
824 const URLRequest& request) const { 824 int net_error) const {
825 DCHECK(thread_checker_.CalledOnValidThread()); 825 DCHECK(thread_checker_.CalledOnValidThread());
826 826
827 // The histogram is recorded with probability 827 // The histogram is recorded with probability
828 // |correlation_uma_logging_probability_| to reduce overhead involved with 828 // |correlation_uma_logging_probability_| to reduce overhead involved with
829 // sparse histograms. Also, recording the correlation on each request is 829 // sparse histograms. Also, recording the correlation on each request is
830 // unnecessary. 830 // unnecessary.
831 if (RandDouble() >= correlation_uma_logging_probability_) 831 if (RandDouble() >= correlation_uma_logging_probability_)
832 return; 832 return;
833 833
834 if (request.response_info().was_cached || 834 if (request.response_info().was_cached ||
835 !request.response_info().network_accessed) { 835 !request.response_info().network_accessed) {
836 return; 836 return;
837 } 837 }
838 838
839 LoadTimingInfo load_timing_info; 839 LoadTimingInfo load_timing_info;
840 request.GetLoadTimingInfo(&load_timing_info); 840 request.GetLoadTimingInfo(&load_timing_info);
841 // If the load timing info is unavailable, it probably means that the request 841 // If the load timing info is unavailable, it probably means that the request
842 // did not go over the network. 842 // did not go over the network.
843 if (load_timing_info.send_start.is_null() || 843 if (load_timing_info.send_start.is_null() ||
844 load_timing_info.receive_headers_end.is_null()) { 844 load_timing_info.receive_headers_end.is_null()) {
845 return; 845 return;
846 } 846 }
847 847
848 // Record UMA only for successful requests that have completed. 848 // Record UMA only for successful requests that have completed.
849 if (!request.status().is_success() || request.status().is_io_pending()) 849 if (net_error != OK)
850 return; 850 return;
851 if (request.GetResponseCode() != HTTP_OK) 851 if (request.GetResponseCode() != HTTP_OK)
852 return; 852 return;
853 if (load_timing_info.receive_headers_end < last_main_frame_request_) 853 if (load_timing_info.receive_headers_end < last_main_frame_request_)
854 return; 854 return;
855 855
856 const base::TimeTicks now = tick_clock_->NowTicks(); 856 const base::TimeTicks now = tick_clock_->NowTicks();
857 // Record UMA only for requests that started recently. 857 // Record UMA only for requests that started recently.
858 if (now - last_main_frame_request_ > base::TimeDelta::FromSeconds(15)) 858 if (now - last_main_frame_request_ > base::TimeDelta::FromSeconds(15))
859 return; 859 return;
(...skipping 851 matching lines...) Expand 10 before | Expand all | Expand 10 after
1711 if (effective_connection_type_ != EFFECTIVE_CONNECTION_TYPE_UNKNOWN) { 1711 if (effective_connection_type_ != EFFECTIVE_CONNECTION_TYPE_UNKNOWN) {
1712 network_quality_store_->Add( 1712 network_quality_store_->Add(
1713 current_network_id_, 1713 current_network_id_,
1714 nqe::internal::CachedNetworkQuality( 1714 nqe::internal::CachedNetworkQuality(
1715 tick_clock_->NowTicks(), estimated_quality_at_last_main_frame_, 1715 tick_clock_->NowTicks(), estimated_quality_at_last_main_frame_,
1716 effective_connection_type_)); 1716 effective_connection_type_));
1717 } 1717 }
1718 } 1718 }
1719 1719
1720 } // namespace net 1720 } // namespace net
OLDNEW
« no previous file with comments | « net/nqe/network_quality_estimator.h ('k') | net/nqe/throughput_analyzer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698