Commit 522ff58c authored by Robbie McElrath's avatar Robbie McElrath Committed by Commit Bot

Migrate DiscoveryNetworkMonitory to NetworkConnectionTracker

This migrates DiscoveryNetworkMonitory from using
net::NetworkChangeNotifier to content::NetworkConnectionTracker, which
works with the network service enabled.

Bug: 868001
Change-Id: Ib8e7e1b766058579dfbc22d885df560a545b6804
Reviewed-on: https://chromium-review.googlesource.com/1147432
Commit-Queue: Robbie McElrath <rmcelrath@chromium.org>
Reviewed-by: default avatarDerek Cheng <imcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#581130}
parent b145a456
......@@ -17,6 +17,7 @@ static_library("discovery") {
"//components/version_info",
"//content/public/browser",
"//content/public/common",
"//services/network/public/cpp",
]
sources = [
"dial/device_description_fetcher.cc",
......
......@@ -16,6 +16,7 @@
#include "base/task/task_traits.h"
#include "base/task_runner_util.h"
#include "base/time/default_tick_clock.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/media/router/discovery/discovery_network_list.h"
#include "chrome/browser/media/router/discovery/discovery_network_monitor_metric_observer.h"
#include "net/base/network_interfaces.h"
......@@ -104,7 +105,10 @@ DiscoveryNetworkMonitor::DiscoveryNetworkMonitor(NetworkInfoFunction strategy)
std::make_unique<DiscoveryNetworkMonitorMetrics>())) {
DETACH_FROM_SEQUENCE(sequence_checker_);
AddObserver(metric_observer_.get());
net::NetworkChangeNotifier::AddNetworkChangeObserver(this);
g_browser_process->network_connection_tracker()
->AddLeakyNetworkConnectionObserver(this);
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(
......@@ -113,8 +117,7 @@ DiscoveryNetworkMonitor::DiscoveryNetworkMonitor(NetworkInfoFunction strategy)
}
DiscoveryNetworkMonitor::~DiscoveryNetworkMonitor() {
net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this);
RemoveObserver(metric_observer_.get());
// Never gets called.
}
void DiscoveryNetworkMonitor::SetNetworkInfoFunctionForTest(
......@@ -122,8 +125,8 @@ void DiscoveryNetworkMonitor::SetNetworkInfoFunctionForTest(
network_info_function_ = strategy;
}
void DiscoveryNetworkMonitor::OnNetworkChanged(
net::NetworkChangeNotifier::ConnectionType) {
void DiscoveryNetworkMonitor::OnConnectionChanged(
network::mojom::ConnectionType type) {
task_runner_->PostTask(
FROM_HERE,
base::BindOnce(
......
......@@ -16,7 +16,7 @@
#include "base/task/post_task.h"
#include "chrome/browser/media/router/discovery/discovery_network_info.h"
#include "net/base/ip_address.h"
#include "net/base/network_change_notifier.h"
#include "services/network/public/cpp/network_connection_tracker.h"
namespace media_router {
......@@ -33,7 +33,7 @@ class DiscoveryNetworkMonitorMetricObserver;
// called from the IO thread. All observers will be notified of network changes
// on the thread from which they registered.
class DiscoveryNetworkMonitor
: public net::NetworkChangeNotifier::NetworkChangeObserver {
: public network::NetworkConnectionTracker::NetworkConnectionObserver {
public:
using NetworkInfoFunction = std::vector<DiscoveryNetworkInfo> (*)();
using NetworkIdCallback = base::OnceCallback<void(const std::string&)>;
......@@ -71,6 +71,8 @@ class DiscoveryNetworkMonitor
void GetNetworkId(NetworkIdCallback callback);
private:
friend class CastMediaSinkServiceImplTest;
friend class DiscoveryNetworkMonitorTest;
friend struct std::default_delete<DiscoveryNetworkMonitor>;
friend struct base::LazyInstanceTraitsBase<DiscoveryNetworkMonitor>;
......@@ -80,9 +82,8 @@ class DiscoveryNetworkMonitor
void SetNetworkInfoFunctionForTest(NetworkInfoFunction strategy);
// net::NetworkChangeNotifier::NetworkChangeObserver
void OnNetworkChanged(
net::NetworkChangeNotifier::ConnectionType type) override;
// network::NetworkConnectionTracker::NetworkConnectionObserver overrides.
void OnConnectionChanged(network::mojom::ConnectionType type) override;
std::string GetNetworkIdOnSequence() const;
std::string UpdateNetworkInfo();
......
......@@ -38,6 +38,10 @@ class DiscoveryNetworkMonitorTest : public testing::Test {
return fake_network_info;
}
void ChangeConnectionType(network::mojom::ConnectionType connection_type) {
discovery_network_monitor->OnConnectionChanged(connection_type);
}
base::test::ScopedTaskEnvironment scoped_task_environment;
MockDiscoveryObserver mock_observer;
......@@ -47,9 +51,6 @@ class DiscoveryNetworkMonitorTest : public testing::Test {
{DiscoveryNetworkInfo{std::string("wlp3s0"), std::string("wifi1")},
DiscoveryNetworkInfo{std::string("wlp3s1"), std::string("wifi2")}}};
std::unique_ptr<net::NetworkChangeNotifier> network_change_notifier =
base::WrapUnique(net::NetworkChangeNotifier::CreateMock());
static std::vector<DiscoveryNetworkInfo> fake_network_info;
std::unique_ptr<DiscoveryNetworkMonitor> discovery_network_monitor;
};
......@@ -70,8 +71,7 @@ TEST_F(DiscoveryNetworkMonitorTest, NetworkIdIsConsistent) {
EXPECT_CALL(mock_observer, OnNetworksChanged(_))
.WillOnce(Invoke(capture_network_id));
net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests(
net::NetworkChangeNotifier::CONNECTION_ETHERNET);
ChangeConnectionType(network::mojom::ConnectionType::CONNECTION_ETHERNET);
scoped_task_environment.RunUntilIdle();
std::string ethernet_network_id = current_network_id;
......@@ -80,16 +80,14 @@ TEST_F(DiscoveryNetworkMonitorTest, NetworkIdIsConsistent) {
EXPECT_CALL(mock_observer, OnNetworksChanged(_))
.WillOnce(Invoke(capture_network_id));
net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests(
net::NetworkChangeNotifier::CONNECTION_NONE);
ChangeConnectionType(network::mojom::ConnectionType::CONNECTION_NONE);
scoped_task_environment.RunUntilIdle();
fake_network_info = fake_wifi_info;
EXPECT_CALL(mock_observer, OnNetworksChanged(_))
.WillOnce(Invoke(capture_network_id));
net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests(
net::NetworkChangeNotifier::CONNECTION_WIFI);
ChangeConnectionType(network::mojom::ConnectionType::CONNECTION_WIFI);
scoped_task_environment.RunUntilIdle();
std::string wifi_network_id = current_network_id;
......@@ -97,8 +95,7 @@ TEST_F(DiscoveryNetworkMonitorTest, NetworkIdIsConsistent) {
EXPECT_CALL(mock_observer, OnNetworksChanged(_))
.WillOnce(Invoke(capture_network_id));
net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests(
net::NetworkChangeNotifier::CONNECTION_ETHERNET);
ChangeConnectionType(network::mojom::ConnectionType::CONNECTION_ETHERNET);
scoped_task_environment.RunUntilIdle();
EXPECT_EQ(ethernet_network_id, current_network_id);
......@@ -113,15 +110,13 @@ TEST_F(DiscoveryNetworkMonitorTest, RemoveObserverStopsNotifications) {
discovery_network_monitor->AddObserver(&mock_observer);
EXPECT_CALL(mock_observer, OnNetworksChanged(_));
net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests(
net::NetworkChangeNotifier::CONNECTION_ETHERNET);
ChangeConnectionType(network::mojom::ConnectionType::CONNECTION_ETHERNET);
scoped_task_environment.RunUntilIdle();
discovery_network_monitor->RemoveObserver(&mock_observer);
fake_network_info.clear();
net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests(
net::NetworkChangeNotifier::CONNECTION_NONE);
ChangeConnectionType(network::mojom::ConnectionType::CONNECTION_NONE);
scoped_task_environment.RunUntilIdle();
}
......@@ -184,8 +179,7 @@ TEST_F(DiscoveryNetworkMonitorTest, GetNetworkIdWithObserver) {
discovery_network_monitor->AddObserver(&mock_observer);
EXPECT_CALL(mock_observer, OnNetworksChanged(_));
net::NetworkChangeNotifier::NotifyObserversOfNetworkChangeForTests(
net::NetworkChangeNotifier::CONNECTION_ETHERNET);
ChangeConnectionType(network::mojom::ConnectionType::CONNECTION_ETHERNET);
scoped_task_environment.RunUntilIdle();
std::string current_network_id;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment