blob: 32582e1cfce85c11931403117be4249bdb4be725 [file] [log] [blame]
rche11300ef2016-09-02 01:44:281// 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
3// found in the LICENSE file.
4
mgershaf9a9232017-04-13 20:19:035#include "net/base/mock_network_change_notifier.h"
rche11300ef2016-09-02 01:44:286
Eric Orthc398f1e2019-07-09 21:54:557#include <utility>
8
9#include "base/memory/ptr_util.h"
rche11300ef2016-09-02 01:44:2810#include "base/run_loop.h"
Eric Orthc398f1e2019-07-09 21:54:5511#include "net/dns/dns_config_service.h"
12#include "net/dns/system_dns_config_change_notifier.h"
rche11300ef2016-09-02 01:44:2813
14namespace net {
15namespace test {
16
Eric Orthc398f1e2019-07-09 21:54:5517// static
18std::unique_ptr<MockNetworkChangeNotifier> MockNetworkChangeNotifier::Create() {
19 // Use an empty noop SystemDnsConfigChangeNotifier to disable actual system
20 // DNS configuration notifications.
21 return base::WrapUnique(new MockNetworkChangeNotifier(
22 std::make_unique<SystemDnsConfigChangeNotifier>(
23 nullptr /* task_runner */, nullptr /* dns_config_service */)));
24}
25
26MockNetworkChangeNotifier::~MockNetworkChangeNotifier() {
27 StopSystemDnsConfigNotifier();
28}
rche11300ef2016-09-02 01:44:2829
30MockNetworkChangeNotifier::ConnectionType
31MockNetworkChangeNotifier::GetCurrentConnectionType() const {
rchd6163f32017-01-30 23:50:3832 return connection_type_;
rche11300ef2016-09-02 01:44:2833}
34
35void MockNetworkChangeNotifier::ForceNetworkHandlesSupported() {
36 force_network_handles_supported_ = true;
37}
38
39bool MockNetworkChangeNotifier::AreNetworkHandlesCurrentlySupported() const {
40 return force_network_handles_supported_;
41}
42
43void MockNetworkChangeNotifier::SetConnectedNetworksList(
44 const NetworkList& network_list) {
45 connected_networks_ = network_list;
46}
47
48void MockNetworkChangeNotifier::GetCurrentConnectedNetworks(
49 NetworkList* network_list) const {
50 network_list->clear();
51 *network_list = connected_networks_;
52}
53
54void MockNetworkChangeNotifier::NotifyNetworkMadeDefault(
55 NetworkChangeNotifier::NetworkHandle network) {
jri9f303712016-09-13 01:10:2256 QueueNetworkMadeDefault(network);
rche11300ef2016-09-02 01:44:2857 // Spin the message loop so the notification is delivered.
58 base::RunLoop().RunUntilIdle();
59}
60
jri9f303712016-09-13 01:10:2261void MockNetworkChangeNotifier::QueueNetworkMadeDefault(
62 NetworkChangeNotifier::NetworkHandle network) {
63 NetworkChangeNotifier::NotifyObserversOfSpecificNetworkChange(
64 NetworkChangeNotifier::MADE_DEFAULT, network);
65}
66
rche11300ef2016-09-02 01:44:2867void MockNetworkChangeNotifier::NotifyNetworkDisconnected(
68 NetworkChangeNotifier::NetworkHandle network) {
jri9f303712016-09-13 01:10:2269 QueueNetworkDisconnected(network);
70 // Spin the message loop so the notification is delivered.
71 base::RunLoop().RunUntilIdle();
72}
73
74void MockNetworkChangeNotifier::QueueNetworkDisconnected(
75 NetworkChangeNotifier::NetworkHandle network) {
rche11300ef2016-09-02 01:44:2876 NetworkChangeNotifier::NotifyObserversOfSpecificNetworkChange(
77 NetworkChangeNotifier::DISCONNECTED, network);
rche11300ef2016-09-02 01:44:2878}
79
jri5b785512016-09-13 04:29:1180void MockNetworkChangeNotifier::NotifyNetworkConnected(
81 NetworkChangeNotifier::NetworkHandle network) {
82 NetworkChangeNotifier::NotifyObserversOfSpecificNetworkChange(
83 NetworkChangeNotifier::CONNECTED, network);
84 // Spin the message loop so the notification is delivered.
85 base::RunLoop().RunUntilIdle();
86}
87
Eric Orth23935862020-01-10 00:42:2488void MockNetworkChangeNotifier::SetConnectionTypeAndNotifyObservers(
89 ConnectionType connection_type) {
90 SetConnectionType(connection_type);
91 NetworkChangeNotifier::NotifyObserversOfConnectionTypeChange();
92 // Spin the message loop so the notification is delivered.
93 base::RunLoop().RunUntilIdle();
94}
95
Eric Orthc398f1e2019-07-09 21:54:5596MockNetworkChangeNotifier::MockNetworkChangeNotifier(
97 std::unique_ptr<SystemDnsConfigChangeNotifier> dns_config_notifier)
98 : NetworkChangeNotifier(NetworkChangeCalculatorParams(),
99 dns_config_notifier.get()),
100 force_network_handles_supported_(false),
101 connection_type_(CONNECTION_UNKNOWN),
102 dns_config_notifier_(std::move(dns_config_notifier)) {}
103
rche11300ef2016-09-02 01:44:28104ScopedMockNetworkChangeNotifier::ScopedMockNetworkChangeNotifier()
105 : disable_network_change_notifier_for_tests_(
106 new NetworkChangeNotifier::DisableForTest()),
Eric Orthc398f1e2019-07-09 21:54:55107 mock_network_change_notifier_(MockNetworkChangeNotifier::Create()) {}
rche11300ef2016-09-02 01:44:28108
Chris Watkins68b15032017-12-01 03:07:13109ScopedMockNetworkChangeNotifier::~ScopedMockNetworkChangeNotifier() = default;
rche11300ef2016-09-02 01:44:28110
111MockNetworkChangeNotifier*
112ScopedMockNetworkChangeNotifier::mock_network_change_notifier() {
113 return mock_network_change_notifier_.get();
114}
115
116} // namespace test
117} // namespace net