Index: net/base/network_change_notifier.cc |
diff --git a/net/base/network_change_notifier.cc b/net/base/network_change_notifier.cc |
index afd6b23d4fa2a0646ef30086ddfea1a86a0c5117..b797864ac80f4a74833247f97ebf97ce0a3cc89a 100644 |
--- a/net/base/network_change_notifier.cc |
+++ b/net/base/network_change_notifier.cc |
@@ -305,7 +305,8 @@ class HistogramWatcher |
if (bytes_read > 10000 && |
request_duration > base::TimeDelta::FromMilliseconds(1) && |
request.creation_time() > last_connection_change_) { |
- int32 kbps = bytes_read * 8 / request_duration.InMilliseconds(); |
+ int32 kbps = static_cast<int32>( |
+ bytes_read * 8 / request_duration.InMilliseconds()); |
if (kbps > peak_kbps_since_last_connection_change_) |
peak_kbps_since_last_connection_change_ = kbps; |
} |
@@ -784,6 +785,81 @@ double NetworkChangeNotifier::GetCurrentMaxBandwidth() const { |
} |
// static |
+double NetworkChangeNotifier::GetMaxBandwidthForConnectionSubtype( |
+ ConnectionSubtype subtype) { |
+ switch (subtype) { |
+ case SUBTYPE_GSM: |
+ return 0.01; |
+ case SUBTYPE_IDEN: |
+ return 0.064; |
+ case SUBTYPE_CDMA: |
+ return 0.115; |
+ case SUBTYPE_1XRTT: |
+ return 0.153; |
+ case SUBTYPE_GPRS: |
+ return 0.237; |
+ case SUBTYPE_EDGE: |
+ return 0.384; |
+ case SUBTYPE_UMTS: |
+ return 2.0; |
+ case SUBTYPE_EVDO_REV_0: |
+ return 2.46; |
+ case SUBTYPE_EVDO_REV_A: |
+ return 3.1; |
+ case SUBTYPE_HSPA: |
+ return 3.6; |
+ case SUBTYPE_EVDO_REV_B: |
+ return 14.7; |
+ case SUBTYPE_HSDPA: |
+ return 14.3; |
+ case SUBTYPE_HSUPA: |
+ return 14.4; |
+ case SUBTYPE_EHRPD: |
+ return 21.0; |
+ case SUBTYPE_HSPAP: |
+ return 42.0; |
+ case SUBTYPE_LTE: |
+ return 100.0; |
+ case SUBTYPE_LTE_ADVANCED: |
+ return 100.0; |
+ case SUBTYPE_BLUETOOTH_1_2: |
+ return 1.0; |
+ case SUBTYPE_BLUETOOTH_2_1: |
+ return 3.0; |
+ case SUBTYPE_BLUETOOTH_3_0: |
+ return 24.0; |
+ case SUBTYPE_BLUETOOTH_4_0: |
+ return 1.0; |
+ case SUBTYPE_ETHERNET: |
+ return 10.0; |
+ case SUBTYPE_FAST_ETHERNET: |
+ return 100.0; |
+ case SUBTYPE_GIGABIT_ETHERNET: |
+ return 1000.0; |
+ case SUBTYPE_10_GIGABIT_ETHERNET: |
+ return 10000.0; |
+ case SUBTYPE_WIFI_B: |
+ return 11.0; |
+ case SUBTYPE_WIFI_G: |
+ return 54.0; |
+ case SUBTYPE_WIFI_N: |
+ return 600.0; |
+ case SUBTYPE_WIFI_AC: |
+ return 1300.0; |
+ case SUBTYPE_WIFI_AD: |
+ return 7000.0; |
+ case SUBTYPE_UNKNOWN: |
+ return std::numeric_limits<double>::infinity(); |
+ case SUBTYPE_NONE: |
+ return 0.0; |
+ case SUBTYPE_OTHER: |
+ return std::numeric_limits<double>::infinity(); |
+ } |
+ NOTREACHED(); |
+ return std::numeric_limits<double>::infinity(); |
+} |
+ |
+// static |
void NetworkChangeNotifier::NotifyObserversOfIPAddressChange() { |
if (g_network_change_notifier && |
!g_network_change_notifier->test_notifications_only_) { |