| Index: chrome/browser/ui/views/payments/payment_request_can_make_payment_metrics_browsertest.cc
|
| diff --git a/chrome/browser/ui/views/payments/payment_request_can_make_payment_metrics_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_can_make_payment_metrics_browsertest.cc
|
| index 502785695fa33a9cb96529198f0d25142b5f33f4..fbb9cd36d98e62dd99f5f61a6f38625abc21284f 100644
|
| --- a/chrome/browser/ui/views/payments/payment_request_can_make_payment_metrics_browsertest.cc
|
| +++ b/chrome/browser/ui/views/payments/payment_request_can_make_payment_metrics_browsertest.cc
|
| @@ -7,13 +7,16 @@
|
| #include "base/macros.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "base/test/histogram_tester.h"
|
| +#include "chrome/browser/ui/browser_commands.h"
|
| #include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h"
|
| #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h"
|
| +#include "chrome/test/base/ui_test_utils.h"
|
| #include "components/autofill/core/browser/autofill_profile.h"
|
| #include "components/autofill/core/browser/autofill_test_utils.h"
|
| #include "components/autofill/core/browser/credit_card.h"
|
| #include "components/payments/core/journey_logger.h"
|
| #include "content/public/test/browser_test_utils.h"
|
| +#include "url/gurl.h"
|
|
|
| namespace payments {
|
|
|
| @@ -236,6 +239,51 @@ IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest,
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest,
|
| + Called_True_NotShown) {
|
| + base::HistogramTester histogram_tester;
|
| +
|
| + // Setup a credit card with an associated billing address so CanMakePayment
|
| + // returns true.
|
| + SetupInitialAddressAndCreditCard();
|
| +
|
| + // Try to start the Payment Request, but only CanMakePayment should be called.
|
| + ResetEventObserver(DialogEvent::CAN_MAKE_PAYMENT_CALLED);
|
| + ASSERT_TRUE(content::ExecuteScript(GetActiveWebContents(), "queryNoShow();"));
|
| + WaitForObservedEvent();
|
| +
|
| + // Navigate away to trigger the log.
|
| + NavigateTo("/payment_request_email_test.html");
|
| +
|
| + // Make sure the metrics are logged correctly.
|
| + histogram_tester.ExpectBucketCount("PaymentRequest.CanMakePayment.Usage",
|
| + JourneyLogger::CAN_MAKE_PAYMENT_USED, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "PaymentRequest.CanMakePayment.Used.EffectOnShow",
|
| + JourneyLogger::CMP_SHOW_COULD_MAKE_PAYMENT, 1);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest,
|
| + Called_False_NotShown) {
|
| + base::HistogramTester histogram_tester;
|
| +
|
| + // Don't add a card on file, so CanMakePayment returns false.
|
| + // Try to start the Payment Request, but only CanMakePayment should be called.
|
| + ResetEventObserver(DialogEvent::CAN_MAKE_PAYMENT_CALLED);
|
| + ASSERT_TRUE(content::ExecuteScript(GetActiveWebContents(), "queryNoShow();"));
|
| + WaitForObservedEvent();
|
| +
|
| + // Navigate away to trigger the log.
|
| + NavigateTo("/payment_request_email_test.html");
|
| +
|
| + // Make sure the metrics are logged correctly.
|
| + histogram_tester.ExpectBucketCount("PaymentRequest.CanMakePayment.Usage",
|
| + JourneyLogger::CAN_MAKE_PAYMENT_USED, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "PaymentRequest.CanMakePayment.Used.EffectOnShow",
|
| + JourneyLogger::CMP_SHOW_COULD_NOT_MAKE_PAYMENT_AND_DID_NOT_SHOW, 1);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest,
|
| NotCalled_Shown_Completed) {
|
| base::HistogramTester histogram_tester;
|
|
|
| @@ -318,4 +366,96 @@ IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest,
|
| JourneyLogger::COMPLETION_STATUS_USER_ABORTED, 1);
|
| }
|
|
|
| +IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest,
|
| + UserAborted_NavigationToSameOrigin) {
|
| + base::HistogramTester histogram_tester;
|
| +
|
| + // Start the Payment Request and expect CanMakePayment to be called before the
|
| + // Payment Request is shown.
|
| + ResetEventObserverForSequence(
|
| + {DialogEvent::CAN_MAKE_PAYMENT_CALLED, DialogEvent::DIALOG_OPENED});
|
| + ASSERT_TRUE(content::ExecuteScript(GetActiveWebContents(), "queryShow();"));
|
| + WaitForObservedEvent();
|
| +
|
| + // Simulate that the user navigates away from the Payment Request by opening a
|
| + // different page on the same origin.
|
| + ResetEventObserverForSequence({DialogEvent::DIALOG_CLOSED});
|
| + NavigateTo("/payment_request_email_test.html");
|
| + WaitForObservedEvent();
|
| +
|
| + // Make sure that a navigation is logged as a user abort.
|
| + histogram_tester.ExpectBucketCount(
|
| + "PaymentRequest.CanMakePayment.Used.FalseWithShowEffectOnCompletion",
|
| + JourneyLogger::COMPLETION_STATUS_USER_ABORTED, 1);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest,
|
| + UserAborted_NavigationToDifferentOrigin) {
|
| + base::HistogramTester histogram_tester;
|
| +
|
| + // Start the Payment Request and expect CanMakePayment to be called before the
|
| + // Payment Request is shown.
|
| + ResetEventObserverForSequence(
|
| + {DialogEvent::CAN_MAKE_PAYMENT_CALLED, DialogEvent::DIALOG_OPENED});
|
| + ASSERT_TRUE(content::ExecuteScript(GetActiveWebContents(), "queryShow();"));
|
| + WaitForObservedEvent();
|
| +
|
| + // Simulate that the user navigates away from the Payment Request by opening a
|
| + // different page on a different origin.
|
| + ResetEventObserverForSequence({DialogEvent::DIALOG_CLOSED});
|
| + GURL other_origin_url =
|
| + https_server()->GetURL("b.com", "/payment_request_email_test.html");
|
| + ui_test_utils::NavigateToURL(browser(), other_origin_url);
|
| + WaitForObservedEvent();
|
| +
|
| + // Make sure that a navigation is logged as a user abort.
|
| + histogram_tester.ExpectBucketCount(
|
| + "PaymentRequest.CanMakePayment.Used.FalseWithShowEffectOnCompletion",
|
| + JourneyLogger::COMPLETION_STATUS_USER_ABORTED, 1);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest,
|
| + UserAborted_TabClose) {
|
| + base::HistogramTester histogram_tester;
|
| +
|
| + // Start the Payment Request and expect CanMakePayment to be called before the
|
| + // Payment Request is shown.
|
| + ResetEventObserverForSequence(
|
| + {DialogEvent::CAN_MAKE_PAYMENT_CALLED, DialogEvent::DIALOG_OPENED});
|
| + ASSERT_TRUE(content::ExecuteScript(GetActiveWebContents(), "queryShow();"));
|
| + WaitForObservedEvent();
|
| +
|
| + // Simulate that the user closes the tab containing the Payment Request.
|
| + ResetEventObserverForSequence({DialogEvent::DIALOG_CLOSED});
|
| + chrome::CloseTab(browser());
|
| + WaitForObservedEvent();
|
| +
|
| + // Make sure that a tab closing is logged as a user abort.
|
| + histogram_tester.ExpectBucketCount(
|
| + "PaymentRequest.CanMakePayment.Used.FalseWithShowEffectOnCompletion",
|
| + JourneyLogger::COMPLETION_STATUS_USER_ABORTED, 1);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest,
|
| + UserAborted_Reload) {
|
| + base::HistogramTester histogram_tester;
|
| +
|
| + // Start the Payment Request and expect CanMakePayment to be called before the
|
| + // Payment Request is shown.
|
| + ResetEventObserverForSequence(
|
| + {DialogEvent::CAN_MAKE_PAYMENT_CALLED, DialogEvent::DIALOG_OPENED});
|
| + ASSERT_TRUE(content::ExecuteScript(GetActiveWebContents(), "queryShow();"));
|
| + WaitForObservedEvent();
|
| +
|
| + // Simulate that the user reloads the page containing the Payment Request.
|
| + ResetEventObserverForSequence({DialogEvent::DIALOG_CLOSED});
|
| + chrome::Reload(browser(), WindowOpenDisposition::CURRENT_TAB);
|
| + WaitForObservedEvent();
|
| +
|
| + // Make sure that a reload is logged as a user abort.
|
| + histogram_tester.ExpectBucketCount(
|
| + "PaymentRequest.CanMakePayment.Used.FalseWithShowEffectOnCompletion",
|
| + JourneyLogger::COMPLETION_STATUS_USER_ABORTED, 1);
|
| +}
|
| +
|
| } // namespace payments
|
|
|