Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 608 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 619 return; | 619 return; |
| 620 | 620 |
| 621 // Use the system clock instead of |tick_clock_| to compare the current | 621 // Use the system clock instead of |tick_clock_| to compare the current |
| 622 // timestamp with the |load_timing_info| timestamp since the latter is set by | 622 // timestamp with the |load_timing_info| timestamp since the latter is set by |
| 623 // the system clock, and may be different from |tick_clock_| in tests. | 623 // the system clock, and may be different from |tick_clock_| in tests. |
| 624 const base::TimeTicks now = base::TimeTicks::Now(); | 624 const base::TimeTicks now = base::TimeTicks::Now(); |
| 625 // Record UMA only for requests that started recently. | 625 // Record UMA only for requests that started recently. |
| 626 if (now - last_main_frame_request_ > base::TimeDelta::FromSeconds(15)) | 626 if (now - last_main_frame_request_ > base::TimeDelta::FromSeconds(15)) |
| 627 return; | 627 return; |
| 628 | 628 |
| 629 if (last_connection_change_ >= last_main_frame_request_) | |
| 630 return; | |
| 631 | |
| 629 DCHECK_GE(now, load_timing_info.send_start); | 632 DCHECK_GE(now, load_timing_info.send_start); |
| 630 | 633 |
| 631 int32_t rtt = 0; | 634 int32_t rtt = 0; |
| 632 | 635 |
| 633 if (UseTransportRTT()) { | 636 if (UseTransportRTT()) { |
| 634 rtt = estimated_quality_at_last_main_frame_.transport_rtt() != | 637 if (estimated_quality_at_last_main_frame_.transport_rtt() == |
| 635 nqe::internal::InvalidRTT() | 638 nqe::internal::InvalidRTT()) { |
| 636 ? FitInKBitsPerMetricBits( | 639 return; |
| 637 estimated_quality_at_last_main_frame_.transport_rtt() | 640 } |
| 638 .InMilliseconds()) | 641 rtt = FitInKBitsPerMetricBits( |
| 639 : 0; | 642 estimated_quality_at_last_main_frame_.transport_rtt().InMilliseconds()); |
| 640 } else { | 643 } else { |
| 641 rtt = estimated_quality_at_last_main_frame_.http_rtt() != | 644 if (estimated_quality_at_last_main_frame_.http_rtt() == |
| 642 nqe::internal::InvalidRTT() | 645 nqe::internal::InvalidRTT()) { |
| 643 ? FitInKBitsPerMetricBits( | 646 return; |
| 644 estimated_quality_at_last_main_frame_.http_rtt() | 647 } |
| 645 .InMilliseconds()) | 648 rtt = FitInKBitsPerMetricBits( |
| 646 : 0; | 649 estimated_quality_at_last_main_frame_.http_rtt().InMilliseconds()); |
| 647 } | 650 } |
| 648 | 651 |
| 649 const int32_t downstream_throughput = | 652 if (estimated_quality_at_last_main_frame_.downstream_throughput_kbps() == |
|
RyanSturm
2017/02/02 23:06:16
Move this if above the UseTrasportRTT block so tha
tbansal1
2017/02/03 00:56:26
Done.
| |
| 650 estimated_quality_at_last_main_frame_.downstream_throughput_kbps() != | 653 nqe::internal::kInvalidThroughput) { |
| 651 nqe::internal::kInvalidThroughput | 654 return; |
| 652 ? FitInKBitsPerMetricBits(estimated_quality_at_last_main_frame_ | 655 } |
| 653 .downstream_throughput_kbps()) | 656 |
| 654 : 0; | 657 const int32_t downstream_throughput = FitInKBitsPerMetricBits( |
| 658 estimated_quality_at_last_main_frame_.downstream_throughput_kbps()); | |
| 655 | 659 |
| 656 const int32_t resource_load_time = FitInKBitsPerMetricBits( | 660 const int32_t resource_load_time = FitInKBitsPerMetricBits( |
| 657 (now - load_timing_info.send_start).InMilliseconds()); | 661 (now - load_timing_info.send_start).InMilliseconds()); |
| 658 | 662 |
| 659 int64_t resource_size = (request.GetTotalReceivedBytes() * 8) / 1024; | 663 int64_t resource_size = (request.GetTotalReceivedBytes() * 8) / 1024; |
| 660 if (resource_size >= (1 << kBitsPerMetric)) { | 664 if (resource_size >= (1 << kBitsPerMetric)) { |
| 661 // Too large resource size (at least 128 Kb). | 665 // Too large resource size (at least 128 Kb). |
| 662 return; | 666 return; |
| 663 } | 667 } |
| 664 | 668 |
| (...skipping 1058 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1723 NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_CACHED_ESTIMATE); | 1727 NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_CACHED_ESTIMATE); |
| 1724 downstream_throughput_kbps_observations_.AddObservation( | 1728 downstream_throughput_kbps_observations_.AddObservation( |
| 1725 throughput_observation); | 1729 throughput_observation); |
| 1726 NotifyObserversOfThroughput(throughput_observation); | 1730 NotifyObserversOfThroughput(throughput_observation); |
| 1727 } | 1731 } |
| 1728 | 1732 |
| 1729 ComputeEffectiveConnectionType(); | 1733 ComputeEffectiveConnectionType(); |
| 1730 } | 1734 } |
| 1731 | 1735 |
| 1732 } // namespace net | 1736 } // namespace net |
| OLD | NEW |