OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/payments/core/journey_logger.h" | 5 #include "components/payments/core/journey_logger.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/metrics/histogram_functions.h" | 9 #include "base/metrics/histogram_functions.h" |
10 #include "base/metrics/histogram_macros.h" | 10 #include "base/metrics/histogram_macros.h" |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 | 109 |
110 void JourneyLogger::SetEventOccurred(Event event) { | 110 void JourneyLogger::SetEventOccurred(Event event) { |
111 events_ |= event; | 111 events_ |= event; |
112 } | 112 } |
113 | 113 |
114 void JourneyLogger::RecordJourneyStatsHistograms( | 114 void JourneyLogger::RecordJourneyStatsHistograms( |
115 CompletionStatus completion_status) { | 115 CompletionStatus completion_status) { |
116 DCHECK(!has_recorded_); | 116 DCHECK(!has_recorded_); |
117 has_recorded_ = true; | 117 has_recorded_ = true; |
118 | 118 |
| 119 RecordCheckoutFlowMetrics(); |
| 120 |
119 RecordSectionSpecificStats(completion_status); | 121 RecordSectionSpecificStats(completion_status); |
120 | 122 |
121 // Record the CanMakePayment metrics based on whether the transaction was | 123 // Record the CanMakePayment metrics based on whether the transaction was |
122 // completed or aborted by the user (UserAborted) or otherwise (OtherAborted). | 124 // completed or aborted by the user (UserAborted) or otherwise (OtherAborted). |
123 RecordCanMakePaymentStats(completion_status); | 125 RecordCanMakePaymentStats(completion_status); |
124 | 126 |
125 RecordUrlKeyedMetrics(completion_status); | 127 RecordUrlKeyedMetrics(completion_status); |
126 } | 128 } |
127 | 129 |
| 130 void JourneyLogger::RecordCheckoutFlowMetrics() { |
| 131 UMA_HISTOGRAM_BOOLEAN("PaymentRequest.CheckoutFunnel.Initiated", true); |
| 132 |
| 133 if (events_ & EVENT_SHOWN) |
| 134 UMA_HISTOGRAM_BOOLEAN("PaymentRequest.CheckoutFunnel.Shown", true); |
| 135 |
| 136 if (events_ & EVENT_PAY_CLICKED) |
| 137 UMA_HISTOGRAM_BOOLEAN("PaymentRequest.CheckoutFunnel.PayClicked", true); |
| 138 |
| 139 if (events_ & EVENT_RECEIVED_INSTRUMENT_DETAILS) |
| 140 UMA_HISTOGRAM_BOOLEAN( |
| 141 "PaymentRequest.CheckoutFunnel.ReceivedInstrumentDetails", true); |
| 142 |
| 143 if (events_ & EVENT_SKIPPED_SHOW) |
| 144 UMA_HISTOGRAM_BOOLEAN("PaymentRequest.CheckoutFunnel.SkippedShow", true); |
| 145 } |
| 146 |
128 void JourneyLogger::RecordSectionSpecificStats( | 147 void JourneyLogger::RecordSectionSpecificStats( |
129 CompletionStatus completion_status) { | 148 CompletionStatus completion_status) { |
130 // Record whether the user had suggestions for each requested information. | 149 // Record whether the user had suggestions for each requested information. |
131 bool user_had_all_requested_information = true; | 150 bool user_had_all_requested_information = true; |
132 | 151 |
133 for (int i = 0; i < NUMBER_OF_SECTIONS; ++i) { | 152 for (int i = 0; i < NUMBER_OF_SECTIONS; ++i) { |
134 std::string name_suffix = GetHistogramNameSuffix(i, completion_status); | 153 std::string name_suffix = GetHistogramNameSuffix(i, completion_status); |
135 | 154 |
136 // Only log the metrics for a section if it was requested by the merchant. | 155 // Only log the metrics for a section if it was requested by the merchant. |
137 if (sections_[i].is_requested_) { | 156 if (sections_[i].is_requested_) { |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 int32_t source_id = ukm_service_->GetNewSourceID(); | 250 int32_t source_id = ukm_service_->GetNewSourceID(); |
232 ukm_service_->UpdateSourceURL(source_id, url_); | 251 ukm_service_->UpdateSourceURL(source_id, url_); |
233 std::unique_ptr<ukm::UkmEntryBuilder> builder = ukm_service_->GetEntryBuilder( | 252 std::unique_ptr<ukm::UkmEntryBuilder> builder = ukm_service_->GetEntryBuilder( |
234 source_id, internal::kUKMCheckoutEventsEntryName); | 253 source_id, internal::kUKMCheckoutEventsEntryName); |
235 builder->AddMetric(internal::kUKMCompletionStatusMetricName, | 254 builder->AddMetric(internal::kUKMCompletionStatusMetricName, |
236 completion_status); | 255 completion_status); |
237 builder->AddMetric(internal::kUKMEventsMetricName, events_); | 256 builder->AddMetric(internal::kUKMEventsMetricName, events_); |
238 } | 257 } |
239 | 258 |
240 } // namespace payments | 259 } // namespace payments |
OLD | NEW |