[iOS] Establish GLIC Flow For FRE/PageActionMenu GLIC Button

GLICCoordinator starts from one of two entry points: 1) The promo
manager triggers the GLIC Promo 2) The PageActionMenu GLIC Button entry
point

This CL creates the following behavior, if we enter from:
- entry point 1, the promo view is shown.
- entry point 2, the consent view is shown if a user hasn't granted
consent
- entry point 2 and consent has been granted, `GLICOverlay` will be
displayed

Additionally, this CL:
- Enables the feature engagement flag so GLIC components can properly
use the Feature Engagement Tracker(FET)
- Doesn't show the GLIC promo if the promo was shown already
- Notifies FET to update the GLIC promo pref value

For the first entry point, the old logic in GLICNavigationController
would open GLICPromo. With this CL, GLICCoordinator and
GLICNavigationController will have an added property to check if we
should skip over the GLIC Promo and only show GLIC Consent. This use
case is important for the second entry point since the promo isn't shown
but the consent view is.

Also side note, the GLIC promo currently doesn't have any other triggers
besides showing as a promo which makes logic simpler as we only need to
check

Bug: 419064727
Change-Id: Ia0a9c2dce196e28aa48c18caaf18e4bd325f9415
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6580382
Commit-Queue: Joemer Ramos <joemerramos@google.com>
Reviewed-by: Robbie Gibson <rkgibson@google.com>
Cr-Commit-Position: refs/heads/main@{#1466707}
11 files changed
tree: df8114e5a492f56cadd085b51441512f0223b571
  1. .github/
  2. android_webview/
  3. apps/
  4. ash/
  5. base/
  6. build/
  7. build_overrides/
  8. buildtools/
  9. cc/
  10. chrome/
  11. chromecast/
  12. chromeos/
  13. codelabs/
  14. components/
  15. content/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia_web/
  22. gin/
  23. google_apis/
  24. gpu/
  25. headless/
  26. infra/
  27. ios/
  28. ipc/
  29. media/
  30. mojo/
  31. native_client_sdk/
  32. net/
  33. pdf/
  34. ppapi/
  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. .git-blame-ignore-revs
  54. .gitallowed
  55. .gitattributes
  56. .gitignore
  57. .gitmodules
  58. .gn
  59. .mailmap
  60. .rustfmt.toml
  61. .vpython3
  62. .yapfignore
  63. ATL_OWNERS
  64. AUTHORS
  65. BUILD.gn
  66. CODE_OF_CONDUCT.md
  67. codereview.settings
  68. CPPLINT.cfg
  69. CRYPTO_OWNERS
  70. DEPS
  71. DIR_METADATA
  72. LICENSE
  73. LICENSE.chromium_os
  74. OWNERS
  75. PRESUBMIT.py
  76. PRESUBMIT_test.py
  77. PRESUBMIT_test_mocks.py
  78. README.md
  79. SECURITY_OWNERS
  80. 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.