feat: add app.configureHostResolver (#30576)
This commit is contained in:
parent
3b2db5f168
commit
dd7aeda6fb
6 changed files with 292 additions and 7 deletions
|
@ -7,11 +7,14 @@
|
|||
#include <memory>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include "base/command_line.h"
|
||||
#include "base/path_service.h"
|
||||
#include "base/strings/string_split.h"
|
||||
#include "chrome/browser/browser_process.h"
|
||||
#include "chrome/browser/net/chrome_mojo_proxy_resolver_factory.h"
|
||||
#include "chrome/common/chrome_features.h"
|
||||
#include "chrome/common/chrome_paths.h"
|
||||
#include "chrome/common/chrome_switches.h"
|
||||
#include "components/os_crypt/os_crypt.h"
|
||||
|
@ -21,6 +24,7 @@
|
|||
#include "content/public/common/network_service_util.h"
|
||||
#include "electron/fuses.h"
|
||||
#include "mojo/public/cpp/bindings/pending_receiver.h"
|
||||
#include "net/dns/public/util.h"
|
||||
#include "net/net_buildflags.h"
|
||||
#include "services/cert_verifier/public/mojom/cert_verifier_service_factory.mojom.h"
|
||||
#include "services/network/network_service.h"
|
||||
|
@ -234,6 +238,52 @@ void SystemNetworkContextManager::OnNetworkServiceCreated(
|
|||
network_context_.BindNewPipeAndPassReceiver(),
|
||||
CreateNetworkContextParams());
|
||||
|
||||
net::SecureDnsMode default_secure_dns_mode = net::SecureDnsMode::kOff;
|
||||
std::string default_doh_templates;
|
||||
if (base::FeatureList::IsEnabled(features::kDnsOverHttps)) {
|
||||
if (features::kDnsOverHttpsFallbackParam.Get()) {
|
||||
default_secure_dns_mode = net::SecureDnsMode::kAutomatic;
|
||||
} else {
|
||||
default_secure_dns_mode = net::SecureDnsMode::kSecure;
|
||||
}
|
||||
default_doh_templates = features::kDnsOverHttpsTemplatesParam.Get();
|
||||
}
|
||||
std::string server_method;
|
||||
absl::optional<std::vector<network::mojom::DnsOverHttpsServerPtr>>
|
||||
servers_mojo;
|
||||
if (!default_doh_templates.empty() &&
|
||||
default_secure_dns_mode != net::SecureDnsMode::kOff) {
|
||||
for (base::StringPiece server_template :
|
||||
SplitStringPiece(default_doh_templates, " ", base::TRIM_WHITESPACE,
|
||||
base::SPLIT_WANT_NONEMPTY)) {
|
||||
if (!net::dns_util::IsValidDohTemplate(server_template, &server_method)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
bool use_post = server_method == "POST";
|
||||
|
||||
if (!servers_mojo.has_value()) {
|
||||
servers_mojo = absl::make_optional<
|
||||
std::vector<network::mojom::DnsOverHttpsServerPtr>>();
|
||||
}
|
||||
|
||||
network::mojom::DnsOverHttpsServerPtr server_mojo =
|
||||
network::mojom::DnsOverHttpsServer::New();
|
||||
server_mojo->server_template = std::string(server_template);
|
||||
server_mojo->use_post = use_post;
|
||||
servers_mojo->emplace_back(std::move(server_mojo));
|
||||
}
|
||||
}
|
||||
|
||||
bool additional_dns_query_types_enabled = true;
|
||||
|
||||
// Configure the stub resolver. This must be done after the system
|
||||
// NetworkContext is created, but before anything has the chance to use it.
|
||||
content::GetNetworkService()->ConfigureStubHostResolver(
|
||||
base::FeatureList::IsEnabled(features::kAsyncDns),
|
||||
default_secure_dns_mode, std::move(servers_mojo),
|
||||
additional_dns_query_types_enabled);
|
||||
|
||||
std::string app_name = electron::Browser::Get()->GetName();
|
||||
#if defined(OS_MAC)
|
||||
KeychainPassword::GetServiceName() = app_name + " Safe Storage";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue