1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/payments/content/payment_app_service.h"
#include <utility>
#include "base/feature_list.h"
#include "components/payments/content/android_app_communication.h"
#include "components/payments/content/android_payment_app_factory.h"
#include "components/payments/content/payment_app.h"
#include "components/payments/content/secure_payment_confirmation_app_factory.h"
#include "components/payments/content/service_worker_payment_app_factory.h"
#include "components/payments/core/features.h"
#include "components/payments/core/payments_experimental_features.h"
#include "content/public/common/content_features.h"
namespace payments {
PaymentAppService::PaymentAppService(content::BrowserContext* context) {
if (base::FeatureList::IsEnabled(::features::kServiceWorkerPaymentApps)) {
factories_.push_back(std::make_unique<ServiceWorkerPaymentAppFactory>());
}
// TODO(crbug.com/40106647): Review the feature flag name when
// AndroidPaymentAppFactory works on Android OS with generic 3rd party payment
// apps. (Currently it works only on Chrome OS with app store billing payment
// methods.)
if (PaymentsExperimentalFeatures::IsEnabled(features::kAppStoreBilling)) {
factories_.push_back(std::make_unique<AndroidPaymentAppFactory>(
AndroidAppCommunication::GetForBrowserContext(context)));
}
// SecurePaymentConfirmation is enabled if both the feature flag and the Blink
// runtime feature "SecurePaymentConfirmation" are enabled.
if (base::FeatureList::IsEnabled(::features::kSecurePaymentConfirmation)) {
factories_.push_back(
std::make_unique<SecurePaymentConfirmationAppFactory>());
}
}
PaymentAppService::~PaymentAppService() = default;
size_t PaymentAppService::GetNumberOfFactories() const {
return factories_.size();
}
void PaymentAppService::Create(
base::WeakPtr<PaymentAppFactory::Delegate> delegate) {
for (const auto& factory : factories_) {
factory->Create(delegate);
}
}
void PaymentAppService::AddFactoryForTesting(
std::unique_ptr<PaymentAppFactory> factory) {
factories_.push_back(std::move(factory));
}
} // namespace payments
|