Add HostResolverInternalResult conversion for system resolver results

Implemented by factoring out the existing HostResolverSystemTask logic
for conversion for writing to HostResolverCache into a conversion
utility function.

And while touching that logic, fixed it up to better handle the case
where the task is only querying a single address family. Previously the
logic always converted to both A and AAAA results, no matter what was
actually queried, which works out fine as long the task either always
resolves both at the same time, or you consistently resolve just one or
the other. If A and AAAA are both resolved separately by separate tasks,
as may be the case once the Host cache rewrite is complete or maybe even
sooner as part of HEv3 work, could result in conflicting cache entries.
Now the logic will convert to (and cache) results only for the queried
types.

Ideally, we'd just entirely convert HostResolverSystemTask to deal
directly with and return HostResolverInternalResults instead of
AddressList, assisting with the removal of more of the technical debt
that AddressList has become, but too much stuff directly interacts with
HostResolverSystemTask and expects AddressList results.

Change-Id: Ie6a0b76ae916184376f4bc8fb8a0540deb705b08
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6770812
Reviewed-by: Kenichi Ishibashi <bashi@chromium.org>
Commit-Queue: Eric Orth <ericorth@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1498505}
4 files changed
tree: 2bd7ed9ae2b14435121673b367a539e5cfc00130
  1. .gemini/
  2. .github/
  3. agents/
  4. android_webview/
  5. apps/
  6. ash/
  7. base/
  8. build/
  9. build_overrides/
  10. buildtools/
  11. cc/
  12. chrome/
  13. chromecast/
  14. chromeos/
  15. codelabs/
  16. components/
  17. content/
  18. crypto/
  19. dbus/
  20. device/
  21. docs/
  22. extensions/
  23. fuchsia_web/
  24. gin/
  25. google_apis/
  26. gpu/
  27. headless/
  28. infra/
  29. ios/
  30. ipc/
  31. media/
  32. mojo/
  33. net/
  34. pdf/
  35. printing/
  36. remoting/
  37. rlz/
  38. sandbox/
  39. services/
  40. skia/
  41. sql/
  42. storage/
  43. styleguide/
  44. testing/
  45. third_party/
  46. tools/
  47. ui/
  48. url/
  49. webkit/
  50. .clang-format
  51. .clang-tidy
  52. .clangd
  53. .cursorignore
  54. .geminiignore
  55. .git-blame-ignore-revs
  56. .gitallowed
  57. .gitattributes
  58. .gitignore
  59. .gitmodules
  60. .gn
  61. .mailmap
  62. .rustfmt.toml
  63. .vpython3
  64. .yapfignore
  65. ATL_OWNERS
  66. AUTHORS
  67. BUILD.gn
  68. CODE_OF_CONDUCT.md
  69. codereview.settings
  70. CPPLINT.cfg
  71. CRYPTO_OWNERS
  72. DEPS
  73. DIR_METADATA
  74. LICENSE
  75. LICENSE.chromium_os
  76. OWNERS
  77. PRESUBMIT.py
  78. PRESUBMIT_test.py
  79. PRESUBMIT_test_mocks.py
  80. README.md
  81. SECURITY_OWNERS
  82. WATCHLISTS
README.md

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.

The project's web site is https://www.chromium.org.

To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.

Documentation in the source is rooted in docs/README.md.

Learn how to Get Around the Chromium Source Code Directory Structure.

For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.

If you found a bug, please file it at https://crbug.com/new.