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() {
rule.resolver_type !=
net::RuleBasedHostResolverProc::Rule::kResolverTypeIPLiteral) ||
rule.address_family != net::AddressFamily::ADDRESS_FAMILY_UNSPECIFIED ||
!!rule.latency_ms || rule.replacement.empty())
!!rule.latency_ms)
continue;
network::mojom::RulePtr mojo_rule = network::mojom::Rule::New();
if (rule.resolver_type ==
net::RuleBasedHostResolverProc::Rule::kResolverTypeSystem) {
mojo_rule->resolver_type =
network::mojom::ResolverType::kResolverTypeSystem;
rule.replacement.empty()
? network::mojom::ResolverType::kResolverTypeDirectLookup
: network::mojom::ResolverType::kResolverTypeSystem;
} else {
mojo_rule->resolver_type =
network::mojom::ResolverType::kResolverTypeIPLiteral;
......
......@@ -90,18 +90,22 @@ class NetworkServiceTestHelper::NetworkServiceTestImpl
// network::mojom::NetworkServiceTest:
void AddRules(std::vector<network::mojom::RulePtr> rules,
AddRulesCallback callback) override {
auto* host_resolver = test_host_resolver_.host_resolver();
for (const auto& rule : rules) {
if (rule->resolver_type ==
network::mojom::ResolverType::kResolverTypeFail) {
test_host_resolver_.host_resolver()->AddSimulatedFailure(
rule->host_pattern);
} else if (rule->resolver_type ==
network::mojom::ResolverType::kResolverTypeIPLiteral) {
test_host_resolver_.host_resolver()->AddIPLiteralRule(
rule->host_pattern, rule->replacement, std::string());
} else {
test_host_resolver_.host_resolver()->AddRule(rule->host_pattern,
rule->replacement);
switch (rule->resolver_type) {
case network::mojom::ResolverType::kResolverTypeFail:
host_resolver->AddSimulatedFailure(rule->host_pattern);
break;
case network::mojom::ResolverType::kResolverTypeIPLiteral:
host_resolver->AddIPLiteralRule(rule->host_pattern, rule->replacement,
std::string());
break;
case network::mojom::ResolverType::kResolverTypeDirectLookup:
host_resolver->AllowDirectLookup(rule->host_pattern);
break;
default:
host_resolver->AddRule(rule->host_pattern, rule->replacement);
break;
}
}
std::move(callback).Run();
......
......@@ -14,6 +14,7 @@ enum ResolverType {
kResolverTypeFail,
kResolverTypeSystem,
kResolverTypeIPLiteral,
kResolverTypeDirectLookup,
};
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