Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4295)

Unified Diff: chrome/browser/ui/views/payments/payment_request_can_make_payment_metrics_browsertest.cc

Issue 2870153002: [Payments] Record navigations that close the Payment Request as aborts. (Closed)
Patch Set: Fixed Windows error Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« no previous file with comments | « chrome/browser/ui/views/payments/payment_request_browsertest_base.cc ('k') | components/payments/content/payment_request.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698