tree: bad0b36c0923c0d0ff4bf480e14cb73d1ae86afb [path history] [tgz]
  1. BUILD.gn
  2. fast_checkout_accessibility_service.h
  3. fast_checkout_accessibility_service_impl.cc
  4. fast_checkout_accessibility_service_impl.h
  5. fast_checkout_accessibility_service_impl_unittest.cc
  6. fast_checkout_capabilities_fetcher.h
  7. fast_checkout_capabilities_fetcher_factory.cc
  8. fast_checkout_capabilities_fetcher_factory.h
  9. fast_checkout_capabilities_fetcher_impl.cc
  10. fast_checkout_capabilities_fetcher_impl.h
  11. fast_checkout_capabilities_fetcher_impl_unittest.cc
  12. fast_checkout_client_impl.cc
  13. fast_checkout_client_impl.h
  14. fast_checkout_client_impl_unittest.cc
  15. fast_checkout_delegate_impl.cc
  16. fast_checkout_delegate_impl.h
  17. fast_checkout_delegate_impl_unittest.cc
  18. fast_checkout_funnels.proto
  19. fast_checkout_personal_data_helper.h
  20. fast_checkout_personal_data_helper_impl.cc
  21. fast_checkout_personal_data_helper_impl.h
  22. fast_checkout_personal_data_helper_impl_unittest.cc
  23. fast_checkout_tab_helper.cc
  24. fast_checkout_tab_helper.h
  25. fast_checkout_tab_helper_browsertest.cc
  26. fast_checkout_trigger_validator.h
  27. fast_checkout_trigger_validator_impl.cc
  28. fast_checkout_trigger_validator_impl.h
  29. fast_checkout_trigger_validator_impl_unittest.cc
  30. mock_fast_checkout_capabilities_fetcher.cc
  31. mock_fast_checkout_capabilities_fetcher.h
  32. OWNERS
  33. README.md
chrome/browser/fast_checkout/README.md

Fast Checkout

Fast Checkout is an Android-only feature to fill both the address and the payments form in a checkout funnel with a single user interaction.

To achieve that, Fast Checkout shows a bottomsheet after the user interacts with the first form in a recognized checkout flow. On that bottomsheet, the user confirms both their address and their payments data. Submitting the bottomsheet triggers filling both forms, potentially across navigations. Fast Checkout does not navigate itself. Instead, it observes newly parsed forms and fills the relevant ones after they become available.

High-level architecture

  • FastCheckoutTabHelper listens for navigations. If a URL is a checkout URL, asks FastCheckoutCapabilitiesFetcher to update its list of supported domains. FastCheckoutTabHelper is created for every WebContents.
  • FastCheckoutCapabilitiesFetcher obtains supported checkout funnels from a remote server and keeps them in cache. It is a KeyedService with a lifetime mirroring that of the user's Profile.
  • FastCheckoutClient contains most of the actual logic. It is notified about user interactions with form fields (and can intervene to show UI), learns about navigations and newly seen forms, and triggers filling. It is owned by ChromeAutofillClient and has, thus, approximately the lifetime of a WebContents.