| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/base/network_change_notifier.h" | 5 #include "net/base/network_change_notifier.h" |
| 6 | 6 |
| 7 #include "base/metrics/histogram.h" | 7 #include "base/metrics/histogram.h" |
| 8 #include "base/synchronization/lock.h" | 8 #include "base/synchronization/lock.h" |
| 9 #include "base/threading/thread_checker.h" | 9 #include "base/threading/thread_checker.h" |
| 10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 144 first_byte_after_connection_change_); | 144 first_byte_after_connection_change_); |
| 145 UMA_HISTOGRAM_TIMES("NCN.CM.FastestRTTOn4G", | 145 UMA_HISTOGRAM_TIMES("NCN.CM.FastestRTTOn4G", |
| 146 fastest_RTT_since_last_connection_change_); | 146 fastest_RTT_since_last_connection_change_); |
| 147 break; | 147 break; |
| 148 case NetworkChangeNotifier::CONNECTION_NONE: | 148 case NetworkChangeNotifier::CONNECTION_NONE: |
| 149 UMA_HISTOGRAM_TIMES("NCN.CM.FirstReadOnNone", | 149 UMA_HISTOGRAM_TIMES("NCN.CM.FirstReadOnNone", |
| 150 first_byte_after_connection_change_); | 150 first_byte_after_connection_change_); |
| 151 UMA_HISTOGRAM_TIMES("NCN.CM.FastestRTTOnNone", | 151 UMA_HISTOGRAM_TIMES("NCN.CM.FastestRTTOnNone", |
| 152 fastest_RTT_since_last_connection_change_); | 152 fastest_RTT_since_last_connection_change_); |
| 153 break; | 153 break; |
| 154 case NetworkChangeNotifier::CONNECTION_BLUETOOTH: |
| 155 UMA_HISTOGRAM_TIMES("NCN.CM.FirstReadOnBluetooth", |
| 156 first_byte_after_connection_change_); |
| 157 UMA_HISTOGRAM_TIMES("NCN.CM.FastestRTTOnBluetooth", |
| 158 fastest_RTT_since_last_connection_change_); |
| 154 } | 159 } |
| 155 } | 160 } |
| 156 if (peak_kbps_since_last_connection_change_) { | 161 if (peak_kbps_since_last_connection_change_) { |
| 157 switch (last_connection_type_) { | 162 switch (last_connection_type_) { |
| 158 case NetworkChangeNotifier::CONNECTION_UNKNOWN: | 163 case NetworkChangeNotifier::CONNECTION_UNKNOWN: |
| 159 UMA_HISTOGRAM_COUNTS("NCN.CM.PeakKbpsOnUnknown", | 164 UMA_HISTOGRAM_COUNTS("NCN.CM.PeakKbpsOnUnknown", |
| 160 peak_kbps_since_last_connection_change_); | 165 peak_kbps_since_last_connection_change_); |
| 161 break; | 166 break; |
| 162 case NetworkChangeNotifier::CONNECTION_ETHERNET: | 167 case NetworkChangeNotifier::CONNECTION_ETHERNET: |
| 163 UMA_HISTOGRAM_COUNTS("NCN.CM.PeakKbpsOnEthernet", | 168 UMA_HISTOGRAM_COUNTS("NCN.CM.PeakKbpsOnEthernet", |
| (...skipping 12 matching lines...) Expand all Loading... |
| 176 peak_kbps_since_last_connection_change_); | 181 peak_kbps_since_last_connection_change_); |
| 177 break; | 182 break; |
| 178 case NetworkChangeNotifier::CONNECTION_4G: | 183 case NetworkChangeNotifier::CONNECTION_4G: |
| 179 UMA_HISTOGRAM_COUNTS("NCN.CM.PeakKbpsOn4G", | 184 UMA_HISTOGRAM_COUNTS("NCN.CM.PeakKbpsOn4G", |
| 180 peak_kbps_since_last_connection_change_); | 185 peak_kbps_since_last_connection_change_); |
| 181 break; | 186 break; |
| 182 case NetworkChangeNotifier::CONNECTION_NONE: | 187 case NetworkChangeNotifier::CONNECTION_NONE: |
| 183 UMA_HISTOGRAM_COUNTS("NCN.CM.PeakKbpsOnNone", | 188 UMA_HISTOGRAM_COUNTS("NCN.CM.PeakKbpsOnNone", |
| 184 peak_kbps_since_last_connection_change_); | 189 peak_kbps_since_last_connection_change_); |
| 185 break; | 190 break; |
| 191 case NetworkChangeNotifier::CONNECTION_BLUETOOTH: |
| 192 UMA_HISTOGRAM_COUNTS("NCN.CM.PeakKbpsOnBluetooth", |
| 193 peak_kbps_since_last_connection_change_); |
| 194 break; |
| 186 } | 195 } |
| 187 } | 196 } |
| 188 switch (last_connection_type_) { | 197 switch (last_connection_type_) { |
| 189 case NetworkChangeNotifier::CONNECTION_UNKNOWN: | 198 case NetworkChangeNotifier::CONNECTION_UNKNOWN: |
| 190 UMA_HISTOGRAM_LONG_TIMES("NCN.CM.TimeOnUnknown", state_duration); | 199 UMA_HISTOGRAM_LONG_TIMES("NCN.CM.TimeOnUnknown", state_duration); |
| 191 UMA_HISTOGRAM_COUNTS("NCN.CM.KBTransferedOnUnknown", kilobytes_read); | 200 UMA_HISTOGRAM_COUNTS("NCN.CM.KBTransferedOnUnknown", kilobytes_read); |
| 192 break; | 201 break; |
| 193 case NetworkChangeNotifier::CONNECTION_ETHERNET: | 202 case NetworkChangeNotifier::CONNECTION_ETHERNET: |
| 194 UMA_HISTOGRAM_LONG_TIMES("NCN.CM.TimeOnEthernet", state_duration); | 203 UMA_HISTOGRAM_LONG_TIMES("NCN.CM.TimeOnEthernet", state_duration); |
| 195 UMA_HISTOGRAM_COUNTS("NCN.CM.KBTransferedOnEthernet", kilobytes_read); | 204 UMA_HISTOGRAM_COUNTS("NCN.CM.KBTransferedOnEthernet", kilobytes_read); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 207 UMA_HISTOGRAM_COUNTS("NCN.CM.KBTransferedOn3G", kilobytes_read); | 216 UMA_HISTOGRAM_COUNTS("NCN.CM.KBTransferedOn3G", kilobytes_read); |
| 208 break; | 217 break; |
| 209 case NetworkChangeNotifier::CONNECTION_4G: | 218 case NetworkChangeNotifier::CONNECTION_4G: |
| 210 UMA_HISTOGRAM_LONG_TIMES("NCN.CM.TimeOn4G", state_duration); | 219 UMA_HISTOGRAM_LONG_TIMES("NCN.CM.TimeOn4G", state_duration); |
| 211 UMA_HISTOGRAM_COUNTS("NCN.CM.KBTransferedOn4G", kilobytes_read); | 220 UMA_HISTOGRAM_COUNTS("NCN.CM.KBTransferedOn4G", kilobytes_read); |
| 212 break; | 221 break; |
| 213 case NetworkChangeNotifier::CONNECTION_NONE: | 222 case NetworkChangeNotifier::CONNECTION_NONE: |
| 214 UMA_HISTOGRAM_LONG_TIMES("NCN.CM.TimeOnNone", state_duration); | 223 UMA_HISTOGRAM_LONG_TIMES("NCN.CM.TimeOnNone", state_duration); |
| 215 UMA_HISTOGRAM_COUNTS("NCN.CM.KBTransferedOnNone", kilobytes_read); | 224 UMA_HISTOGRAM_COUNTS("NCN.CM.KBTransferedOnNone", kilobytes_read); |
| 216 break; | 225 break; |
| 226 case NetworkChangeNotifier::CONNECTION_BLUETOOTH: |
| 227 UMA_HISTOGRAM_LONG_TIMES("NCN.CM.TimeOnBluetooth", state_duration); |
| 228 UMA_HISTOGRAM_COUNTS("NCN.CM.KBTransferedOnBluetooth", kilobytes_read); |
| 229 break; |
| 217 } | 230 } |
| 218 | 231 |
| 219 if (type != NetworkChangeNotifier::CONNECTION_NONE) { | 232 if (type != NetworkChangeNotifier::CONNECTION_NONE) { |
| 220 UMA_HISTOGRAM_MEDIUM_TIMES("NCN.OnlineChange", state_duration); | 233 UMA_HISTOGRAM_MEDIUM_TIMES("NCN.OnlineChange", state_duration); |
| 221 | 234 |
| 222 if (offline_packets_received_) { | 235 if (offline_packets_received_) { |
| 223 if ((now - last_offline_packet_received_) < | 236 if ((now - last_offline_packet_received_) < |
| 224 base::TimeDelta::FromSeconds(5)) { | 237 base::TimeDelta::FromSeconds(5)) { |
| 225 // We can compare this sum with the sum of NCN.OfflineDataRecv. | 238 // We can compare this sum with the sum of NCN.OfflineDataRecv. |
| 226 UMA_HISTOGRAM_COUNTS_10000( | 239 UMA_HISTOGRAM_COUNTS_10000( |
| (...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 533 // static | 546 // static |
| 534 const char* NetworkChangeNotifier::ConnectionTypeToString( | 547 const char* NetworkChangeNotifier::ConnectionTypeToString( |
| 535 ConnectionType type) { | 548 ConnectionType type) { |
| 536 static const char* kConnectionTypeNames[] = { | 549 static const char* kConnectionTypeNames[] = { |
| 537 "CONNECTION_UNKNOWN", | 550 "CONNECTION_UNKNOWN", |
| 538 "CONNECTION_ETHERNET", | 551 "CONNECTION_ETHERNET", |
| 539 "CONNECTION_WIFI", | 552 "CONNECTION_WIFI", |
| 540 "CONNECTION_2G", | 553 "CONNECTION_2G", |
| 541 "CONNECTION_3G", | 554 "CONNECTION_3G", |
| 542 "CONNECTION_4G", | 555 "CONNECTION_4G", |
| 543 "CONNECTION_NONE" | 556 "CONNECTION_NONE", |
| 557 "CONNECTION_BLUETOOTH" |
| 544 }; | 558 }; |
| 545 COMPILE_ASSERT( | 559 COMPILE_ASSERT( |
| 546 arraysize(kConnectionTypeNames) == | 560 arraysize(kConnectionTypeNames) == |
| 547 NetworkChangeNotifier::CONNECTION_NONE + 1, | 561 NetworkChangeNotifier::CONNECTION_LAST + 1, |
| 548 ConnectionType_name_count_mismatch); | 562 ConnectionType_name_count_mismatch); |
| 549 if (type < CONNECTION_UNKNOWN || type > CONNECTION_NONE) { | 563 if (type < CONNECTION_UNKNOWN || type > CONNECTION_LAST) { |
| 550 NOTREACHED(); | 564 NOTREACHED(); |
| 551 return "CONNECTION_INVALID"; | 565 return "CONNECTION_INVALID"; |
| 552 } | 566 } |
| 553 return kConnectionTypeNames[type]; | 567 return kConnectionTypeNames[type]; |
| 554 } | 568 } |
| 555 | 569 |
| 556 // static | 570 // static |
| 557 void NetworkChangeNotifier::NotifyDataReceived(const URLRequest& request, | 571 void NetworkChangeNotifier::NotifyDataReceived(const URLRequest& request, |
| 558 int bytes_read) { | 572 int bytes_read) { |
| 559 if (!g_network_change_notifier || | 573 if (!g_network_change_notifier || |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 618 switch (type) { | 632 switch (type) { |
| 619 case CONNECTION_2G: | 633 case CONNECTION_2G: |
| 620 case CONNECTION_3G: | 634 case CONNECTION_3G: |
| 621 case CONNECTION_4G: | 635 case CONNECTION_4G: |
| 622 is_cellular = true; | 636 is_cellular = true; |
| 623 break; | 637 break; |
| 624 case CONNECTION_UNKNOWN: | 638 case CONNECTION_UNKNOWN: |
| 625 case CONNECTION_ETHERNET: | 639 case CONNECTION_ETHERNET: |
| 626 case CONNECTION_WIFI: | 640 case CONNECTION_WIFI: |
| 627 case CONNECTION_NONE: | 641 case CONNECTION_NONE: |
| 642 case CONNECTION_BLUETOOTH: |
| 628 is_cellular = false; | 643 is_cellular = false; |
| 629 break; | 644 break; |
| 630 } | 645 } |
| 631 return is_cellular; | 646 return is_cellular; |
| 632 } | 647 } |
| 633 | 648 |
| 634 // static | 649 // static |
| 635 NetworkChangeNotifier* NetworkChangeNotifier::CreateMock() { | 650 NetworkChangeNotifier* NetworkChangeNotifier::CreateMock() { |
| 636 return new MockNetworkChangeNotifier(); | 651 return new MockNetworkChangeNotifier(); |
| 637 } | 652 } |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 770 DCHECK(g_network_change_notifier); | 785 DCHECK(g_network_change_notifier); |
| 771 g_network_change_notifier = NULL; | 786 g_network_change_notifier = NULL; |
| 772 } | 787 } |
| 773 | 788 |
| 774 NetworkChangeNotifier::DisableForTest::~DisableForTest() { | 789 NetworkChangeNotifier::DisableForTest::~DisableForTest() { |
| 775 DCHECK(!g_network_change_notifier); | 790 DCHECK(!g_network_change_notifier); |
| 776 g_network_change_notifier = network_change_notifier_; | 791 g_network_change_notifier = network_change_notifier_; |
| 777 } | 792 } |
| 778 | 793 |
| 779 } // namespace net | 794 } // namespace net |
| OLD | NEW |