Commit d896b43d authored by Zach Stein's avatar Zach Stein Committed by Commit Bot

Enable MDNS in the network service based on the feature flag in content.

Bug: chromium:875740
Cq-Include-Trybots: luci.chromium.try:linux_mojo
Change-Id: Iec6efad4b3d92877288fd29450f11ac008b26d27
Reviewed-on: https://chromium-review.googlesource.com/c/1280551Reviewed-by: default avatarTom Sepez <tsepez@chromium.org>
Reviewed-by: default avatarSergey Ulanov <sergeyu@chromium.org>
Commit-Queue: Zach Stein <zstein@google.com>
Cr-Commit-Position: refs/heads/master@{#603160}
parent 0be054cb
...@@ -6,8 +6,10 @@ ...@@ -6,8 +6,10 @@
#include "base/bind.h" #include "base/bind.h"
#include "base/callback_helpers.h" #include "base/callback_helpers.h"
#include "base/feature_list.h"
#include "base/location.h" #include "base/location.h"
#include "base/threading/thread_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h"
#include "content/public/common/content_features.h"
#include "content/renderer/p2p/socket_dispatcher.h" #include "content/renderer/p2p/socket_dispatcher.h"
#include "jingle/glue/utils.h" #include "jingle/glue/utils.h"
...@@ -30,8 +32,11 @@ void P2PAsyncAddressResolver::Start(const rtc::SocketAddress& host_name, ...@@ -30,8 +32,11 @@ void P2PAsyncAddressResolver::Start(const rtc::SocketAddress& host_name,
state_ = STATE_SENT; state_ = STATE_SENT;
done_callback_ = done_callback; done_callback_ = done_callback;
bool enable_mdns =
base::FeatureList::IsEnabled(features::kWebRtcHideLocalIpsWithMdns);
dispatcher_->GetP2PSocketManager()->get()->GetHostAddress( dispatcher_->GetP2PSocketManager()->get()->GetHostAddress(
host_name.hostname(), base::BindOnce(&P2PAsyncAddressResolver::OnResponse, host_name.hostname(), enable_mdns,
base::BindOnce(&P2PAsyncAddressResolver::OnResponse,
base::Unretained(this))); base::Unretained(this)));
} }
......
...@@ -67,8 +67,8 @@ class P2PSocketManager::DnsRequest { ...@@ -67,8 +67,8 @@ class P2PSocketManager::DnsRequest {
public: public:
typedef base::Callback<void(const net::IPAddressList&)> DoneCallback; typedef base::Callback<void(const net::IPAddressList&)> DoneCallback;
explicit DnsRequest(net::HostResolver* host_resolver) DnsRequest(net::HostResolver* host_resolver, bool enable_mdns)
: resolver_(host_resolver) {} : resolver_(host_resolver), enable_mdns_(enable_mdns) {}
void Resolve(const std::string& host_name, void Resolve(const std::string& host_name,
const DoneCallback& done_callback) { const DoneCallback& done_callback) {
...@@ -90,9 +90,12 @@ class P2PSocketManager::DnsRequest { ...@@ -90,9 +90,12 @@ class P2PSocketManager::DnsRequest {
host_name_ += '.'; host_name_ += '.';
net::HostPortPair host(host_name_, 0); net::HostPortPair host(host_name_, 0);
if (enable_mdns_) {
// TODO(crbug.com/879746): Pass in a // TODO(crbug.com/879746): Pass in a
// net::HostResolver::ResolveHostParameters with source set to MDNS if we // net::HostResolver::ResolveHostParameters with source set to MDNS if we
// have a ".local." TLD (once MDNS is supported). // have a ".local." TLD and enable_mdns_ is set (once MDNS is supported).
}
request_ = request_ =
resolver_->CreateRequest(host, net::NetLogWithSource(), base::nullopt); resolver_->CreateRequest(host, net::NetLogWithSource(), base::nullopt);
int result = request_->Start(base::BindOnce( int result = request_->Start(base::BindOnce(
...@@ -124,6 +127,8 @@ class P2PSocketManager::DnsRequest { ...@@ -124,6 +127,8 @@ class P2PSocketManager::DnsRequest {
std::unique_ptr<net::HostResolver::ResolveHostRequest> request_; std::unique_ptr<net::HostResolver::ResolveHostRequest> request_;
DoneCallback done_callback_; DoneCallback done_callback_;
const bool enable_mdns_;
}; };
P2PSocketManager::P2PSocketManager( P2PSocketManager::P2PSocketManager(
...@@ -258,9 +263,10 @@ void P2PSocketManager::StartNetworkNotifications( ...@@ -258,9 +263,10 @@ void P2PSocketManager::StartNetworkNotifications(
void P2PSocketManager::GetHostAddress( void P2PSocketManager::GetHostAddress(
const std::string& host_name, const std::string& host_name,
bool enable_mdns,
mojom::P2PSocketManager::GetHostAddressCallback callback) { mojom::P2PSocketManager::GetHostAddressCallback callback) {
std::unique_ptr<DnsRequest> request = auto request = std::make_unique<DnsRequest>(
std::make_unique<DnsRequest>(url_request_context_->host_resolver()); url_request_context_->host_resolver(), enable_mdns);
DnsRequest* request_ptr = request.get(); DnsRequest* request_ptr = request.get();
dns_requests_.insert(std::move(request)); dns_requests_.insert(std::move(request));
request_ptr->Resolve( request_ptr->Resolve(
......
...@@ -86,6 +86,7 @@ class P2PSocketManager ...@@ -86,6 +86,7 @@ class P2PSocketManager
mojom::P2PNetworkNotificationClientPtr client) override; mojom::P2PNetworkNotificationClientPtr client) override;
void GetHostAddress( void GetHostAddress(
const std::string& host_name, const std::string& host_name,
bool enable_mdns,
mojom::P2PSocketManager::GetHostAddressCallback callback) override; mojom::P2PSocketManager::GetHostAddressCallback callback) override;
void CreateSocket(P2PSocketType type, void CreateSocket(P2PSocketType type,
const net::IPEndPoint& local_address, const net::IPEndPoint& local_address,
......
...@@ -40,7 +40,7 @@ interface P2PSocketManager { ...@@ -40,7 +40,7 @@ interface P2PSocketManager {
// Starts listening to network list changed events. // Starts listening to network list changed events.
StartNetworkNotifications(P2PNetworkNotificationClient client); StartNetworkNotifications(P2PNetworkNotificationClient client);
GetHostAddress(string host_name) GetHostAddress(string host_name, bool enable_mdns)
=> (array<net.interfaces.IPAddress> addresses); => (array<net.interfaces.IPAddress> addresses);
CreateSocket(P2PSocketType type, CreateSocket(P2PSocketType type,
......
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