[QUIC] AsyncDnsJob: Start connecting on partial DNS results Make AsyncDnsJob act on each partial ServiceEndpointRequest update once the endpoints are crypto ready. An actionable update runs the same sequence as the final result. The job first tries IP pooling and then feeds the connector when a usable endpoint exists. An update with nothing usable keeps the job waiting. The resolver produces partial updates only when its Job creates a DnsTaskResultsManager, which was gated on kEnableIntermediateDnsResults or Happy Eyeballs v3. kAsyncDnsQuicJob joins that gate. Without it the job would receive nothing until the final result. The one-shot host resolution signal now fires when the job stops being exclusively blocked on DNS. That moment is when an attempt starts or when the job settles from DNS without an attempt. The DNS end time is stamped once at that moment and is not moved when the resolver finishes later. Once an attempt started, later updates and the final resolver result are ignored. A single in-flight attempt cannot use them, and the attempt outcome decides the job. In particular a late resolver error no longer fails the job. Priority updates keep reaching the resolver while its request is in flight, which is now tracked separately from the one-shot signal. Completing the job synchronously from inside OnServiceEndpointsUpdated destroys the in-flight resolver request within its own delegate callback. The resolver implementation supports this. It dispatches updates to each request through posted tasks with weak pointers and invokes the delegate as its last statement, and HttpStreamPool already resets its request from inside the same callback. IP pooling runs on every crypto-ready update. To keep the FindMatchingIpSessionResult metric comparable with DirectJob, which checks pooling once, HasMatchingIpSessionForServiceEndpoint takes a log_negative_result parameter and the job records misses only for the first endpoints it actually checks. Existing callers keep recording misses. Tests drive staged partial updates with FakeServiceEndpointResolver. Bug: 531975349 Change-Id: Iae544c44131d444689d168ef81309006fe8f09c2 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8182010 Reviewed-by: Nidhi Jaju <nidhijaju@chromium.org> Commit-Queue: Kenichi Ishibashi <bashi@chromium.org> Cr-Commit-Position: refs/heads/main@{#1675624} NOKEYCHECK=True GitOrigin-RevId: e693ee4243e1e3b28b474ee0ee1069d478ac2b48
This directory contains the code behind Chrome's networking stack. It is documented here.