blob: 4a86a2d0ef1293fd232908313d716e7dc228e853 [file] [log] [blame]
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_PAYMENTS_CORE_FEATURES_H_
#define COMPONENTS_PAYMENTS_CORE_FEATURES_H_
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
#include "build/blink_buildflags.h"
#include "build/build_config.h"
namespace payments {
namespace features {
// Master toggle for all experimental features that will ship in the next
// release.
BASE_DECLARE_FEATURE(kWebPaymentsExperimentalFeatures);
// Used to control whether the Payment Sheet can be skipped for Payment Requests
// with a single URL based payment app and no other info requested.
BASE_DECLARE_FEATURE(kWebPaymentsSingleAppUiSkip);
// Used to control whether the invoking TWA can handle payments for app store
// payment method identifiers.
BASE_DECLARE_FEATURE(kAppStoreBilling);
// Used to control whether to remove the restriction that TWA has to be
// installed from specific app stores.
BASE_DECLARE_FEATURE(kAppStoreBillingDebug);
// Used to control whether allow crawling just-in-time installable payment app.
BASE_DECLARE_FEATURE(kWebPaymentsJustInTimePaymentApp);
// Used to test icon refetch for JIT installed apps with missing icons.
BASE_DECLARE_FEATURE(kAllowJITInstallationWhenAppIconIsMissing);
// Used to reject the apps with partial delegation.
BASE_DECLARE_FEATURE(kEnforceFullDelegation);
// If enabled, the GooglePayPaymentApp handles communications between the native
// GPay app and the browser for dynamic updates on shipping and payment data.
BASE_DECLARE_FEATURE(kGPayAppDynamicUpdate);
// Used to control whether SecurePaymentConfirmation is able to rely on OS-level
// credential store APIs, or if it can only rely on the user-profile database.
BASE_DECLARE_FEATURE(kSecurePaymentConfirmationUseCredentialStoreAPIs);
#if !BUILDFLAG(IS_ANDROID)
// Desktop only, if enabled the Task Manager will show the PaymentHandler
// window.
BASE_DECLARE_FEATURE(kPaymentHandlerWindowInTaskManager);
#endif
// If enabled, the web-app manifest for already-installed service-worker apps
// will always be refetched for every Payment Request, in order to potentially
// refresh the icon for the app.
BASE_DECLARE_FEATURE(kPaymentHandlerAlwaysRefreshIcon);
// If enabled, the payment method manifest fetch for Payment Handler must go via
// a Link header with rel="payment-method-manifest".
BASE_DECLARE_FEATURE(kPaymentHandlerRequireLinkHeader);
#if BUILDFLAG(USE_BLINK)
// Controls how network and issuer icons (when enabled) are presented in SPC UX.
extern const base::FeatureParam<std::string>
kSecurePaymentConfirmationNetworkAndIssuerIconsOptions;
// Defines the supported UX treatments for displaying the network and issuer
// icons in SPC UX.
enum class SecurePaymentConfirmationNetworkAndIssuerIconsTreatment {
// Issuer and network icons should not be shown.
kNone,
// Issuer and network icons should be shown inline with the dialog title text.
kInline,
// Issuer and network icons should be shown as rows in the SPC transaction
// data 'table'.
kRows
};
// Retrieve the current UX treatment for network and issuer icons for SPC, based
// on the feature flags set.
SecurePaymentConfirmationNetworkAndIssuerIconsTreatment
GetNetworkAndIssuerIconsTreatment();
#endif
} // namespace features
} // namespace payments
#endif // COMPONENTS_PAYMENTS_CORE_FEATURES_H_