Reland "Android: Support feedback with variations state"

This is a reland of commit 68ecb3024bdbd402c364c218333bc9e044e75962

What's changed in reland: added chromecast dependency.
See diff between ps1 and latest.
Initial failure:
https://ci.chromium.org/ui/p/chromium/builders/ci/android-cast-arm-rel/5691/overview
I ran mega CQ and believe I fixed all the builders.

Original change's description:
> Android: Support feedback with variations state
>
> When user file a feedback report, also attach Chrome variations state.
> This would be useful for Chrome developers to reproduce an issue that
> was caused by experiments.
>
> When 'Include system logs' is checked, and the experiment is on, user
> can see 'variations_state' tab in the 'System information' under
> 'View the information we collect'. And it will be uploaded if user
> send the feedback.
>
> On the backend, it will be saved as variations_state.gz, which is a
> gzipped, base64 encoded, encrypted variations state string. A tool at
> http://go/finch-listnr will be used to decrypt the data.
> This is different with desktop implementations where we upload a bin
> file. 2 reasons:
> 1 Any data go through the API will show up in 'System information'.
> So binary data will show as garbled text. Also see the internal cl
> crrev.com/i/7929308, the API addPsbdForSilentFeedback mimeType can
> only be (text/plain, text/html). That's why base64 is used.
> 2 All data is gzipped. We can not control this behavior.
>
> Creates a new static library for 'variations_associated_data' to avoid
> dependency cycle. There is a cycle that is hard to avoid:
> variations_associated_data_android.cc
> (//components/variations:variations) -> variations_command_line.h/cc
> variations_command_line.cc -> field_trial_util.h/cc
> field_trial_util.cc -> //components/variations:variations
> Unless we move all 3 files to //components/variations:variations, it's
> hard to avoid. So move variations_associated_data_android.cc to a new
> target.
>
> Design doc: http://go/finch-listnr-design.
> Related internal cl: http://crrev.com/i/7929308
>
> Test: Tested locally that the uploaded file can be decrypted with dev key.
> Bug: 373470046
> Low-Coverage-Reason: TRIVIAL_CHANGE simple interface definition
> Change-Id: Idb7d3553de65a249a8abe0b4978e07d20ea07e28
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6114490
> Reviewed-by: Richard (Torne) Coles <torne@chromium.org>
> Reviewed-by: Theresa Sullivan <twellington@chromium.org>
> Commit-Queue: Sven Zheng <svenzheng@chromium.org>
> Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#1406269}

Bug: 373470046
Low-Coverage-Reason: TRIVIAL_CHANGE simple interface definition
Change-Id: Iab762c9825e61d32d0f4ab177644db7c7389d4e8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6175182
Reviewed-by: Richard (Torne) Coles <torne@chromium.org>
Commit-Queue: Sean Topping <seantopping@chromium.org>
Reviewed-by: Alexei Svitkine <asvitkine@chromium.org>
Reviewed-by: Theresa Sullivan <twellington@chromium.org>
Auto-Submit: Sven Zheng <svenzheng@chromium.org>
Reviewed-by: Sean Topping <seantopping@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1408209}
13 files changed
tree: 81b371e7d77400c43ac1aa78756502efe138125a
  1. android_webview/
  2. apps/
  3. ash/
  4. base/
  5. build/
  6. build_overrides/
  7. buildtools/
  8. cc/
  9. chrome/
  10. chromecast/
  11. chromeos/
  12. codelabs/
  13. components/
  14. content/
  15. crypto/
  16. dbus/
  17. device/
  18. docs/
  19. extensions/
  20. fuchsia_web/
  21. gin/
  22. google_apis/
  23. gpu/
  24. headless/
  25. infra/
  26. ios/
  27. ipc/
  28. media/
  29. mojo/
  30. native_client_sdk/
  31. net/
  32. pdf/
  33. ppapi/
  34. printing/
  35. remoting/
  36. rlz/
  37. sandbox/
  38. services/
  39. skia/
  40. sql/
  41. storage/
  42. styleguide/
  43. testing/
  44. third_party/
  45. tools/
  46. ui/
  47. url/
  48. webkit/
  49. .clang-format
  50. .clang-tidy
  51. .clangd
  52. .git-blame-ignore-revs
  53. .gitallowed
  54. .gitattributes
  55. .gitignore
  56. .gitmodules
  57. .gn
  58. .mailmap
  59. .rustfmt.toml
  60. .vpython3
  61. .yapfignore
  62. ATL_OWNERS
  63. AUTHORS
  64. BUILD.gn
  65. CODE_OF_CONDUCT.md
  66. codereview.settings
  67. CPPLINT.cfg
  68. CRYPTO_OWNERS
  69. DEPS
  70. DIR_METADATA
  71. LICENSE
  72. LICENSE.chromium_os
  73. OWNERS
  74. PRESUBMIT.py
  75. PRESUBMIT_test.py
  76. PRESUBMIT_test_mocks.py
  77. README.md
  78. 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.