| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <vector> |
| |
| #include "base/macros.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "base/test/metrics/histogram_tester.h" |
| #include "base/test/scoped_feature_list.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/common/content_features.h" |
| #include "content/public/test/browser_test_utils.h" |
| #include "url/gurl.h" |
| |
| namespace payments { |
| |
| class PaymentRequestCanMakePaymentMetricsTest |
| : public PaymentRequestBrowserTestBase { |
| protected: |
| PaymentRequestCanMakePaymentMetricsTest() { |
| feature_list_.InitAndEnableFeature( |
| ::features::kPaymentRequestHasEnrolledInstrument); |
| } |
| |
| void SetupInitialAddressAndCreditCard() { |
| autofill::AutofillProfile billing_address = |
| autofill::test::GetFullProfile(); |
| AddAutofillProfile(billing_address); |
| autofill::CreditCard card = autofill::test::GetCreditCard(); |
| card.set_billing_address_id(billing_address.guid()); |
| AddCreditCard(card); |
| } |
| |
| void CheckPaymentSupportAndThenShow() { |
| // Start the Payment Request and expect CanMakePayment and |
| // HasEnrolledInstrument to be called before the Payment Request is shown. |
| ResetEventWaiterForSequence({DialogEvent::CAN_MAKE_PAYMENT_CALLED, |
| DialogEvent::CAN_MAKE_PAYMENT_RETURNED, |
| DialogEvent::HAS_ENROLLED_INSTRUMENT_CALLED, |
| DialogEvent::HAS_ENROLLED_INSTRUMENT_RETURNED, |
| DialogEvent::PROCESSING_SPINNER_SHOWN, |
| DialogEvent::PROCESSING_SPINNER_HIDDEN, |
| DialogEvent::DIALOG_OPENED}); |
| ASSERT_TRUE(content::ExecuteScript(GetActiveWebContents(), "queryShow();")); |
| WaitForObservedEvent(); |
| } |
| |
| private: |
| base::test::ScopedFeatureList feature_list_; |
| |
| DISALLOW_COPY_AND_ASSIGN(PaymentRequestCanMakePaymentMetricsTest); |
| }; |
| |
| IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest, |
| Called_True_Shown_Completed) { |
| NavigateTo("/payment_request_can_make_payment_metrics_test.html"); |
| base::HistogramTester histogram_tester; |
| |
| // Setup a credit card with an associated billing address so |
| // HasEnrolledInstrument returns true. |
| SetupInitialAddressAndCreditCard(); |
| |
| CheckPaymentSupportAndThenShow(); |
| |
| // Complete the Payment Request. |
| PayWithCreditCardAndWait(base::ASCIIToUTF16("123")); |
| |
| // Make sure the correct events were logged. |
| std::vector<base::Bucket> buckets = |
| histogram_tester.GetAllSamples("PaymentRequest.Events"); |
| ASSERT_EQ(1U, buckets.size()); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_SHOWN); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_PAY_CLICKED); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_RECEIVED_INSTRUMENT_DETAILS); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_INITIAL_FORM_OF_PAYMENT); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_NECESSARY_COMPLETE_SUGGESTIONS); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_COMPLETED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_OTHER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SKIPPED_SHOW); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_USER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_SHIPPING); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_NAME); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_PHONE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_EMAIL); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_FALSE); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_FALSE); |
| } |
| |
| IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest, |
| Called_True_Shown_OtherAborted) { |
| NavigateTo("/payment_request_can_make_payment_metrics_test.html"); |
| base::HistogramTester histogram_tester; |
| |
| // Setup a credit card with an associated billing address so |
| // HasEnrolledInstrument returns true. |
| SetupInitialAddressAndCreditCard(); |
| |
| CheckPaymentSupportAndThenShow(); |
| |
| // Simulate that an unexpected error occurs. |
| ResetEventWaiterForSequence( |
| {DialogEvent::ABORT_CALLED, DialogEvent::DIALOG_CLOSED}); |
| const std::string click_buy_button_js = |
| "(function() { document.getElementById('abort').click(); })();"; |
| ASSERT_TRUE( |
| content::ExecuteScript(GetActiveWebContents(), click_buy_button_js)); |
| WaitForObservedEvent(); |
| |
| // Make sure the correct events were logged. |
| std::vector<base::Bucket> buckets = |
| histogram_tester.GetAllSamples("PaymentRequest.Events"); |
| ASSERT_EQ(1U, buckets.size()); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_SHOWN); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_PAY_CLICKED); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_RECEIVED_INSTRUMENT_DETAILS); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_INITIAL_FORM_OF_PAYMENT); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_NECESSARY_COMPLETE_SUGGESTIONS); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_COMPLETED); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_OTHER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SKIPPED_SHOW); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_USER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_SHIPPING); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_NAME); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_PHONE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_EMAIL); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_FALSE); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_FALSE); |
| } |
| |
| IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest, |
| Called_True_Shown_UserAborted) { |
| NavigateTo("/payment_request_can_make_payment_metrics_test.html"); |
| base::HistogramTester histogram_tester; |
| |
| // Setup a credit card with an associated billing address so |
| // HasEnrolledInstrument returns true. |
| SetupInitialAddressAndCreditCard(); |
| |
| CheckPaymentSupportAndThenShow(); |
| |
| // Simulate that the user cancels the Payment Request. |
| ClickOnCancel(); |
| |
| // Make sure the correct events were logged. |
| std::vector<base::Bucket> buckets = |
| histogram_tester.GetAllSamples("PaymentRequest.Events"); |
| ASSERT_EQ(1U, buckets.size()); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_SHOWN); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_PAY_CLICKED); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_RECEIVED_INSTRUMENT_DETAILS); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_INITIAL_FORM_OF_PAYMENT); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_NECESSARY_COMPLETE_SUGGESTIONS); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_COMPLETED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_OTHER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SKIPPED_SHOW); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_USER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_SHIPPING); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_NAME); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_PHONE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_EMAIL); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_FALSE); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_FALSE); |
| } |
| |
| IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest, |
| Called_False_Shown_Completed) { |
| NavigateTo("/payment_request_can_make_payment_metrics_test.html"); |
| base::HistogramTester histogram_tester; |
| |
| // An address is needed so that the UI can choose it as a billing address. |
| autofill::AutofillProfile billing_address = autofill::test::GetFullProfile(); |
| AddAutofillProfile(billing_address); |
| |
| // Don't add a card on file, so HasEnrolledInstrument returns false. |
| CheckPaymentSupportAndThenShow(); |
| |
| // Add a test credit card. |
| OpenCreditCardEditorScreen(); |
| SetEditorTextfieldValue(base::UTF8ToUTF16("Bob Simpson"), |
| autofill::CREDIT_CARD_NAME_FULL); |
| SetEditorTextfieldValue(base::UTF8ToUTF16("4111111111111111"), |
| autofill::CREDIT_CARD_NUMBER); |
| SetComboboxValue(base::UTF8ToUTF16("05"), autofill::CREDIT_CARD_EXP_MONTH); |
| SetComboboxValue(base::UTF8ToUTF16("2026"), |
| autofill::CREDIT_CARD_EXP_4_DIGIT_YEAR); |
| SelectBillingAddress(billing_address.guid()); |
| ResetEventWaiter(DialogEvent::BACK_TO_PAYMENT_SHEET_NAVIGATION); |
| ClickOnDialogViewAndWait(DialogViewID::EDITOR_SAVE_BUTTON); |
| |
| // Complete the Payment Request. |
| PayWithCreditCardAndWait(base::ASCIIToUTF16("123")); |
| |
| // Make sure the correct events were logged. |
| std::vector<base::Bucket> buckets = |
| histogram_tester.GetAllSamples("PaymentRequest.Events"); |
| ASSERT_EQ(1U, buckets.size()); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_SHOWN); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_PAY_CLICKED); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_RECEIVED_INSTRUMENT_DETAILS); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_INITIAL_FORM_OF_PAYMENT); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_NECESSARY_COMPLETE_SUGGESTIONS); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_COMPLETED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_OTHER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SKIPPED_SHOW); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_USER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_SHIPPING); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_NAME); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_PHONE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_EMAIL); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_FALSE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_TRUE); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_FALSE); |
| } |
| |
| IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest, |
| Called_False_Shown_OtherAborted) { |
| NavigateTo("/payment_request_can_make_payment_metrics_test.html"); |
| base::HistogramTester histogram_tester; |
| |
| // Don't add a card on file, so HasEnrolledInstrument returns false. |
| CheckPaymentSupportAndThenShow(); |
| |
| // Simulate that an unexpected error occurs. |
| ResetEventWaiterForSequence( |
| {DialogEvent::ABORT_CALLED, DialogEvent::DIALOG_CLOSED}); |
| const std::string click_buy_button_js = |
| "(function() { document.getElementById('abort').click(); })();"; |
| ASSERT_TRUE( |
| content::ExecuteScript(GetActiveWebContents(), click_buy_button_js)); |
| WaitForObservedEvent(); |
| |
| // Make sure the correct events were logged. |
| std::vector<base::Bucket> buckets = |
| histogram_tester.GetAllSamples("PaymentRequest.Events"); |
| ASSERT_EQ(1U, buckets.size()); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_SHOWN); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_PAY_CLICKED); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_RECEIVED_INSTRUMENT_DETAILS); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_INITIAL_FORM_OF_PAYMENT); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_NECESSARY_COMPLETE_SUGGESTIONS); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_COMPLETED); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_OTHER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SKIPPED_SHOW); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_USER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_SHIPPING); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_NAME); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_PHONE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_EMAIL); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_FALSE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_TRUE); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_FALSE); |
| } |
| |
| IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest, |
| Called_False_Shown_UserAborted) { |
| NavigateTo("/payment_request_can_make_payment_metrics_test.html"); |
| base::HistogramTester histogram_tester; |
| |
| // Don't add a card on file, so HasEnrolledInstrument returns false. |
| CheckPaymentSupportAndThenShow(); |
| |
| // Simulate that the user cancels the Payment Request. |
| ClickOnCancel(); |
| |
| // Make sure the correct events were logged. |
| std::vector<base::Bucket> buckets = |
| histogram_tester.GetAllSamples("PaymentRequest.Events"); |
| ASSERT_EQ(1U, buckets.size()); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_SHOWN); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_PAY_CLICKED); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_RECEIVED_INSTRUMENT_DETAILS); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_INITIAL_FORM_OF_PAYMENT); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_NECESSARY_COMPLETE_SUGGESTIONS); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_COMPLETED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_OTHER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SKIPPED_SHOW); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_USER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_SHIPPING); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_NAME); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_PHONE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_EMAIL); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_FALSE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_TRUE); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_FALSE); |
| } |
| |
| IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest, |
| Called_True_NotShown) { |
| NavigateTo("/payment_request_can_make_payment_metrics_test.html"); |
| base::HistogramTester histogram_tester; |
| |
| // Setup a credit card with an associated billing address so |
| // HasEnrolledInstrument returns true. |
| SetupInitialAddressAndCreditCard(); |
| |
| // Try to start the Payment Request, but only check payment support without |
| // calling show(). |
| ResetEventWaiterForSequence({DialogEvent::CAN_MAKE_PAYMENT_CALLED, |
| DialogEvent::CAN_MAKE_PAYMENT_RETURNED, |
| DialogEvent::HAS_ENROLLED_INSTRUMENT_CALLED, |
| DialogEvent::HAS_ENROLLED_INSTRUMENT_RETURNED}); |
| ASSERT_TRUE(content::ExecuteScript(GetActiveWebContents(), "queryNoShow();")); |
| WaitForObservedEvent(); |
| |
| // Navigate away to trigger the log. |
| NavigateTo("/payment_request_email_test.html"); |
| |
| // Make sure the correct events were logged. |
| std::vector<base::Bucket> buckets = |
| histogram_tester.GetAllSamples("PaymentRequest.Events"); |
| ASSERT_EQ(1U, buckets.size()); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SHOWN); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_PAY_CLICKED); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_RECEIVED_INSTRUMENT_DETAILS); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_INITIAL_FORM_OF_PAYMENT); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_NECESSARY_COMPLETE_SUGGESTIONS); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_COMPLETED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_OTHER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SKIPPED_SHOW); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_USER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_SHIPPING); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_NAME); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_PHONE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_EMAIL); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_FALSE); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_FALSE); |
| } |
| |
| IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest, |
| Called_False_NotShown) { |
| NavigateTo("/payment_request_can_make_payment_metrics_test.html"); |
| base::HistogramTester histogram_tester; |
| |
| // Don't add a card on file, so HasEnrolledInstrument returns false. |
| // Try to start the Payment Request, but only check payment support without |
| // calling show(). |
| ResetEventWaiterForSequence({DialogEvent::CAN_MAKE_PAYMENT_CALLED, |
| DialogEvent::CAN_MAKE_PAYMENT_RETURNED, |
| DialogEvent::HAS_ENROLLED_INSTRUMENT_CALLED, |
| DialogEvent::HAS_ENROLLED_INSTRUMENT_RETURNED}); |
| ASSERT_TRUE(content::ExecuteScript(GetActiveWebContents(), "queryNoShow();")); |
| WaitForObservedEvent(); |
| |
| // Navigate away to trigger the log. |
| NavigateTo("/payment_request_email_test.html"); |
| |
| // Make sure the correct events were logged. |
| std::vector<base::Bucket> buckets = |
| histogram_tester.GetAllSamples("PaymentRequest.Events"); |
| ASSERT_EQ(1U, buckets.size()); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SHOWN); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_PAY_CLICKED); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_RECEIVED_INSTRUMENT_DETAILS); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_INITIAL_FORM_OF_PAYMENT); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_NECESSARY_COMPLETE_SUGGESTIONS); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_COMPLETED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_OTHER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SKIPPED_SHOW); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_USER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_SHIPPING); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_NAME); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_PHONE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_EMAIL); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_FALSE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_TRUE); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_FALSE); |
| } |
| |
| IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest, |
| NotCalled_Shown_Completed) { |
| NavigateTo("/payment_request_can_make_payment_metrics_test.html"); |
| base::HistogramTester histogram_tester; |
| |
| // Setup a credit card with an associated billing address to make it simpler |
| // to complete the Payment Request. |
| SetupInitialAddressAndCreditCard(); |
| |
| ResetEventWaiterForDialogOpened(); |
| ASSERT_TRUE(content::ExecuteScript(GetActiveWebContents(), "noQueryShow();")); |
| WaitForObservedEvent(); |
| |
| // Complete the Payment Request. |
| PayWithCreditCardAndWait(base::ASCIIToUTF16("123")); |
| |
| // Make sure that no canMakePayment events were logged. |
| std::vector<base::Bucket> buckets = |
| histogram_tester.GetAllSamples("PaymentRequest.Events"); |
| ASSERT_EQ(1U, buckets.size()); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_SHOWN); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_PAY_CLICKED); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_RECEIVED_INSTRUMENT_DETAILS); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_INITIAL_FORM_OF_PAYMENT); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_NECESSARY_COMPLETE_SUGGESTIONS); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_COMPLETED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_OTHER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SKIPPED_SHOW); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_USER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_SHIPPING); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_NAME); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_PHONE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_EMAIL); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_FALSE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_FALSE); |
| } |
| |
| IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest, |
| NotCalled_Shown_OtherAborted) { |
| NavigateTo("/payment_request_can_make_payment_metrics_test.html"); |
| base::HistogramTester histogram_tester; |
| |
| // Setup a credit card with an associated billing address to make it simpler |
| // to complete the Payment Request. |
| SetupInitialAddressAndCreditCard(); |
| |
| ResetEventWaiterForDialogOpened(); |
| ASSERT_TRUE(content::ExecuteScript(GetActiveWebContents(), "noQueryShow();")); |
| WaitForObservedEvent(); |
| |
| // Simulate that an unexpected error occurs. |
| ResetEventWaiterForSequence( |
| {DialogEvent::ABORT_CALLED, DialogEvent::DIALOG_CLOSED}); |
| const std::string click_buy_button_js = |
| "(function() { document.getElementById('abort').click(); })();"; |
| ASSERT_TRUE( |
| content::ExecuteScript(GetActiveWebContents(), click_buy_button_js)); |
| WaitForObservedEvent(); |
| |
| // Make sure that no canMakePayment events were logged. |
| std::vector<base::Bucket> buckets = |
| histogram_tester.GetAllSamples("PaymentRequest.Events"); |
| ASSERT_EQ(1U, buckets.size()); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_SHOWN); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_PAY_CLICKED); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_RECEIVED_INSTRUMENT_DETAILS); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_INITIAL_FORM_OF_PAYMENT); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_NECESSARY_COMPLETE_SUGGESTIONS); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_COMPLETED); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_OTHER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SKIPPED_SHOW); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_USER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_SHIPPING); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_NAME); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_PHONE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_EMAIL); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_FALSE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_FALSE); |
| } |
| |
| IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest, |
| NotCalled_Shown_UserAborted) { |
| NavigateTo("/payment_request_can_make_payment_metrics_test.html"); |
| base::HistogramTester histogram_tester; |
| |
| // Setup a credit card with an associated billing address to make it simpler |
| // to complete the Payment Request. |
| SetupInitialAddressAndCreditCard(); |
| |
| ResetEventWaiterForDialogOpened(); |
| ASSERT_TRUE(content::ExecuteScript(GetActiveWebContents(), "noQueryShow();")); |
| WaitForObservedEvent(); |
| |
| // Simulate that the user cancels the Payment Request. |
| ClickOnCancel(); |
| |
| // Make sure that no canMakePayment events were logged. |
| std::vector<base::Bucket> buckets = |
| histogram_tester.GetAllSamples("PaymentRequest.Events"); |
| ASSERT_EQ(1U, buckets.size()); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_SHOWN); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_PAY_CLICKED); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_RECEIVED_INSTRUMENT_DETAILS); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_INITIAL_FORM_OF_PAYMENT); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_NECESSARY_COMPLETE_SUGGESTIONS); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_COMPLETED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_OTHER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SKIPPED_SHOW); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_USER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_SHIPPING); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_NAME); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_PHONE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_EMAIL); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_FALSE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_FALSE); |
| } |
| |
| IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest, |
| UserAborted_NavigationToSameOrigin) { |
| NavigateTo("/payment_request_can_make_payment_metrics_test.html"); |
| base::HistogramTester histogram_tester; |
| |
| CheckPaymentSupportAndThenShow(); |
| |
| // Simulate that the user navigates away from the Payment Request by opening a |
| // different page on the same origin. |
| ResetEventWaiterForSequence({DialogEvent::DIALOG_CLOSED}); |
| NavigateTo("/payment_request_email_test.html"); |
| WaitForObservedEvent(); |
| |
| // Make sure the correct events were logged. |
| std::vector<base::Bucket> buckets = |
| histogram_tester.GetAllSamples("PaymentRequest.Events"); |
| ASSERT_EQ(1U, buckets.size()); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_SHOWN); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_PAY_CLICKED); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_RECEIVED_INSTRUMENT_DETAILS); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_INITIAL_FORM_OF_PAYMENT); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_NECESSARY_COMPLETE_SUGGESTIONS); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_COMPLETED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_OTHER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SKIPPED_SHOW); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_USER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_SHIPPING); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_NAME); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_PHONE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_EMAIL); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_FALSE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_TRUE); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_FALSE); |
| } |
| |
| IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest, |
| UserAborted_NavigationToDifferentOrigin) { |
| NavigateTo("/payment_request_can_make_payment_metrics_test.html"); |
| base::HistogramTester histogram_tester; |
| |
| CheckPaymentSupportAndThenShow(); |
| |
| // Simulate that the user navigates away from the Payment Request by opening a |
| // different page on a different origin. |
| ResetEventWaiterForSequence({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 the correct events were logged. |
| std::vector<base::Bucket> buckets = |
| histogram_tester.GetAllSamples("PaymentRequest.Events"); |
| ASSERT_EQ(1U, buckets.size()); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_SHOWN); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_PAY_CLICKED); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_RECEIVED_INSTRUMENT_DETAILS); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_INITIAL_FORM_OF_PAYMENT); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_NECESSARY_COMPLETE_SUGGESTIONS); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_COMPLETED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_OTHER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SKIPPED_SHOW); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_USER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_SHIPPING); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_NAME); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_PHONE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_EMAIL); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_FALSE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_TRUE); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_FALSE); |
| } |
| |
| IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest, |
| UserAborted_TabClose) { |
| NavigateTo("/payment_request_can_make_payment_metrics_test.html"); |
| base::HistogramTester histogram_tester; |
| |
| CheckPaymentSupportAndThenShow(); |
| |
| // Simulate that the user closes the tab containing the Payment Request. |
| ResetEventWaiterForSequence({DialogEvent::DIALOG_CLOSED}); |
| chrome::CloseTab(browser()); |
| WaitForObservedEvent(); |
| |
| // Make sure the correct events were logged. |
| std::vector<base::Bucket> buckets = |
| histogram_tester.GetAllSamples("PaymentRequest.Events"); |
| ASSERT_EQ(1U, buckets.size()); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_SHOWN); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_PAY_CLICKED); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_RECEIVED_INSTRUMENT_DETAILS); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_INITIAL_FORM_OF_PAYMENT); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_NECESSARY_COMPLETE_SUGGESTIONS); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_COMPLETED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_OTHER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SKIPPED_SHOW); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_USER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_SHIPPING); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_NAME); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_PHONE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_EMAIL); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_FALSE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_TRUE); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_FALSE); |
| } |
| |
| IN_PROC_BROWSER_TEST_F(PaymentRequestCanMakePaymentMetricsTest, |
| UserAborted_Reload) { |
| NavigateTo("/payment_request_can_make_payment_metrics_test.html"); |
| base::HistogramTester histogram_tester; |
| |
| CheckPaymentSupportAndThenShow(); |
| |
| // Simulate that the user reloads the page containing the Payment Request. |
| ResetEventWaiterForSequence({DialogEvent::DIALOG_CLOSED}); |
| chrome::Reload(browser(), WindowOpenDisposition::CURRENT_TAB); |
| WaitForObservedEvent(); |
| |
| // Make sure the correct events were logged. |
| std::vector<base::Bucket> buckets = |
| histogram_tester.GetAllSamples("PaymentRequest.Events"); |
| ASSERT_EQ(1U, buckets.size()); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_SHOWN); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_PAY_CLICKED); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_RECEIVED_INSTRUMENT_DETAILS); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_INITIAL_FORM_OF_PAYMENT); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAD_NECESSARY_COMPLETE_SUGGESTIONS); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_COMPLETED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_OTHER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_SKIPPED_SHOW); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_USER_ABORTED); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_SHIPPING); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_NAME); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_PHONE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_REQUEST_PAYER_EMAIL); |
| EXPECT_TRUE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_TRUE); |
| EXPECT_FALSE(buckets[0].min & JourneyLogger::EVENT_CAN_MAKE_PAYMENT_FALSE); |
| EXPECT_FALSE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_TRUE); |
| EXPECT_TRUE(buckets[0].min & |
| JourneyLogger::EVENT_HAS_ENROLLED_INSTRUMENT_FALSE); |
| } |
| |
| } // namespace payments |