Commit 46fb1d10 authored by Tomasz Moniuszko's avatar Tomasz Moniuszko Committed by Commit Bot

Add support for direct lookup resolver in NetworkServiceTest

While content::TestHostResolver simulates failure for non-local DNS
queries, some tests explicitly allow external DNS lookup using
net::RuleBasedHostResolverProc::AllowDirectLookup().

With kNetworkService feature enabled, appropriate host resolver rule
must be propagated to network process.

Change-Id: Icc6eb96a8ea346d408d04d23feb363789a1c5c97
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1533954Reviewed-by: default avatarJohn Abd-El-Malek <jam@chromium.org>
Reviewed-by: default avatarGreg Kerr <kerrnel@chromium.org>
Commit-Queue: Tomasz Moniuszko <tmoniuszko@opera.com>
Cr-Commit-Position: refs/heads/master@{#644706}
parent d3647303
...@@ -536,13 +536,15 @@ void BrowserTestBase::InitializeNetworkProcess() { ...@@ -536,13 +536,15 @@ void BrowserTestBase::InitializeNetworkProcess() {
rule.resolver_type != rule.resolver_type !=
net::RuleBasedHostResolverProc::Rule::kResolverTypeIPLiteral) || net::RuleBasedHostResolverProc::Rule::kResolverTypeIPLiteral) ||
rule.address_family != net::AddressFamily::ADDRESS_FAMILY_UNSPECIFIED || rule.address_family != net::AddressFamily::ADDRESS_FAMILY_UNSPECIFIED ||
!!rule.latency_ms || rule.replacement.empty()) !!rule.latency_ms)
continue; continue;
network::mojom::RulePtr mojo_rule = network::mojom::Rule::New(); network::mojom::RulePtr mojo_rule = network::mojom::Rule::New();
if (rule.resolver_type == if (rule.resolver_type ==
net::RuleBasedHostResolverProc::Rule::kResolverTypeSystem) { net::RuleBasedHostResolverProc::Rule::kResolverTypeSystem) {
mojo_rule->resolver_type = mojo_rule->resolver_type =
network::mojom::ResolverType::kResolverTypeSystem; rule.replacement.empty()
? network::mojom::ResolverType::kResolverTypeDirectLookup
: network::mojom::ResolverType::kResolverTypeSystem;
} else { } else {
mojo_rule->resolver_type = mojo_rule->resolver_type =
network::mojom::ResolverType::kResolverTypeIPLiteral; network::mojom::ResolverType::kResolverTypeIPLiteral;
......
...@@ -90,18 +90,22 @@ class NetworkServiceTestHelper::NetworkServiceTestImpl ...@@ -90,18 +90,22 @@ class NetworkServiceTestHelper::NetworkServiceTestImpl
// network::mojom::NetworkServiceTest: // network::mojom::NetworkServiceTest:
void AddRules(std::vector<network::mojom::RulePtr> rules, void AddRules(std::vector<network::mojom::RulePtr> rules,
AddRulesCallback callback) override { AddRulesCallback callback) override {
auto* host_resolver = test_host_resolver_.host_resolver();
for (const auto& rule : rules) { for (const auto& rule : rules) {
if (rule->resolver_type == switch (rule->resolver_type) {
network::mojom::ResolverType::kResolverTypeFail) { case network::mojom::ResolverType::kResolverTypeFail:
test_host_resolver_.host_resolver()->AddSimulatedFailure( host_resolver->AddSimulatedFailure(rule->host_pattern);
rule->host_pattern); break;
} else if (rule->resolver_type == case network::mojom::ResolverType::kResolverTypeIPLiteral:
network::mojom::ResolverType::kResolverTypeIPLiteral) { host_resolver->AddIPLiteralRule(rule->host_pattern, rule->replacement,
test_host_resolver_.host_resolver()->AddIPLiteralRule( std::string());
rule->host_pattern, rule->replacement, std::string()); break;
} else { case network::mojom::ResolverType::kResolverTypeDirectLookup:
test_host_resolver_.host_resolver()->AddRule(rule->host_pattern, host_resolver->AllowDirectLookup(rule->host_pattern);
rule->replacement); break;
default:
host_resolver->AddRule(rule->host_pattern, rule->replacement);
break;
} }
} }
std::move(callback).Run(); std::move(callback).Run();
......
...@@ -14,6 +14,7 @@ enum ResolverType { ...@@ -14,6 +14,7 @@ enum ResolverType {
kResolverTypeFail, kResolverTypeFail,
kResolverTypeSystem, kResolverTypeSystem,
kResolverTypeIPLiteral, kResolverTypeIPLiteral,
kResolverTypeDirectLookup,
}; };
struct Rule { struct Rule {
......
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