Implement a getter returning whether the user has trust tokens

This CL adds a new method to Document, hasTrustToken(<issuer>),
returning whether the user has any trust tokens
(https://github.com/wicg/trust-token-api) for the token issuer origin
given by |issuer|. This works by querying a new Mojo interface provided
by the network context via BrowserInterfaceBinders.

More specifically, the method first checks if it can associate the
calling top-level context (in the sense of
TrustTokenStore::SetAssociation) with |issuer| and, if not, fails. For
this reason, the Mojo handle is bound by trusted code to the document's
top-level context.

New code:
- //content, NetworkContext: boilerplate to bind the Mojo interface
- blink::Document: add a new mojo remote and bind it; pack API calls
into mojom::HasTrustTokenAnswerer requests and unpack responses
- Blink scheduling: boilerplate to add a new TaskType (necessary in
order to use HeapMojoRemote)

correctly; WPTs exercise the interface end to end.

Test: unit tests check that the logic in the network service behaves
Bug: 1061116
Change-Id: I0f7835cac15b5af3582bb560e116511c601f3b36
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2103082
Commit-Queue: David Van Cleve <davidvc@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Matt Falkenhagen <falken@chromium.org>
Reviewed-by: Charlie Harrison <csharrison@chromium.org>
Cr-Commit-Position: refs/heads/master@{#757487}
25 files changed
tree: d0602f9cb8387ecfeb23da941f059ca52791d320
  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. cloud_print/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. jingle/
  31. media/
  32. mojo/
  33. native_client_sdk/
  34. net/
  35. pdf/
  36. ppapi/
  37. printing/
  38. remoting/
  39. rlz/
  40. sandbox/
  41. services/
  42. skia/
  43. sql/
  44. storage/
  45. styleguide/
  46. testing/
  47. third_party/
  48. tools/
  49. ui/
  50. url/
  51. weblayer/
  52. .clang-format
  53. .clang-tidy
  54. .eslintrc.js
  55. .git-blame-ignore-revs
  56. .gitattributes
  57. .gitignore
  58. .gn
  59. .vpython
  60. .vpython3
  61. .yapfignore
  62. AUTHORS
  63. BUILD.gn
  64. CODE_OF_CONDUCT.md
  65. codereview.settings
  66. DEPS
  67. ENG_REVIEW_OWNERS
  68. LICENSE
  69. LICENSE.chromium_os
  70. OWNERS
  71. PRESUBMIT.py
  72. PRESUBMIT_test.py
  73. PRESUBMIT_test_mocks.py
  74. README.md
  75. 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.

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.