Reland "Cleanup SetDnsClient() for per-context resolvers"

Original commit 6d837ba33ac11ec353343627b9118c92b40bcb31.
Original review crrev.com/c/1582424.

Patchset 1 is clean rollback of the rollback.

This time, the new HostResolver::ManagerOptions::dns_client_enabled
functionality is actually implemented. Because testing required
injecting mock DnsClient at construction (where the option field is
used), added a DnsClientFactory optional testing parameter to the
constructor.

Reworked the unittests to use ManagerOptions::dns_client_enabled for
most Dns tests. Also added a test for enabling via SetDnsClientEnabled
now that the factory makes doing so more reasonable in tests.

[email protected]

Bug: 934402
Change-Id: Ic337892a8ec765bd6a6fdd26177db44eead0c786
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1595297
Commit-Queue: Eric Orth <[email protected]>
Reviewed-by: Matt Menke <[email protected]>
Cr-Commit-Position: refs/heads/master@{#657465}
diff --git a/net/quic/quic_stream_factory_fuzzer.cc b/net/quic/quic_stream_factory_fuzzer.cc
index b200e1a5..60d828b 100644
--- a/net/quic/quic_stream_factory_fuzzer.cc
+++ b/net/quic/quic_stream_factory_fuzzer.cc
@@ -12,7 +12,8 @@
 #include "net/cert/do_nothing_ct_verifier.h"
 #include "net/cert/mock_cert_verifier.h"
 #include "net/cert/x509_certificate.h"
-#include "net/dns/fuzzed_context_host_resolver.h"
+#include "net/dns/context_host_resolver.h"
+#include "net/dns/fuzzed_host_resolver_util.h"
 #include "net/http/http_server_properties_impl.h"
 #include "net/http/transport_security_state.h"
 #include "net/quic/mock_crypto_client_stream_factory.h"
@@ -83,9 +84,10 @@
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   base::FuzzedDataProvider data_provider(data, size);
 
-  FuzzedContextHostResolver host_resolver(HostResolver::ManagerOptions(),
-                                          nullptr, &data_provider,
-                                          true /* enable_caching */);
+  std::unique_ptr<ContextHostResolver> host_resolver =
+      CreateFuzzedContextHostResolver(HostResolver::ManagerOptions(), nullptr,
+                                      &data_provider,
+                                      true /* enable_caching */);
   FuzzedSocketFactory socket_factory(&data_provider);
 
   // Initialize this on each loop since some options mutate this.
@@ -128,8 +130,9 @@
 
   std::unique_ptr<QuicStreamFactory> factory =
       std::make_unique<QuicStreamFactory>(
-          env->net_log.net_log(), &host_resolver, env->ssl_config_service.get(),
-          &socket_factory, &http_server_properties, env->cert_verifier.get(),
+          env->net_log.net_log(), host_resolver.get(),
+          env->ssl_config_service.get(), &socket_factory,
+          &http_server_properties, env->cert_verifier.get(),
           &env->ct_policy_enforcer, &env->transport_security_state,
           env->cert_transparency_verifier.get(), nullptr,
           &env->crypto_client_stream_factory, &env->random_generator,