summaryrefslogtreecommitdiff
path: root/chromium/components/payments/content/payment_request.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/payments/content/payment_request.cc')
-rw-r--r--chromium/components/payments/content/payment_request.cc37
1 files changed, 27 insertions, 10 deletions
diff --git a/chromium/components/payments/content/payment_request.cc b/chromium/components/payments/content/payment_request.cc
index 050b9503eb7..a791237f311 100644
--- a/chromium/components/payments/content/payment_request.cc
+++ b/chromium/components/payments/content/payment_request.cc
@@ -18,6 +18,7 @@
#include "components/payments/core/features.h"
#include "components/payments/core/payment_details.h"
#include "components/payments/core/payment_details_validation.h"
+#include "components/payments/core/payment_instrument.h"
#include "components/payments/core/payment_prefs.h"
#include "components/prefs/pref_service.h"
#include "components/url_formatter/elide_url.h"
@@ -265,11 +266,16 @@ void PaymentRequest::Complete(mojom::PaymentComplete result) {
}
void PaymentRequest::CanMakePayment() {
- state()->CanMakePayment(base::BindOnce(
- &PaymentRequest::CanMakePaymentCallback, weak_ptr_factory_.GetWeakPtr()));
-
if (observer_for_testing_)
observer_for_testing_->OnCanMakePaymentCalled();
+
+ if (!delegate_->GetPrefService()->GetBoolean(kCanMakePaymentEnabled)) {
+ CanMakePaymentCallback(/*can_make_payment=*/false);
+ } else {
+ state()->CanMakePayment(
+ base::BindOnce(&PaymentRequest::CanMakePaymentCallback,
+ weak_ptr_factory_.GetWeakPtr()));
+ }
}
void PaymentRequest::OnPaymentResponseAvailable(
@@ -342,7 +348,24 @@ void PaymentRequest::OnConnectionTerminated() {
void PaymentRequest::Pay() {
journey_logger_.SetEventOccurred(JourneyLogger::EVENT_PAY_CLICKED);
- journey_logger_.SetEventOccurred(JourneyLogger::EVENT_SELECTED_CREDIT_CARD);
+
+ // Log the correct "selected instrument" metric according to type.
+ DCHECK(state_->selected_instrument());
+ JourneyLogger::Event selected_event =
+ JourneyLogger::Event::EVENT_SELECTED_OTHER;
+ switch (state_->selected_instrument()->type()) {
+ case PaymentInstrument::Type::AUTOFILL:
+ selected_event = JourneyLogger::Event::EVENT_SELECTED_CREDIT_CARD;
+ break;
+ case PaymentInstrument::Type::SERVICE_WORKER_APP:
+ selected_event = JourneyLogger::Event::EVENT_SELECTED_OTHER;
+ break;
+ case PaymentInstrument::Type::NATIVE_MOBILE_APP:
+ NOTREACHED();
+ break;
+ }
+ journey_logger_.SetEventOccurred(selected_event);
+
state_->GeneratePaymentResponse();
}
@@ -394,12 +417,6 @@ void PaymentRequest::CanMakePaymentCallback(bool can_make_payment) {
void PaymentRequest::RespondToCanMakePaymentQuery(bool can_make_payment,
bool warn_localhost_or_file) {
- if (delegate_->IsIncognito()) {
- can_make_payment =
- spec()->HasBasicCardMethodName() ||
- base::FeatureList::IsEnabled(::features::kServiceWorkerPaymentApps);
- }
-
mojom::CanMakePaymentQueryResult positive =
warn_localhost_or_file
? mojom::CanMakePaymentQueryResult::WARNING_CAN_MAKE_PAYMENT