| Index: content/browser/payments/payment_app_context_impl.h
|
| diff --git a/content/browser/payments/payment_app_context_impl.h b/content/browser/payments/payment_app_context_impl.h
|
| index e3fd583411246f14e923d58e5ef95e23f0cd6b8e..824b5c27a7a5cd7f0e8216cfc961e720f49feaa6 100644
|
| --- a/content/browser/payments/payment_app_context_impl.h
|
| +++ b/content/browser/payments/payment_app_context_impl.h
|
| @@ -16,29 +16,54 @@
|
|
|
| namespace content {
|
|
|
| +class PaymentAppDatabase;
|
| class PaymentAppManager;
|
| class ServiceWorkerContextWrapper;
|
|
|
| +// One instance of this exists per StoragePartition, and services multiple child
|
| +// processes/origins. Most logic is delegated to the owned PaymentAppDatabase
|
| +// instance, which is only accessed on the IO thread.
|
| +//
|
| +// This class is created/destructed by StoragePartitionImpl on UI thread.
|
| +// However, the PaymentAppDatabase that this class has internally should work on
|
| +// IO thread. So, this class has Init() and Shutdown() methods in addition to
|
| +// constructor and destructor. They should be called explicitly when creating
|
| +// and destroying StoragePartitionImpl.
|
| +//
|
| +// Expected order of lifetime calls:
|
| +// 1) Constructor
|
| +// 2) Init()
|
| +// 3) Can now call other public methods in this class in any order.
|
| +// - Can call CreatePaymentAppManager() on UI thread.
|
| +// - Can call GetAllManifests() on UI thread.
|
| +// - Can call PaymentAppManagerHadConnectionError() on IO thread.
|
| +// - Can call payment_app_database() on IO thread.
|
| +// 4) Shutdown()
|
| +// 5) Destructor
|
| class CONTENT_EXPORT PaymentAppContextImpl
|
| : public base::RefCountedThreadSafe<PaymentAppContextImpl>,
|
| NON_EXPORTED_BASE(public PaymentAppContext) {
|
| public:
|
| - explicit PaymentAppContextImpl(
|
| - scoped_refptr<ServiceWorkerContextWrapper> service_worker_context);
|
| + PaymentAppContextImpl();
|
| +
|
| + // Init and Shutdown are for use on the UI thread when the
|
| + // StoragePartition is being setup and torn down.
|
| + void Init(scoped_refptr<ServiceWorkerContextWrapper> service_worker_context);
|
|
|
| // Shutdown must be called before deleting this. Call on the UI thread.
|
| void Shutdown();
|
|
|
| // Create a PaymentAppManager that is owned by this. Call on the UI
|
| // thread.
|
| - void CreateService(
|
| + void CreatePaymentAppManager(
|
| mojo::InterfaceRequest<payments::mojom::PaymentAppManager> request);
|
|
|
| // Called by PaymentAppManager objects so that they can
|
| // be deleted. Call on the IO thread.
|
| - void ServiceHadConnectionError(PaymentAppManager* service);
|
| + void PaymentAppManagerHadConnectionError(PaymentAppManager* service);
|
|
|
| - ServiceWorkerContextWrapper* service_worker_context() const;
|
| + // Should be accessed only on the IO thread.
|
| + PaymentAppDatabase* payment_app_database() const;
|
|
|
| // PaymentAppContext implementation:
|
| void GetAllManifests(const GetAllManifestsCallback& callback) override;
|
| @@ -50,17 +75,26 @@ class CONTENT_EXPORT PaymentAppContextImpl
|
| friend class base::RefCountedThreadSafe<PaymentAppContextImpl>;
|
| ~PaymentAppContextImpl() override;
|
|
|
| - void CreateServiceOnIOThread(
|
| + void CreatePaymentAppDatabaseOnIO(
|
| + scoped_refptr<ServiceWorkerContextWrapper> service_worker_context);
|
| +
|
| + void CreatePaymentAppManagerOnIO(
|
| mojo::InterfaceRequest<payments::mojom::PaymentAppManager> request);
|
|
|
| void ShutdownOnIO();
|
| + void DidShutdown();
|
| +
|
| + // Only accessed on the IO thread.
|
| + std::unique_ptr<PaymentAppDatabase> payment_app_database_;
|
|
|
| - scoped_refptr<ServiceWorkerContextWrapper> service_worker_context_;
|
| + // The PaymentAppManagers are owned by this. They're either deleted during
|
| + // ShutdownOnIO or when the channel is closed via
|
| + // PaymentAppManagerHadConnectionError. Only accessed on the IO thread.
|
| + std::map<PaymentAppManager*, std::unique_ptr<PaymentAppManager>>
|
| + payment_app_managers_;
|
|
|
| - // The services are owned by this. They're either deleted
|
| - // during ShutdownOnIO or when the channel is closed via
|
| - // ServiceHadConnectionError. Only accessed on the IO thread.
|
| - std::map<PaymentAppManager*, std::unique_ptr<PaymentAppManager>> services_;
|
| + // Only accessed on the UI thread.
|
| + bool is_shutdown_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(PaymentAppContextImpl);
|
| };
|
|
|