Move field trial from BasicNetworkManager to NetworkManagerBase

Bug: webrtc:14306
Change-Id: I9bba38090a77a40f599eaa680da3cf60810b0337
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/283801
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Diep Bui <diepbp@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38674}
This commit is contained in:
Diep Bui
2022-11-17 21:25:49 +00:00
committed by WebRTC LUCI CQ
parent 7404f07ad9
commit 3d9b5590c2
2 changed files with 37 additions and 19 deletions

View File

@ -316,12 +316,22 @@ NetworkManagerBase::enumeration_permission() const {
return enumeration_permission_;
}
std::unique_ptr<Network> NetworkManagerBase::CreateNetwork(
absl::string_view name,
absl::string_view description,
const IPAddress& prefix,
int prefix_length,
AdapterType type) const {
return std::make_unique<Network>(name, description, prefix, prefix_length,
type, field_trials_.get());
}
std::vector<const Network*> NetworkManagerBase::GetAnyAddressNetworks() {
std::vector<const Network*> networks;
if (!ipv4_any_address_network_) {
const rtc::IPAddress ipv4_any_address(INADDR_ANY);
ipv4_any_address_network_ = std::make_unique<Network>(
"any", "any", ipv4_any_address, 0, ADAPTER_TYPE_ANY, field_trials_);
ipv4_any_address_network_ =
CreateNetwork("any", "any", ipv4_any_address, 0, ADAPTER_TYPE_ANY);
ipv4_any_address_network_->set_default_local_address_provider(this);
ipv4_any_address_network_->set_mdns_responder_provider(this);
ipv4_any_address_network_->AddIP(ipv4_any_address);
@ -330,8 +340,8 @@ std::vector<const Network*> NetworkManagerBase::GetAnyAddressNetworks() {
if (!ipv6_any_address_network_) {
const rtc::IPAddress ipv6_any_address(in6addr_any);
ipv6_any_address_network_ = std::make_unique<Network>(
"any", "any", ipv6_any_address, 0, ADAPTER_TYPE_ANY, field_trials_);
ipv6_any_address_network_ =
CreateNetwork("any", "any", ipv6_any_address, 0, ADAPTER_TYPE_ANY);
ipv6_any_address_network_->set_default_local_address_provider(this);
ipv6_any_address_network_->set_mdns_responder_provider(this);
ipv6_any_address_network_->AddIP(ipv6_any_address);
@ -531,14 +541,14 @@ bool NetworkManagerBase::IsVpnMacAddress(
BasicNetworkManager::BasicNetworkManager(
NetworkMonitorFactory* network_monitor_factory,
SocketFactory* socket_factory,
const webrtc::FieldTrialsView* field_trials)
: field_trials_(field_trials),
const webrtc::FieldTrialsView* field_trials_view)
: NetworkManagerBase(field_trials_view),
network_monitor_factory_(network_monitor_factory),
socket_factory_(socket_factory),
allow_mac_based_ipv6_(
field_trials_->IsEnabled("WebRTC-AllowMACBasedIPv6")),
field_trials()->IsEnabled("WebRTC-AllowMACBasedIPv6")),
bind_using_ifname_(
!field_trials_->IsDisabled("WebRTC-BindUsingInterfaceName")) {
!field_trials()->IsDisabled("WebRTC-BindUsingInterfaceName")) {
RTC_DCHECK(socket_factory_);
}
@ -668,9 +678,8 @@ void BasicNetworkManager::ConvertIfAddrs(
if_info.adapter_type = ADAPTER_TYPE_VPN;
}
auto network = std::make_unique<Network>(
cursor->ifa_name, cursor->ifa_name, prefix, prefix_length,
if_info.adapter_type, field_trials_.get());
auto network = CreateNetwork(cursor->ifa_name, cursor->ifa_name, prefix,
prefix_length, if_info.adapter_type);
network->set_default_local_address_provider(this);
network->set_scope_id(scope_id);
network->AddIP(ip);
@ -859,8 +868,8 @@ bool BasicNetworkManager::CreateNetworks(
adapter_type = ADAPTER_TYPE_VPN;
}
auto network = std::make_unique<Network>(name, description, prefix,
prefix_length, adapter_type);
auto network = CreateNetwork(name, description, prefix, prefix_length,
adapter_type);
network->set_underlying_type_for_vpn(underlying_type_for_vpn);
network->set_default_local_address_provider(this);
network->set_mdns_responder_provider(this);
@ -965,7 +974,7 @@ void BasicNetworkManager::StartNetworkMonitor() {
}
if (!network_monitor_) {
network_monitor_.reset(
network_monitor_factory_->CreateNetworkMonitor(*field_trials_));
network_monitor_factory_->CreateNetworkMonitor(*field_trials()));
if (!network_monitor_) {
return;
}

View File

@ -231,9 +231,21 @@ class RTC_EXPORT NetworkManagerBase : public NetworkManager {
// refactoring of the interface GetNetworks method.
const std::vector<Network*>& GetNetworksInternal() const { return networks_; }
std::unique_ptr<Network> CreateNetwork(absl::string_view name,
absl::string_view description,
const IPAddress& prefix,
int prefix_length,
AdapterType type) const;
const webrtc::FieldTrialsView* field_trials() const {
return field_trials_.get();
}
private:
friend class NetworkTest;
const webrtc::FieldTrialsView* field_trials_ = nullptr;
webrtc::AlwaysValidPointer<const webrtc::FieldTrialsView,
webrtc::FieldTrialBasedConfig>
field_trials_;
EnumerationPermission enumeration_permission_;
std::vector<Network*> networks_;
@ -348,10 +360,7 @@ class RTC_EXPORT BasicNetworkManager : public NetworkManagerBase,
Thread* thread_ = nullptr;
bool sent_first_update_ = true;
int start_count_ = 0;
// Chromium create BasicNetworkManager() w/o field trials.
webrtc::AlwaysValidPointer<const webrtc::FieldTrialsView,
webrtc::FieldTrialBasedConfig>
field_trials_;
std::vector<std::string> network_ignore_list_;
NetworkMonitorFactory* const network_monitor_factory_;
SocketFactory* const socket_factory_;