PrefetchProxy Sends Decoy Requests when prefetch isn't eligible

This CL adds behavior to send decoy prefetch requests when a url is not
eligible because of some private user state. For example, if a user has
cookies on an origin and it isn't prefetched, Google could learn that
the user has cookies on that origin. Now, a "decoy" request will be sent
that looks identical to a normal prefetch, even when the user has
cookies for the site. These decoys will not be cached or used, just
silently discarded.

A variation param is also added to set a random ratio of decoy requests
that are sent, in hopes of reducing some of the unused data usage. By
default, decoy requests are always sent.

Bug: 1181441
Change-Id: I23ce731e1aaf433ccce0bb45209eaf9d46be2f81
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2718584
Commit-Queue: Robert Ogden <robertogden@chromium.org>
Reviewed-by: Ryan Sturm <ryansturm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#858834}
GitOrigin-RevId: 2bae35ff76592ed1dcaa14d8d5d03d9103a7f315
1 file changed
tree: b54e7322af9fed2bf5d3c88049311c76dfd266b3
  1. accessibility/
  2. android/
  3. binary_size/
  4. bisect_repackage/
  5. cfi/
  6. check_ecs_deps/
  7. checkbins/
  8. checklicenses/
  9. checkperms/
  10. checkteamtags/
  11. chrome_extensions/
  12. clang/
  13. code_coverage/
  14. compile_test/
  15. coverity/
  16. cr/
  17. cros/
  18. cygprofile/
  19. determinism/
  20. diagnosis/
  21. dromaeo_benchmark_runner/
  22. dump_process_memory/
  23. emacs/
  24. find_runtime_symbols/
  25. flags/
  26. flakiness/
  27. fuchsia/
  28. gdb/
  29. generate_library_loader/
  30. generate_shim_headers/
  31. generate_stubs/
  32. get_swarming_logs/
  33. git/
  34. gn/
  35. grit/
  36. gritsettings/
  37. idl_parser/
  38. imagediff/
  39. infra/
  40. ipc_fuzzer/
  41. json_comment_eater/
  42. json_schema_compiler/
  43. json_to_struct/
  44. linux/
  45. lldb/
  46. luci-go/
  47. mac/
  48. mb/
  49. md_browser/
  50. media_engagement_preload/
  51. memory/
  52. memory_inspector/
  53. metrics/
  54. msan/
  55. oopif/
  56. origin_trials/
  57. page_cycler/
  58. perf/
  59. polymer/
  60. privacy_budget/
  61. protoc_wrapper/
  62. python/
  63. real_world_impact/
  64. resources/
  65. resultdb/
  66. security/
  67. site_compare/
  68. stats_viewer/
  69. strict_enum_value_checker/
  70. style_variable_generator/
  71. sublime/
  72. symsrc/
  73. tcmalloc/
  74. tests/
  75. traceline/
  76. traffic_annotation/
  77. translation/
  78. ubsan/
  79. usb_gadget/
  80. v8_context_snapshot/
  81. valgrind/
  82. variations/
  83. vim/
  84. vscode/
  85. web_bluetooth/
  86. web_dev_style/
  87. win/
  88. .style.yapf
  89. auto-nav.py
  90. autotest.py
  91. bash-completion
  92. bisect-builds.py
  93. bisect_test.py
  94. boilerplate.py
  95. buildstate.bat
  96. buildstate.py
  97. check_git_config.py
  98. check_grd_for_unused_strings.py
  99. clang-format-js
  100. DEPS
  101. diagnose-me.py
  102. DIR_METADATA
  103. download_optimization_profile.py
  104. gypv8sh.py
  105. include_tracer.py
  106. ipc_messages_log.py
  107. licenses.py
  108. make-gtest-filter.py
  109. multi_process_rss.py
  110. nocompile_driver.py
  111. omahaproxy.py
  112. OWNERS
  113. perry.py
  114. remove_duplicate_includes.py
  115. remove_stale_pyc_files.py
  116. roll_webgl_conformance.py
  117. run-swarmed.py
  118. sort-headers.py
  119. sort_sources.py
  120. uberblame.py
  121. unused-symbols-report.py
  122. update_pgo_profiles.py
  123. yes_no.py