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 <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/metrics/histogram_macros.h" | 9 #include "base/metrics/histogram_macros.h" |
10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 | 46 |
47 class MockNetworkChangeNotifier : public NetworkChangeNotifier { | 47 class MockNetworkChangeNotifier : public NetworkChangeNotifier { |
48 public: | 48 public: |
49 ConnectionType GetCurrentConnectionType() const override { | 49 ConnectionType GetCurrentConnectionType() const override { |
50 return CONNECTION_UNKNOWN; | 50 return CONNECTION_UNKNOWN; |
51 } | 51 } |
52 }; | 52 }; |
53 | 53 |
54 } // namespace | 54 } // namespace |
55 | 55 |
| 56 // static |
| 57 bool NetworkChangeNotifier::test_notifications_only_ = false; |
| 58 |
56 // The main observer class that records UMAs for network events. | 59 // The main observer class that records UMAs for network events. |
57 class HistogramWatcher | 60 class HistogramWatcher |
58 : public NetworkChangeNotifier::ConnectionTypeObserver, | 61 : public NetworkChangeNotifier::ConnectionTypeObserver, |
59 public NetworkChangeNotifier::IPAddressObserver, | 62 public NetworkChangeNotifier::IPAddressObserver, |
60 public NetworkChangeNotifier::DNSObserver, | 63 public NetworkChangeNotifier::DNSObserver, |
61 public NetworkChangeNotifier::NetworkChangeObserver { | 64 public NetworkChangeNotifier::NetworkChangeObserver { |
62 public: | 65 public: |
63 HistogramWatcher() | 66 HistogramWatcher() |
64 : last_ip_address_change_(base::TimeTicks::Now()), | 67 : last_ip_address_change_(base::TimeTicks::Now()), |
65 last_connection_change_(base::TimeTicks::Now()), | 68 last_connection_change_(base::TimeTicks::Now()), |
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
782 } | 785 } |
783 | 786 |
784 // static | 787 // static |
785 void NetworkChangeNotifier::NotifyObserversOfInitialDNSConfigReadForTests() { | 788 void NetworkChangeNotifier::NotifyObserversOfInitialDNSConfigReadForTests() { |
786 if (g_network_change_notifier) | 789 if (g_network_change_notifier) |
787 g_network_change_notifier->NotifyObserversOfInitialDNSConfigReadImpl(); | 790 g_network_change_notifier->NotifyObserversOfInitialDNSConfigReadImpl(); |
788 } | 791 } |
789 | 792 |
790 // static | 793 // static |
791 void NetworkChangeNotifier::SetTestNotificationsOnly(bool test_only) { | 794 void NetworkChangeNotifier::SetTestNotificationsOnly(bool test_only) { |
792 if (g_network_change_notifier) | 795 DCHECK(!g_network_change_notifier); |
793 g_network_change_notifier->test_notifications_only_ = test_only; | 796 NetworkChangeNotifier::test_notifications_only_ = test_only; |
794 } | 797 } |
795 | 798 |
796 NetworkChangeNotifier::NetworkChangeNotifier( | 799 NetworkChangeNotifier::NetworkChangeNotifier( |
797 const NetworkChangeCalculatorParams& params | 800 const NetworkChangeCalculatorParams& params |
798 /*= NetworkChangeCalculatorParams()*/) | 801 /*= NetworkChangeCalculatorParams()*/) |
799 : ip_address_observer_list_( | 802 : ip_address_observer_list_( |
800 new base::ObserverListThreadSafe<IPAddressObserver>( | 803 new base::ObserverListThreadSafe<IPAddressObserver>( |
801 base::ObserverListBase<IPAddressObserver>::NOTIFY_EXISTING_ONLY)), | 804 base::ObserverListBase<IPAddressObserver>::NOTIFY_EXISTING_ONLY)), |
802 connection_type_observer_list_( | 805 connection_type_observer_list_( |
803 new base::ObserverListThreadSafe<ConnectionTypeObserver>( | 806 new base::ObserverListThreadSafe<ConnectionTypeObserver>( |
804 base::ObserverListBase< | 807 base::ObserverListBase< |
805 ConnectionTypeObserver>::NOTIFY_EXISTING_ONLY)), | 808 ConnectionTypeObserver>::NOTIFY_EXISTING_ONLY)), |
806 resolver_state_observer_list_( | 809 resolver_state_observer_list_( |
807 new base::ObserverListThreadSafe<DNSObserver>( | 810 new base::ObserverListThreadSafe<DNSObserver>( |
808 base::ObserverListBase<DNSObserver>::NOTIFY_EXISTING_ONLY)), | 811 base::ObserverListBase<DNSObserver>::NOTIFY_EXISTING_ONLY)), |
809 network_change_observer_list_(new base::ObserverListThreadSafe< | 812 network_change_observer_list_(new base::ObserverListThreadSafe< |
810 NetworkChangeObserver>( | 813 NetworkChangeObserver>( |
811 base::ObserverListBase<NetworkChangeObserver>::NOTIFY_EXISTING_ONLY)), | 814 base::ObserverListBase<NetworkChangeObserver>::NOTIFY_EXISTING_ONLY)), |
812 max_bandwidth_observer_list_(new base::ObserverListThreadSafe< | 815 max_bandwidth_observer_list_(new base::ObserverListThreadSafe< |
813 MaxBandwidthObserver>( | 816 MaxBandwidthObserver>( |
814 base::ObserverListBase<MaxBandwidthObserver>::NOTIFY_EXISTING_ONLY)), | 817 base::ObserverListBase<MaxBandwidthObserver>::NOTIFY_EXISTING_ONLY)), |
815 network_state_(new NetworkState()), | 818 network_state_(new NetworkState()), |
816 network_change_calculator_(new NetworkChangeCalculator(params)), | 819 network_change_calculator_(new NetworkChangeCalculator(params)) { |
817 test_notifications_only_(false) { | |
818 DCHECK(!g_network_change_notifier); | 820 DCHECK(!g_network_change_notifier); |
819 g_network_change_notifier = this; | 821 g_network_change_notifier = this; |
820 network_change_calculator_->Init(); | 822 network_change_calculator_->Init(); |
821 } | 823 } |
822 | 824 |
823 #if defined(OS_LINUX) | 825 #if defined(OS_LINUX) |
824 const internal::AddressTrackerLinux* | 826 const internal::AddressTrackerLinux* |
825 NetworkChangeNotifier::GetAddressTrackerInternal() const { | 827 NetworkChangeNotifier::GetAddressTrackerInternal() const { |
826 return NULL; | 828 return NULL; |
827 } | 829 } |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
907 case SUBTYPE_OTHER: | 909 case SUBTYPE_OTHER: |
908 return std::numeric_limits<double>::infinity(); | 910 return std::numeric_limits<double>::infinity(); |
909 } | 911 } |
910 NOTREACHED(); | 912 NOTREACHED(); |
911 return std::numeric_limits<double>::infinity(); | 913 return std::numeric_limits<double>::infinity(); |
912 } | 914 } |
913 | 915 |
914 // static | 916 // static |
915 void NetworkChangeNotifier::NotifyObserversOfIPAddressChange() { | 917 void NetworkChangeNotifier::NotifyObserversOfIPAddressChange() { |
916 if (g_network_change_notifier && | 918 if (g_network_change_notifier && |
917 !g_network_change_notifier->test_notifications_only_) { | 919 !NetworkChangeNotifier::test_notifications_only_) { |
918 g_network_change_notifier->NotifyObserversOfIPAddressChangeImpl(); | 920 g_network_change_notifier->NotifyObserversOfIPAddressChangeImpl(); |
919 } | 921 } |
920 } | 922 } |
921 | 923 |
922 // static | 924 // static |
923 void NetworkChangeNotifier::NotifyObserversOfConnectionTypeChange() { | 925 void NetworkChangeNotifier::NotifyObserversOfConnectionTypeChange() { |
924 if (g_network_change_notifier && | 926 if (g_network_change_notifier && |
925 !g_network_change_notifier->test_notifications_only_) { | 927 !NetworkChangeNotifier::test_notifications_only_) { |
926 g_network_change_notifier->NotifyObserversOfConnectionTypeChangeImpl( | 928 g_network_change_notifier->NotifyObserversOfConnectionTypeChangeImpl( |
927 GetConnectionType()); | 929 GetConnectionType()); |
928 } | 930 } |
929 } | 931 } |
930 | 932 |
931 // static | 933 // static |
932 void NetworkChangeNotifier::NotifyObserversOfNetworkChange( | 934 void NetworkChangeNotifier::NotifyObserversOfNetworkChange( |
933 ConnectionType type) { | 935 ConnectionType type) { |
934 if (g_network_change_notifier && | 936 if (g_network_change_notifier && |
935 !g_network_change_notifier->test_notifications_only_) { | 937 !NetworkChangeNotifier::test_notifications_only_) { |
936 g_network_change_notifier->NotifyObserversOfNetworkChangeImpl(type); | 938 g_network_change_notifier->NotifyObserversOfNetworkChangeImpl(type); |
937 } | 939 } |
938 } | 940 } |
939 | 941 |
940 // static | 942 // static |
941 void NetworkChangeNotifier::NotifyObserversOfMaxBandwidthChange( | 943 void NetworkChangeNotifier::NotifyObserversOfMaxBandwidthChange( |
942 double max_bandwidth_mbps) { | 944 double max_bandwidth_mbps) { |
943 if (g_network_change_notifier && | 945 if (g_network_change_notifier && |
944 !g_network_change_notifier->test_notifications_only_) { | 946 !NetworkChangeNotifier::test_notifications_only_) { |
945 g_network_change_notifier->NotifyObserversOfMaxBandwidthChangeImpl( | 947 g_network_change_notifier->NotifyObserversOfMaxBandwidthChangeImpl( |
946 max_bandwidth_mbps); | 948 max_bandwidth_mbps); |
947 } | 949 } |
948 } | 950 } |
949 | 951 |
950 // static | 952 // static |
951 void NetworkChangeNotifier::NotifyObserversOfDNSChange() { | 953 void NetworkChangeNotifier::NotifyObserversOfDNSChange() { |
952 if (g_network_change_notifier && | 954 if (g_network_change_notifier && |
953 !g_network_change_notifier->test_notifications_only_) { | 955 !NetworkChangeNotifier::test_notifications_only_) { |
954 g_network_change_notifier->NotifyObserversOfDNSChangeImpl(); | 956 g_network_change_notifier->NotifyObserversOfDNSChangeImpl(); |
955 } | 957 } |
956 } | 958 } |
957 | 959 |
958 // static | 960 // static |
959 void NetworkChangeNotifier::NotifyObserversOfInitialDNSConfigRead() { | 961 void NetworkChangeNotifier::NotifyObserversOfInitialDNSConfigRead() { |
960 if (g_network_change_notifier && | 962 if (g_network_change_notifier && |
961 !g_network_change_notifier->test_notifications_only_) { | 963 !NetworkChangeNotifier::test_notifications_only_) { |
962 g_network_change_notifier->NotifyObserversOfInitialDNSConfigReadImpl(); | 964 g_network_change_notifier->NotifyObserversOfInitialDNSConfigReadImpl(); |
963 } | 965 } |
964 } | 966 } |
965 | 967 |
966 // static | 968 // static |
967 void NetworkChangeNotifier::SetDnsConfig(const DnsConfig& config) { | 969 void NetworkChangeNotifier::SetDnsConfig(const DnsConfig& config) { |
968 if (!g_network_change_notifier) | 970 if (!g_network_change_notifier) |
969 return; | 971 return; |
970 g_network_change_notifier->network_state_->SetDnsConfig(config); | 972 g_network_change_notifier->network_state_->SetDnsConfig(config); |
971 NotifyObserversOfDNSChange(); | 973 NotifyObserversOfDNSChange(); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1026 | 1028 |
1027 NetworkChangeNotifier::DisableForTest::~DisableForTest() { | 1029 NetworkChangeNotifier::DisableForTest::~DisableForTest() { |
1028 DCHECK(!g_network_change_notifier); | 1030 DCHECK(!g_network_change_notifier); |
1029 g_network_change_notifier = network_change_notifier_; | 1031 g_network_change_notifier = network_change_notifier_; |
1030 } | 1032 } |
1031 | 1033 |
1032 void NetworkChangeNotifier::DNSObserver::OnInitialDNSConfigRead() { | 1034 void NetworkChangeNotifier::DNSObserver::OnInitialDNSConfigRead() { |
1033 } | 1035 } |
1034 | 1036 |
1035 } // namespace net | 1037 } // namespace net |
OLD | NEW |