chromium/components/payments/README

This directory contains shared code used by multiple platforms' native
implementations of PaymentRequest. In general, business logic (i.e., logic which
manipulates data and is not specific to any particular platform's display of the
data) should live here as much as possible.


Internally, the directory uses the Layered Components model:

http://www.chromium.org/developers/design-documents/layered-components-design


In practical terms, our division between content/ and core/ is usually just a
question of whether the contents have a dependency on Mojo:

* ./core/ -- preferred whenever possible

* ./content/ -- code with a Mojo dependency

* ./content/android/ -- Android bindings for code in either core/ or content/


Intended consumers of this code are organized as follows:

* chrome/android/.../chrome/browser/payments/ -- Android UI Implementation

* chrome/browser/ui/views/payments/ -- Desktop UI implementation

* content/browser/android/payments -- Android bindings for PaymentApps

* content/browser/payments/ -- PaymentApps implementation

The payment flow initiates in Blink:

* third_party/blink/renderer/modules/payments/payment_request.h

The Blink module communicates to the browser via Mojo:

* third_party/blink/public/mojom/payments/payment_request.mojom

There are two implementations for the Mojo service in the browser:

* Desktop: components/payments/content/payment_request.h
* Android: components/payments/content/android/java/src/org/chromium/components/payments/PaymentRequestService.java