Commit 5807c24f authored by Miyoung Shin's avatar Miyoung Shin Committed by Commit Bot

Convert DnsConfigChangeManagerClient to new Mojo types

This CL converts DnsConfigChangeManagerClient{Ptr, Request} in
chrome and services to the new Mojo type, and uses
pending_remote<DnsConfigChangeManagerClient> in host_resolver.mojom.

Bug: 955171
Change-Id: If8038bf601d99eb11c6f62f250872919fa6338f8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1859655
Commit-Queue: Miyoung Shin <myid.shin@igalia.com>
Reviewed-by: default avatarAvi Drissman <avi@chromium.org>
Reviewed-by: default avatarKen Rockot <rockot@google.com>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#705871}
parent e0b63762
...@@ -222,21 +222,19 @@ void IntranetRedirectDetector::OnSystemDnsConfigChanged() { ...@@ -222,21 +222,19 @@ void IntranetRedirectDetector::OnSystemDnsConfigChanged() {
} }
void IntranetRedirectDetector::SetupDnsConfigClient() { void IntranetRedirectDetector::SetupDnsConfigClient() {
DCHECK(!dns_config_client_binding_.is_bound()); DCHECK(!dns_config_client_receiver_.is_bound());
network::mojom::DnsConfigChangeManagerClientPtr client_ptr;
dns_config_client_binding_.Bind(mojo::MakeRequest(&client_ptr));
dns_config_client_binding_.set_connection_error_handler(base::BindRepeating(
&IntranetRedirectDetector::OnDnsConfigClientConnectionError,
base::Unretained(this)));
network::mojom::DnsConfigChangeManagerPtr manager_ptr; network::mojom::DnsConfigChangeManagerPtr manager_ptr;
content::GetNetworkService()->GetDnsConfigChangeManager( content::GetNetworkService()->GetDnsConfigChangeManager(
mojo::MakeRequest(&manager_ptr)); mojo::MakeRequest(&manager_ptr));
manager_ptr->RequestNotifications(std::move(client_ptr)); manager_ptr->RequestNotifications(
dns_config_client_receiver_.BindNewPipeAndPassRemote());
dns_config_client_receiver_.set_disconnect_handler(base::BindRepeating(
&IntranetRedirectDetector::OnDnsConfigClientConnectionError,
base::Unretained(this)));
} }
void IntranetRedirectDetector::OnDnsConfigClientConnectionError() { void IntranetRedirectDetector::OnDnsConfigClientConnectionError() {
dns_config_client_binding_.Close(); dns_config_client_receiver_.reset();
SetupDnsConfigClient(); SetupDnsConfigClient();
} }
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h" #include "content/public/browser/notification_registrar.h"
#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/receiver.h"
#include "services/network/public/cpp/network_connection_tracker.h" #include "services/network/public/cpp/network_connection_tracker.h"
#include "services/network/public/mojom/host_resolver.mojom.h" #include "services/network/public/mojom/host_resolver.mojom.h"
#include "url/gurl.h" #include "url/gurl.h"
...@@ -90,8 +90,8 @@ class IntranetRedirectDetector ...@@ -90,8 +90,8 @@ class IntranetRedirectDetector
// period that begins at browser start, or the // period that begins at browser start, or the
// one-second "no fetching" period that begins after // one-second "no fetching" period that begins after
// network switches. // network switches.
mojo::Binding<network::mojom::DnsConfigChangeManagerClient> mojo::Receiver<network::mojom::DnsConfigChangeManagerClient>
dns_config_client_binding_{this}; dns_config_client_receiver_{this};
base::WeakPtrFactory<IntranetRedirectDetector> weak_ptr_factory_{this}; base::WeakPtrFactory<IntranetRedirectDetector> weak_ptr_factory_{this};
DISALLOW_COPY_AND_ASSIGN(IntranetRedirectDetector); DISALLOW_COPY_AND_ASSIGN(IntranetRedirectDetector);
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
#include "content/public/browser/browser_context.h" #include "content/public/browser/browser_context.h"
#include "content/public/browser/network_service_instance.h" #include "content/public/browser/network_service_instance.h"
#include "content/public/browser/storage_partition.h" #include "content/public/browser/storage_partition.h"
#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/receiver.h"
#include "net/base/ip_address.h" #include "net/base/ip_address.h"
#include "net/base/ip_endpoint.h" #include "net/base/ip_endpoint.h"
#include "net/dns/public/dns_protocol.h" #include "net/dns/public/dns_protocol.h"
...@@ -169,7 +169,7 @@ class DnsProbeServiceImpl ...@@ -169,7 +169,7 @@ class DnsProbeServiceImpl
NetworkContextGetter network_context_getter_; NetworkContextGetter network_context_getter_;
DnsConfigChangeManagerGetter dns_config_change_manager_getter_; DnsConfigChangeManagerGetter dns_config_change_manager_getter_;
mojo::Binding<network::mojom::DnsConfigChangeManagerClient> binding_; mojo::Receiver<network::mojom::DnsConfigChangeManagerClient> receiver_{this};
// DnsProbeRunners for the system DNS configuration and a public DNS server. // DnsProbeRunners for the system DNS configuration and a public DNS server.
DnsProbeRunner system_runner_; DnsProbeRunner system_runner_;
DnsProbeRunner public_runner_; DnsProbeRunner public_runner_;
...@@ -195,7 +195,6 @@ DnsProbeServiceImpl::DnsProbeServiceImpl( ...@@ -195,7 +195,6 @@ DnsProbeServiceImpl::DnsProbeServiceImpl(
: state_(STATE_NO_RESULT), : state_(STATE_NO_RESULT),
network_context_getter_(network_context_getter), network_context_getter_(network_context_getter),
dns_config_change_manager_getter_(dns_config_change_manager_getter), dns_config_change_manager_getter_(dns_config_change_manager_getter),
binding_(this),
system_runner_(SystemOverrides(), network_context_getter), system_runner_(SystemOverrides(), network_context_getter),
public_runner_(PublicOverrides(), network_context_getter), public_runner_(PublicOverrides(), network_context_getter),
tick_clock_(tick_clock) { tick_clock_(tick_clock) {
...@@ -315,13 +314,11 @@ bool DnsProbeServiceImpl::CachedResultIsExpired() const { ...@@ -315,13 +314,11 @@ bool DnsProbeServiceImpl::CachedResultIsExpired() const {
void DnsProbeServiceImpl::SetupDnsConfigChangeNotifications() { void DnsProbeServiceImpl::SetupDnsConfigChangeNotifications() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
network::mojom::DnsConfigChangeManagerClientPtr client_ptr; dns_config_change_manager_getter_.Run()->RequestNotifications(
binding_.Bind(mojo::MakeRequest(&client_ptr)); receiver_.BindNewPipeAndPassRemote());
binding_.set_connection_error_handler(base::BindRepeating( receiver_.set_disconnect_handler(base::BindRepeating(
&DnsProbeServiceImpl::OnDnsConfigChangeManagerConnectionError, &DnsProbeServiceImpl::OnDnsConfigChangeManagerConnectionError,
base::Unretained(this))); base::Unretained(this)));
dns_config_change_manager_getter_.Run()->RequestNotifications(
std::move(client_ptr));
} }
void DnsProbeServiceImpl::OnDnsConfigChangeManagerConnectionError() { void DnsProbeServiceImpl::OnDnsConfigChangeManagerConnectionError() {
...@@ -330,7 +327,7 @@ void DnsProbeServiceImpl::OnDnsConfigChangeManagerConnectionError() { ...@@ -330,7 +327,7 @@ void DnsProbeServiceImpl::OnDnsConfigChangeManagerConnectionError() {
// getting notifications. // getting notifications.
ClearCachedResult(); ClearCachedResult();
binding_.Close(); receiver_.reset();
SetupDnsConfigChangeNotifications(); SetupDnsConfigChangeNotifications();
} }
......
...@@ -126,9 +126,9 @@ FakeDnsConfigChangeManager::FakeDnsConfigChangeManager( ...@@ -126,9 +126,9 @@ FakeDnsConfigChangeManager::FakeDnsConfigChangeManager(
FakeDnsConfigChangeManager::~FakeDnsConfigChangeManager() = default; FakeDnsConfigChangeManager::~FakeDnsConfigChangeManager() = default;
void FakeDnsConfigChangeManager::RequestNotifications( void FakeDnsConfigChangeManager::RequestNotifications(
network::mojom::DnsConfigChangeManagerClientPtr client) { mojo::PendingRemote<network::mojom::DnsConfigChangeManagerClient> client) {
ASSERT_FALSE(client_); ASSERT_FALSE(client_);
client_ = std::move(client); client_.Bind(std::move(client));
} }
void FakeDnsConfigChangeManager::SimulateDnsConfigChange() { void FakeDnsConfigChangeManager::SimulateDnsConfigChange() {
......
...@@ -109,13 +109,14 @@ class FakeDnsConfigChangeManager ...@@ -109,13 +109,14 @@ class FakeDnsConfigChangeManager
// mojom::DnsConfigChangeManager implementation: // mojom::DnsConfigChangeManager implementation:
void RequestNotifications( void RequestNotifications(
network::mojom::DnsConfigChangeManagerClientPtr client) override; mojo::PendingRemote<network::mojom::DnsConfigChangeManagerClient> client)
override;
void SimulateDnsConfigChange(); void SimulateDnsConfigChange();
private: private:
mojo::Binding<network::mojom::DnsConfigChangeManager> binding_; mojo::Binding<network::mojom::DnsConfigChangeManager> binding_;
network::mojom::DnsConfigChangeManagerClientPtr client_; mojo::Remote<network::mojom::DnsConfigChangeManagerClient> client_;
}; };
} // namespace chrome_browser_net } // namespace chrome_browser_net
......
...@@ -22,14 +22,13 @@ void DnsConfigChangeManager::AddReceiver( ...@@ -22,14 +22,13 @@ void DnsConfigChangeManager::AddReceiver(
} }
void DnsConfigChangeManager::RequestNotifications( void DnsConfigChangeManager::RequestNotifications(
mojom::DnsConfigChangeManagerClientPtr client) { mojo::PendingRemote<mojom::DnsConfigChangeManagerClient> client) {
clients_.AddPtr(std::move(client)); clients_.Add(std::move(client));
} }
void DnsConfigChangeManager::OnDNSChanged() { void DnsConfigChangeManager::OnDNSChanged() {
clients_.ForAllPtrs([](mojom::DnsConfigChangeManagerClient* client) { for (const auto& client : clients_)
client->OnSystemDnsConfigChanged(); client->OnSystemDnsConfigChanged();
});
} }
void DnsConfigChangeManager::OnInitialDNSConfigRead() { void DnsConfigChangeManager::OnInitialDNSConfigRead() {
......
...@@ -10,8 +10,9 @@ ...@@ -10,8 +10,9 @@
#include "base/component_export.h" #include "base/component_export.h"
#include "base/macros.h" #include "base/macros.h"
#include "mojo/public/cpp/bindings/interface_ptr_set.h" #include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver_set.h" #include "mojo/public/cpp/bindings/receiver_set.h"
#include "mojo/public/cpp/bindings/remote_set.h"
#include "net/base/network_change_notifier.h" #include "net/base/network_change_notifier.h"
#include "services/network/public/mojom/host_resolver.mojom.h" #include "services/network/public/mojom/host_resolver.mojom.h"
...@@ -29,7 +30,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) DnsConfigChangeManager ...@@ -29,7 +30,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) DnsConfigChangeManager
// mojom::DnsConfigChangeManager implementation: // mojom::DnsConfigChangeManager implementation:
void RequestNotifications( void RequestNotifications(
mojom::DnsConfigChangeManagerClientPtr client) override; mojo::PendingRemote<mojom::DnsConfigChangeManagerClient> client) override;
private: private:
// net::NetworkChangeNotifier::DNSObserver implementation: // net::NetworkChangeNotifier::DNSObserver implementation:
...@@ -37,7 +38,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) DnsConfigChangeManager ...@@ -37,7 +38,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) DnsConfigChangeManager
void OnInitialDNSConfigRead() override; void OnInitialDNSConfigRead() override;
mojo::ReceiverSet<mojom::DnsConfigChangeManager> receivers_; mojo::ReceiverSet<mojom::DnsConfigChangeManager> receivers_;
mojo::InterfacePtrSet<mojom::DnsConfigChangeManagerClient> clients_; mojo::RemoteSet<mojom::DnsConfigChangeManagerClient> clients_;
DISALLOW_COPY_AND_ASSIGN(DnsConfigChangeManager); DISALLOW_COPY_AND_ASSIGN(DnsConfigChangeManager);
}; };
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#include "base/run_loop.h" #include "base/run_loop.h"
#include "base/test/task_environment.h" #include "base/test/task_environment.h"
#include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/bindings/receiver.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
namespace network { namespace network {
...@@ -21,13 +21,7 @@ class TestDnsConfigChangeManagerClient ...@@ -21,13 +21,7 @@ class TestDnsConfigChangeManagerClient
explicit TestDnsConfigChangeManagerClient(DnsConfigChangeManager* manager) { explicit TestDnsConfigChangeManagerClient(DnsConfigChangeManager* manager) {
mojo::Remote<mojom::DnsConfigChangeManager> manager_remote; mojo::Remote<mojom::DnsConfigChangeManager> manager_remote;
manager->AddReceiver(manager_remote.BindNewPipeAndPassReceiver()); manager->AddReceiver(manager_remote.BindNewPipeAndPassReceiver());
manager_remote->RequestNotifications(receiver_.BindNewPipeAndPassRemote());
mojom::DnsConfigChangeManagerClientPtr client_ptr;
mojom::DnsConfigChangeManagerClientRequest client_request(
mojo::MakeRequest(&client_ptr));
binding_.Bind(std::move(client_request));
manager_remote->RequestNotifications(std::move(client_ptr));
} }
void OnSystemDnsConfigChanged() override { void OnSystemDnsConfigChanged() override {
...@@ -48,7 +42,7 @@ class TestDnsConfigChangeManagerClient ...@@ -48,7 +42,7 @@ class TestDnsConfigChangeManagerClient
int num_notifications_ = 0; int num_notifications_ = 0;
int num_notifications_expected_ = INT_MAX; int num_notifications_expected_ = INT_MAX;
base::RunLoop run_loop_; base::RunLoop run_loop_;
mojo::Binding<mojom::DnsConfigChangeManagerClient> binding_{this}; mojo::Receiver<mojom::DnsConfigChangeManagerClient> receiver_{this};
DISALLOW_COPY_AND_ASSIGN(TestDnsConfigChangeManagerClient); DISALLOW_COPY_AND_ASSIGN(TestDnsConfigChangeManagerClient);
}; };
......
...@@ -301,5 +301,5 @@ interface DnsConfigChangeManagerClient { ...@@ -301,5 +301,5 @@ interface DnsConfigChangeManagerClient {
// An interface that broadcasts DNS config change events. // An interface that broadcasts DNS config change events.
interface DnsConfigChangeManager { interface DnsConfigChangeManager {
// Requests to receive notification when there is a DNS config change. // Requests to receive notification when there is a DNS config change.
RequestNotifications(DnsConfigChangeManagerClient client_ptr); RequestNotifications(pending_remote<DnsConfigChangeManagerClient> client);
}; };
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