| Index: components/autofill/core/browser/autofill_metrics_unittest.cc
|
| diff --git a/components/autofill/core/browser/autofill_metrics_unittest.cc b/components/autofill/core/browser/autofill_metrics_unittest.cc
|
| index 64ca857085d29a1c1987a1fa86ac5581f8b5246d..89c99cec7cc8f0e392c3397cf4847cbbfdb3b77a 100644
|
| --- a/components/autofill/core/browser/autofill_metrics_unittest.cc
|
| +++ b/components/autofill/core/browser/autofill_metrics_unittest.cc
|
| @@ -6,12 +6,12 @@
|
|
|
| #include <vector>
|
|
|
| -#include "base/memory/ref_counted.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/prefs/pref_service.h"
|
| #include "base/run_loop.h"
|
| #include "base/strings/string16.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| +#include "base/test/histogram_tester.h"
|
| #include "base/time/time.h"
|
| #include "components/autofill/core/browser/autofill_external_delegate.h"
|
| #include "components/autofill/core/browser/autofill_manager.h"
|
| @@ -23,62 +23,20 @@
|
| #include "components/autofill/core/common/form_data.h"
|
| #include "components/autofill/core/common/form_field_data.h"
|
| #include "components/webdata/common/web_data_results.h"
|
| -#include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "ui/gfx/rect.h"
|
| #include "url/gurl.h"
|
|
|
| using base::ASCIIToUTF16;
|
| -using base::TimeDelta;
|
| using base::TimeTicks;
|
| -using testing::_;
|
| -using testing::AnyNumber;
|
| -using testing::Mock;
|
|
|
| namespace autofill {
|
| -
|
| namespace {
|
|
|
| -class MockAutofillMetrics : public AutofillMetrics {
|
| - public:
|
| - MockAutofillMetrics() {}
|
| - MOCK_CONST_METHOD1(LogCreditCardInfoBarMetric, void(InfoBarMetric metric));
|
| - MOCK_CONST_METHOD1(LogDeveloperEngagementMetric,
|
| - void(DeveloperEngagementMetric metric));
|
| - MOCK_CONST_METHOD2(LogHeuristicTypePrediction,
|
| - void(FieldTypeQualityMetric metric,
|
| - ServerFieldType field_type));
|
| - MOCK_CONST_METHOD2(LogOverallTypePrediction,
|
| - void(FieldTypeQualityMetric metric,
|
| - ServerFieldType field_type));
|
| - MOCK_CONST_METHOD2(LogServerTypePrediction,
|
| - void(FieldTypeQualityMetric metric,
|
| - ServerFieldType field_type));
|
| - MOCK_CONST_METHOD1(LogServerQueryMetric, void(ServerQueryMetric metric));
|
| - MOCK_CONST_METHOD1(LogUserHappinessMetric, void(UserHappinessMetric metric));
|
| - MOCK_CONST_METHOD1(LogFormFillDurationFromLoadWithAutofill,
|
| - void(const TimeDelta& duration));
|
| - MOCK_CONST_METHOD1(LogFormFillDurationFromLoadWithoutAutofill,
|
| - void(const TimeDelta& duration));
|
| - MOCK_CONST_METHOD1(LogFormFillDurationFromInteractionWithAutofill,
|
| - void(const TimeDelta& duration));
|
| - MOCK_CONST_METHOD1(LogFormFillDurationFromInteractionWithoutAutofill,
|
| - void(const TimeDelta& duration));
|
| - MOCK_CONST_METHOD1(LogIsAutofillEnabledAtPageLoad, void(bool enabled));
|
| - MOCK_CONST_METHOD1(LogIsAutofillEnabledAtStartup, void(bool enabled));
|
| - MOCK_CONST_METHOD1(LogStoredProfileCount, void(size_t num_profiles));
|
| - MOCK_CONST_METHOD1(LogAddressSuggestionsCount, void(size_t num_suggestions));
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(MockAutofillMetrics);
|
| -};
|
| -
|
| class TestPersonalDataManager : public PersonalDataManager {
|
| public:
|
| TestPersonalDataManager()
|
| - : PersonalDataManager("en-US"),
|
| - autofill_enabled_(true) {
|
| - set_metric_logger(new testing::NiceMock<MockAutofillMetrics>());
|
| + : PersonalDataManager("en-US"), autofill_enabled_(true) {
|
| CreateTestAutofillProfiles(&web_profiles_);
|
| }
|
|
|
| @@ -98,11 +56,6 @@ class TestPersonalDataManager : public PersonalDataManager {
|
| // Overridden to avoid a trip to the database.
|
| virtual void LoadCreditCards() override {}
|
|
|
| - const MockAutofillMetrics* metric_logger() const {
|
| - return static_cast<const MockAutofillMetrics*>(
|
| - PersonalDataManager::metric_logger());
|
| - }
|
| -
|
| void set_autofill_enabled(bool autofill_enabled) {
|
| autofill_enabled_ = autofill_enabled;
|
| }
|
| @@ -111,9 +64,6 @@ class TestPersonalDataManager : public PersonalDataManager {
|
| return autofill_enabled_;
|
| }
|
|
|
| - MOCK_METHOD1(SaveImportedCreditCard,
|
| - std::string(const CreditCard& imported_credit_card));
|
| -
|
| private:
|
| void CreateTestAutofillProfiles(ScopedVector<AutofillProfile>* profiles) {
|
| AutofillProfile* profile = new AutofillProfile;
|
| @@ -168,9 +118,7 @@ class TestAutofillManager : public AutofillManager {
|
| AutofillClient* autofill_client,
|
| TestPersonalDataManager* personal_manager)
|
| : AutofillManager(driver, autofill_client, personal_manager),
|
| - autofill_enabled_(true) {
|
| - set_metric_logger(new testing::NiceMock<MockAutofillMetrics>);
|
| - }
|
| + autofill_enabled_(true) {}
|
| ~TestAutofillManager() override {}
|
|
|
| bool IsAutofillEnabled() const override { return autofill_enabled_; }
|
| @@ -179,11 +127,6 @@ class TestAutofillManager : public AutofillManager {
|
| autofill_enabled_ = autofill_enabled;
|
| }
|
|
|
| - MockAutofillMetrics* metric_logger() {
|
| - return static_cast<MockAutofillMetrics*>(const_cast<AutofillMetrics*>(
|
| - AutofillManager::metric_logger()));
|
| - }
|
| -
|
| void AddSeenForm(const FormData& form,
|
| const std::vector<ServerFieldType>& heuristic_types,
|
| const std::vector<ServerFieldType>& server_types) {
|
| @@ -229,6 +172,10 @@ class TestAutofillManager : public AutofillManager {
|
|
|
| } // namespace
|
|
|
| +// This is defined in the autofill_metrics.cc implementation file.
|
| +int GetFieldTypeGroupMetric(ServerFieldType field_type,
|
| + AutofillMetrics::FieldTypeQualityMetric metric);
|
| +
|
| class AutofillMetricsTest : public testing::Test {
|
| public:
|
| ~AutofillMetricsTest() override;
|
| @@ -331,57 +278,91 @@ TEST_F(AutofillMetricsTest, QualityMetrics) {
|
| // Simulate having seen this form on page load.
|
| autofill_manager_->AddSeenForm(form, heuristic_types, server_types);
|
|
|
| - // Establish our expectations.
|
| - ::testing::InSequence dummy;
|
| - // Autofilled field
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogHeuristicTypePrediction(AutofillMetrics::TYPE_MATCH,
|
| - NAME_FULL));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogServerTypePrediction(AutofillMetrics::TYPE_MISMATCH,
|
| - NAME_FULL));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogOverallTypePrediction(AutofillMetrics::TYPE_MISMATCH,
|
| - NAME_FULL));
|
| - // Non-autofilled field for which we had data
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogHeuristicTypePrediction(AutofillMetrics::TYPE_MISMATCH,
|
| - EMAIL_ADDRESS));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogServerTypePrediction(AutofillMetrics::TYPE_MATCH,
|
| - EMAIL_ADDRESS));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogOverallTypePrediction(AutofillMetrics::TYPE_MATCH,
|
| - EMAIL_ADDRESS));
|
| - // Empty field
|
| - // Unknown field
|
| - // <select> field
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogHeuristicTypePrediction(AutofillMetrics::TYPE_UNKNOWN,
|
| - ADDRESS_HOME_COUNTRY));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogServerTypePrediction(AutofillMetrics::TYPE_UNKNOWN,
|
| - ADDRESS_HOME_COUNTRY));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogOverallTypePrediction(AutofillMetrics::TYPE_UNKNOWN,
|
| - ADDRESS_HOME_COUNTRY));
|
| - // Phone field
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogHeuristicTypePrediction(AutofillMetrics::TYPE_MATCH,
|
| - PHONE_HOME_WHOLE_NUMBER));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogServerTypePrediction(AutofillMetrics::TYPE_MATCH,
|
| - PHONE_HOME_WHOLE_NUMBER));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogOverallTypePrediction(AutofillMetrics::TYPE_MATCH,
|
| - PHONE_HOME_WHOLE_NUMBER));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::SUBMITTED_FILLABLE_FORM_AUTOFILLED_SOME));
|
| -
|
| // Simulate form submission.
|
| - EXPECT_NO_FATAL_FAILURE(autofill_manager_->FormSubmitted(form,
|
| - TimeTicks::Now()));
|
| + base::HistogramTester histogram_tester;
|
| + autofill_manager_->FormSubmitted(form, TimeTicks::Now());
|
| +
|
| + // Heuristic predictions.
|
| + // Unknown:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.HeuristicType",
|
| + AutofillMetrics::TYPE_UNKNOWN, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.HeuristicType.ByFieldType",
|
| + GetFieldTypeGroupMetric(ADDRESS_HOME_COUNTRY,
|
| + AutofillMetrics::TYPE_UNKNOWN),
|
| + 1);
|
| + // Match:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.HeuristicType",
|
| + AutofillMetrics::TYPE_MATCH, 2);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.HeuristicType.ByFieldType",
|
| + GetFieldTypeGroupMetric(NAME_FULL, AutofillMetrics::TYPE_MATCH), 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.HeuristicType.ByFieldType",
|
| + GetFieldTypeGroupMetric(PHONE_HOME_WHOLE_NUMBER,
|
| + AutofillMetrics::TYPE_MATCH),
|
| + 1);
|
| + // Mismatch:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.HeuristicType",
|
| + AutofillMetrics::TYPE_MISMATCH, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.HeuristicType.ByFieldType",
|
| + GetFieldTypeGroupMetric(EMAIL_ADDRESS, AutofillMetrics::TYPE_MISMATCH),
|
| + 1);
|
| +
|
| + // Server predictions:
|
| + // Unknown:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.ServerType",
|
| + AutofillMetrics::TYPE_UNKNOWN, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.ServerType.ByFieldType",
|
| + GetFieldTypeGroupMetric(ADDRESS_HOME_COUNTRY,
|
| + AutofillMetrics::TYPE_UNKNOWN),
|
| + 1);
|
| + // Match:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.ServerType",
|
| + AutofillMetrics::TYPE_MATCH, 2);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.ServerType.ByFieldType",
|
| + GetFieldTypeGroupMetric(EMAIL_ADDRESS, AutofillMetrics::TYPE_MATCH), 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.ServerType.ByFieldType",
|
| + GetFieldTypeGroupMetric(PHONE_HOME_WHOLE_NUMBER,
|
| + AutofillMetrics::TYPE_MATCH),
|
| + 1);
|
| + // Mismatch:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.ServerType",
|
| + AutofillMetrics::TYPE_MISMATCH, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.ServerType.ByFieldType",
|
| + GetFieldTypeGroupMetric(NAME_FULL, AutofillMetrics::TYPE_MISMATCH), 1);
|
| +
|
| + // Overall predictions:
|
| + // Unknown:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.PredictedType",
|
| + AutofillMetrics::TYPE_UNKNOWN, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.PredictedType.ByFieldType",
|
| + GetFieldTypeGroupMetric(ADDRESS_HOME_COUNTRY,
|
| + AutofillMetrics::TYPE_UNKNOWN),
|
| + 1);
|
| + // Match:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.PredictedType",
|
| + AutofillMetrics::TYPE_MATCH, 2);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.PredictedType.ByFieldType",
|
| + GetFieldTypeGroupMetric(EMAIL_ADDRESS, AutofillMetrics::TYPE_MATCH), 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.PredictedType.ByFieldType",
|
| + GetFieldTypeGroupMetric(PHONE_HOME_WHOLE_NUMBER,
|
| + AutofillMetrics::TYPE_MATCH),
|
| + 1);
|
| + // Mismatch:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.PredictedType",
|
| + AutofillMetrics::TYPE_MISMATCH, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.PredictedType.ByFieldType",
|
| + GetFieldTypeGroupMetric(NAME_FULL, AutofillMetrics::TYPE_MISMATCH), 1);
|
| }
|
|
|
| // Test that we behave sanely when the cached form differs from the submitted
|
| @@ -437,53 +418,92 @@ TEST_F(AutofillMetricsTest, SaneMetricsWithCacheMismatch) {
|
| form.fields.push_back(cached_fields[3]);
|
| form.fields.push_back(cached_fields[0]);
|
|
|
| - // Establish our expectations.
|
| - ::testing::InSequence dummy;
|
| - // New field
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogHeuristicTypePrediction(AutofillMetrics::TYPE_UNKNOWN,
|
| - ADDRESS_HOME_STATE));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogServerTypePrediction(AutofillMetrics::TYPE_UNKNOWN,
|
| - ADDRESS_HOME_STATE));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogOverallTypePrediction(AutofillMetrics::TYPE_UNKNOWN,
|
| - ADDRESS_HOME_STATE));
|
| - // Only heuristics match
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogHeuristicTypePrediction(AutofillMetrics::TYPE_MATCH,
|
| - ADDRESS_HOME_CITY));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogServerTypePrediction(AutofillMetrics::TYPE_MISMATCH,
|
| - ADDRESS_HOME_CITY));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogOverallTypePrediction(AutofillMetrics::TYPE_MISMATCH,
|
| - ADDRESS_HOME_CITY));
|
| - // Both mismatch
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogHeuristicTypePrediction(AutofillMetrics::TYPE_MISMATCH,
|
| - EMAIL_ADDRESS));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogServerTypePrediction(AutofillMetrics::TYPE_MISMATCH,
|
| - EMAIL_ADDRESS));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogOverallTypePrediction(AutofillMetrics::TYPE_MISMATCH,
|
| - EMAIL_ADDRESS));
|
| - // Unknown
|
| - // Both match
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogHeuristicTypePrediction(AutofillMetrics::TYPE_MATCH,
|
| - NAME_FULL));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogServerTypePrediction(AutofillMetrics::TYPE_MATCH,
|
| - NAME_FULL));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogOverallTypePrediction(AutofillMetrics::TYPE_MATCH,
|
| - NAME_FULL));
|
| -
|
| // Simulate form submission.
|
| - EXPECT_NO_FATAL_FAILURE(autofill_manager_->FormSubmitted(form,
|
| - TimeTicks::Now()));
|
| + base::HistogramTester histogram_tester;
|
| + autofill_manager_->FormSubmitted(form, TimeTicks::Now());
|
| +
|
| + // Heuristic predictions.
|
| + // Unknown:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.HeuristicType",
|
| + AutofillMetrics::TYPE_UNKNOWN, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.HeuristicType.ByFieldType",
|
| + GetFieldTypeGroupMetric(ADDRESS_HOME_STATE,
|
| + AutofillMetrics::TYPE_UNKNOWN),
|
| + 1);
|
| + // Match:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.HeuristicType",
|
| + AutofillMetrics::TYPE_MATCH, 2);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.HeuristicType.ByFieldType",
|
| + GetFieldTypeGroupMetric(ADDRESS_HOME_CITY, AutofillMetrics::TYPE_MATCH),
|
| + 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.HeuristicType.ByFieldType",
|
| + GetFieldTypeGroupMetric(NAME_FULL, AutofillMetrics::TYPE_MATCH), 1);
|
| + // Mismatch:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.HeuristicType",
|
| + AutofillMetrics::TYPE_MISMATCH, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.HeuristicType.ByFieldType",
|
| + GetFieldTypeGroupMetric(EMAIL_ADDRESS, AutofillMetrics::TYPE_MISMATCH),
|
| + 1);
|
| +
|
| + // Server predictions:
|
| + // Unknown:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.ServerType",
|
| + AutofillMetrics::TYPE_UNKNOWN, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.ServerType.ByFieldType",
|
| + GetFieldTypeGroupMetric(ADDRESS_HOME_STATE,
|
| + AutofillMetrics::TYPE_UNKNOWN),
|
| + 1);
|
| + // Match:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.ServerType",
|
| + AutofillMetrics::TYPE_MATCH, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.ServerType.ByFieldType",
|
| + GetFieldTypeGroupMetric(NAME_FULL, AutofillMetrics::TYPE_MATCH), 1);
|
| + // Mismatch:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.ServerType",
|
| + AutofillMetrics::TYPE_MISMATCH, 2);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.ServerType.ByFieldType",
|
| + GetFieldTypeGroupMetric(ADDRESS_HOME_CITY,
|
| + AutofillMetrics::TYPE_MISMATCH),
|
| + 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.ServerType.ByFieldType",
|
| + GetFieldTypeGroupMetric(EMAIL_ADDRESS, AutofillMetrics::TYPE_MISMATCH),
|
| + 1);
|
| +
|
| + // Overall predictions:
|
| + // Unknown:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.PredictedType",
|
| + AutofillMetrics::TYPE_UNKNOWN, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.PredictedType.ByFieldType",
|
| + GetFieldTypeGroupMetric(ADDRESS_HOME_STATE,
|
| + AutofillMetrics::TYPE_UNKNOWN),
|
| + 1);
|
| + // Match:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.PredictedType",
|
| + AutofillMetrics::TYPE_MATCH, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.PredictedType.ByFieldType",
|
| + GetFieldTypeGroupMetric(NAME_FULL, AutofillMetrics::TYPE_MATCH), 1);
|
| + // Mismatch:
|
| + histogram_tester.ExpectBucketCount("Autofill.Quality.PredictedType",
|
| + AutofillMetrics::TYPE_MISMATCH, 2);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.PredictedType.ByFieldType",
|
| + GetFieldTypeGroupMetric(ADDRESS_HOME_CITY,
|
| + AutofillMetrics::TYPE_MISMATCH),
|
| + 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.Quality.PredictedType.ByFieldType",
|
| + GetFieldTypeGroupMetric(EMAIL_ADDRESS, AutofillMetrics::TYPE_MISMATCH),
|
| + 1);
|
| }
|
|
|
| // Verify that we correctly log metrics regarding developer engagement.
|
| @@ -504,11 +524,10 @@ TEST_F(AutofillMetricsTest, DeveloperEngagement) {
|
|
|
| // Ensure no metrics are logged when loading a non-fillable form.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogDeveloperEngagementMetric(_)).Times(0);
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->OnFormsSeen(forms, TimeTicks());
|
| autofill_manager_->Reset();
|
| - Mock::VerifyAndClearExpectations(autofill_manager_->metric_logger());
|
| + histogram_tester.ExpectTotalCount("Autofill.DeveloperEngagement", 0);
|
| }
|
|
|
| // Add another field to the form, so that it becomes fillable.
|
| @@ -518,17 +537,12 @@ TEST_F(AutofillMetricsTest, DeveloperEngagement) {
|
| // Expect only the "form parsed" metric to be logged; no metrics about
|
| // author-specified field type hints.
|
| {
|
| - EXPECT_CALL(
|
| - *autofill_manager_->metric_logger(),
|
| - LogDeveloperEngagementMetric(
|
| - AutofillMetrics::FILLABLE_FORM_PARSED)).Times(1);
|
| - EXPECT_CALL(
|
| - *autofill_manager_->metric_logger(),
|
| - LogDeveloperEngagementMetric(
|
| - AutofillMetrics::FILLABLE_FORM_CONTAINS_TYPE_HINTS)).Times(0);
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->OnFormsSeen(forms, TimeTicks());
|
| autofill_manager_->Reset();
|
| - Mock::VerifyAndClearExpectations(autofill_manager_->metric_logger());
|
| + histogram_tester.ExpectUniqueSample("Autofill.DeveloperEngagement",
|
| + AutofillMetrics::FILLABLE_FORM_PARSED,
|
| + 1);
|
| }
|
|
|
| // Add some fields with an author-specified field type to the form.
|
| @@ -549,49 +563,51 @@ TEST_F(AutofillMetricsTest, DeveloperEngagement) {
|
| // Expect both the "form parsed" metric and the author-specified field type
|
| // hints metric to be logged.
|
| {
|
| - EXPECT_CALL(
|
| - *autofill_manager_->metric_logger(),
|
| - LogDeveloperEngagementMetric(
|
| - AutofillMetrics::FILLABLE_FORM_PARSED)).Times(1);
|
| - EXPECT_CALL(
|
| - *autofill_manager_->metric_logger(),
|
| - LogDeveloperEngagementMetric(
|
| - AutofillMetrics::FILLABLE_FORM_CONTAINS_TYPE_HINTS)).Times(1);
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->OnFormsSeen(forms, TimeTicks());
|
| autofill_manager_->Reset();
|
| - Mock::VerifyAndClearExpectations(autofill_manager_->metric_logger());
|
| + histogram_tester.ExpectBucketCount("Autofill.DeveloperEngagement",
|
| + AutofillMetrics::FILLABLE_FORM_PARSED,
|
| + 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.DeveloperEngagement",
|
| + AutofillMetrics::FILLABLE_FORM_CONTAINS_TYPE_HINTS, 1);
|
| }
|
| }
|
|
|
| // Test that the profile count is logged correctly.
|
| TEST_F(AutofillMetricsTest, StoredProfileCount) {
|
| // The metric should be logged when the profiles are first loaded.
|
| - EXPECT_CALL(*personal_data_->metric_logger(),
|
| - LogStoredProfileCount(2)).Times(1);
|
| - personal_data_->LoadProfiles();
|
| + {
|
| + base::HistogramTester histogram_tester;
|
| + personal_data_->LoadProfiles();
|
| + histogram_tester.ExpectUniqueSample("Autofill.StoredProfileCount", 2, 1);
|
| + }
|
|
|
| // The metric should only be logged once.
|
| - EXPECT_CALL(*personal_data_->metric_logger(),
|
| - LogStoredProfileCount(::testing::_)).Times(0);
|
| - personal_data_->LoadProfiles();
|
| + {
|
| + base::HistogramTester histogram_tester;
|
| + personal_data_->LoadProfiles();
|
| + histogram_tester.ExpectTotalCount("Autofill.StoredProfileCount", 0);
|
| + }
|
| }
|
|
|
| // Test that we correctly log when Autofill is enabled.
|
| TEST_F(AutofillMetricsTest, AutofillIsEnabledAtStartup) {
|
| + base::HistogramTester histogram_tester;
|
| personal_data_->set_autofill_enabled(true);
|
| - EXPECT_CALL(*personal_data_->metric_logger(),
|
| - LogIsAutofillEnabledAtStartup(true)).Times(1);
|
| personal_data_->Init(
|
| autofill_client_.GetDatabase(), autofill_client_.GetPrefs(), false);
|
| + histogram_tester.ExpectUniqueSample("Autofill.IsEnabled.Startup", true, 1);
|
| }
|
|
|
| // Test that we correctly log when Autofill is disabled.
|
| TEST_F(AutofillMetricsTest, AutofillIsDisabledAtStartup) {
|
| + base::HistogramTester histogram_tester;
|
| personal_data_->set_autofill_enabled(false);
|
| - EXPECT_CALL(*personal_data_->metric_logger(),
|
| - LogIsAutofillEnabledAtStartup(false)).Times(1);
|
| personal_data_->Init(
|
| autofill_client_.GetDatabase(), autofill_client_.GetPrefs(), false);
|
| + histogram_tester.ExpectUniqueSample("Autofill.IsEnabled.Startup", false, 1);
|
| }
|
|
|
| // Test that we log the number of Autofill suggestions when filling a form.
|
| @@ -619,66 +635,66 @@ TEST_F(AutofillMetricsTest, AddressSuggestionsCount) {
|
| // |form_structure| will be owned by |autofill_manager_|.
|
| autofill_manager_->AddSeenForm(form, field_types, field_types);
|
|
|
| - // Establish our expectations.
|
| - ::testing::InSequence dummy;
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogAddressSuggestionsCount(2)).Times(1);
|
| -
|
| - // Simulate activating the autofill popup for the phone field.
|
| - autofill_manager_->OnQueryFormFieldAutofill(
|
| - 0, form, field, gfx::Rect(), false);
|
| + {
|
| + // Simulate activating the autofill popup for the phone field.
|
| + base::HistogramTester histogram_tester;
|
| + autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(),
|
| + false);
|
| + histogram_tester.ExpectUniqueSample("Autofill.AddressSuggestionsCount", 2,
|
| + 1);
|
| + }
|
|
|
| - // Simulate activating the autofill popup for the email field after typing.
|
| - // No new metric should be logged, since we're still on the same page.
|
| - test::CreateTestFormField("Email", "email", "b", "email", &field);
|
| - autofill_manager_->OnQueryFormFieldAutofill(
|
| - 0, form, field, gfx::Rect(), false);
|
| + {
|
| + // Simulate activating the autofill popup for the email field after typing.
|
| + // No new metric should be logged, since we're still on the same page.
|
| + test::CreateTestFormField("Email", "email", "b", "email", &field);
|
| + base::HistogramTester histogram_tester;
|
| + autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(),
|
| + false);
|
| + histogram_tester.ExpectTotalCount("Autofill.AddressSuggestionsCount", 0);
|
| + }
|
|
|
| // Reset the autofill manager state.
|
| autofill_manager_->Reset();
|
| autofill_manager_->AddSeenForm(form, field_types, field_types);
|
|
|
| - // Establish our expectations.
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogAddressSuggestionsCount(1)).Times(1);
|
| -
|
| - // Simulate activating the autofill popup for the email field after typing.
|
| - autofill_manager_->OnQueryFormFieldAutofill(
|
| - 0, form, field, gfx::Rect(), false);
|
| + {
|
| + // Simulate activating the autofill popup for the email field after typing.
|
| + base::HistogramTester histogram_tester;
|
| + autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(),
|
| + false);
|
| + histogram_tester.ExpectUniqueSample("Autofill.AddressSuggestionsCount", 1,
|
| + 1);
|
| + }
|
|
|
| // Reset the autofill manager state again.
|
| autofill_manager_->Reset();
|
| autofill_manager_->AddSeenForm(form, field_types, field_types);
|
|
|
| - // Establish our expectations.
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogAddressSuggestionsCount(::testing::_)).Times(0);
|
| -
|
| - // Simulate activating the autofill popup for the email field after typing.
|
| - form.fields[0].is_autofilled = true;
|
| - autofill_manager_->OnQueryFormFieldAutofill(
|
| - 0, form, field, gfx::Rect(), false);
|
| + {
|
| + // Simulate activating the autofill popup for the email field after typing.
|
| + form.fields[0].is_autofilled = true;
|
| + base::HistogramTester histogram_tester;
|
| + autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(),
|
| + false);
|
| + histogram_tester.ExpectTotalCount("Autofill.AddressSuggestionsCount", 0);
|
| + }
|
| }
|
|
|
| -// Test that we log whether Autofill is enabled when filling a form.
|
| +// Test that we log that Autofill is enabled when filling a form.
|
| TEST_F(AutofillMetricsTest, AutofillIsEnabledAtPageLoad) {
|
| - // Establish our expectations.
|
| - ::testing::InSequence dummy;
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogIsAutofillEnabledAtPageLoad(true)).Times(1);
|
| -
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->set_autofill_enabled(true);
|
| autofill_manager_->OnFormsSeen(std::vector<FormData>(), TimeTicks());
|
| + histogram_tester.ExpectUniqueSample("Autofill.IsEnabled.PageLoad", true, 1);
|
| +}
|
|
|
| - // Reset the autofill manager state.
|
| - autofill_manager_->Reset();
|
| -
|
| - // Establish our expectations.
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogIsAutofillEnabledAtPageLoad(false)).Times(1);
|
| -
|
| +// Test that we log that Autofill is disabled when filling a form.
|
| +TEST_F(AutofillMetricsTest, AutofillIsDisabledAtPageLoad) {
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->set_autofill_enabled(false);
|
| autofill_manager_->OnFormsSeen(std::vector<FormData>(), TimeTicks());
|
| + histogram_tester.ExpectUniqueSample("Autofill.IsEnabled.PageLoad", false, 1);
|
| }
|
|
|
| // Verify that we correctly log user happiness metrics dealing with form loading
|
| @@ -701,31 +717,17 @@ TEST_F(AutofillMetricsTest, UserHappinessFormLoadAndSubmission) {
|
|
|
| // Expect no notifications when the form is first seen.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(AutofillMetrics::FORMS_LOADED)).Times(0);
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->OnFormsSeen(forms, TimeTicks());
|
| + histogram_tester.ExpectTotalCount("Autofill.UserHappiness", 0);
|
| }
|
|
|
|
|
| // Expect no notifications when the form is submitted.
|
| {
|
| - EXPECT_CALL(
|
| - *autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::SUBMITTED_FILLABLE_FORM_AUTOFILLED_ALL)).Times(0);
|
| - EXPECT_CALL(
|
| - *autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::SUBMITTED_FILLABLE_FORM_AUTOFILLED_SOME)).Times(0);
|
| - EXPECT_CALL(
|
| - *autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::SUBMITTED_FILLABLE_FORM_AUTOFILLED_NONE)).Times(0);
|
| - EXPECT_CALL(
|
| - *autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::SUBMITTED_NON_FILLABLE_FORM)).Times(0);
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->FormSubmitted(form, TimeTicks::Now());
|
| + histogram_tester.ExpectTotalCount("Autofill.UserHappiness", 0);
|
| }
|
|
|
| // Add more fields to the form.
|
| @@ -737,17 +739,19 @@ TEST_F(AutofillMetricsTest, UserHappinessFormLoadAndSubmission) {
|
|
|
| // Expect a notification when the form is first seen.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(AutofillMetrics::FORMS_LOADED));
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->OnFormsSeen(forms, TimeTicks());
|
| + histogram_tester.ExpectUniqueSample("Autofill.UserHappiness",
|
| + AutofillMetrics::FORMS_LOADED, 1);
|
| }
|
|
|
| // Expect a notification when the form is submitted.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::SUBMITTED_NON_FILLABLE_FORM));
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->FormSubmitted(form, TimeTicks::Now());
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.UserHappiness", AutofillMetrics::SUBMITTED_NON_FILLABLE_FORM,
|
| + 1);
|
| }
|
|
|
| // Fill in two of the fields.
|
| @@ -757,10 +761,11 @@ TEST_F(AutofillMetricsTest, UserHappinessFormLoadAndSubmission) {
|
|
|
| // Expect a notification when the form is submitted.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::SUBMITTED_NON_FILLABLE_FORM));
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->FormSubmitted(form, TimeTicks::Now());
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.UserHappiness", AutofillMetrics::SUBMITTED_NON_FILLABLE_FORM,
|
| + 1);
|
| }
|
|
|
| // Fill in the third field.
|
| @@ -769,10 +774,11 @@ TEST_F(AutofillMetricsTest, UserHappinessFormLoadAndSubmission) {
|
|
|
| // Expect notifications when the form is submitted.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::SUBMITTED_FILLABLE_FORM_AUTOFILLED_NONE));
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->FormSubmitted(form, TimeTicks::Now());
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.UserHappiness",
|
| + AutofillMetrics::SUBMITTED_FILLABLE_FORM_AUTOFILLED_NONE, 1);
|
| }
|
|
|
|
|
| @@ -782,10 +788,11 @@ TEST_F(AutofillMetricsTest, UserHappinessFormLoadAndSubmission) {
|
|
|
| // Expect notifications when the form is submitted.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::SUBMITTED_FILLABLE_FORM_AUTOFILLED_SOME));
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->FormSubmitted(form, TimeTicks::Now());
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.UserHappiness",
|
| + AutofillMetrics::SUBMITTED_FILLABLE_FORM_AUTOFILLED_SOME, 1);
|
| }
|
|
|
| // Mark all of the fillable fields as autofilled.
|
| @@ -795,10 +802,11 @@ TEST_F(AutofillMetricsTest, UserHappinessFormLoadAndSubmission) {
|
|
|
| // Expect notifications when the form is submitted.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::SUBMITTED_FILLABLE_FORM_AUTOFILLED_ALL));
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->FormSubmitted(form, TimeTicks::Now());
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.UserHappiness",
|
| + AutofillMetrics::SUBMITTED_FILLABLE_FORM_AUTOFILLED_ALL, 1);
|
| }
|
|
|
| // Clear out the third field's value.
|
| @@ -807,10 +815,11 @@ TEST_F(AutofillMetricsTest, UserHappinessFormLoadAndSubmission) {
|
|
|
| // Expect notifications when the form is submitted.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::SUBMITTED_NON_FILLABLE_FORM));
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->FormSubmitted(form, TimeTicks::Now());
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.UserHappiness", AutofillMetrics::SUBMITTED_NON_FILLABLE_FORM,
|
| + 1);
|
| }
|
| }
|
|
|
| @@ -836,60 +845,54 @@ TEST_F(AutofillMetricsTest, UserHappinessFormInteraction) {
|
|
|
| // Expect a notification when the form is first seen.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(AutofillMetrics::FORMS_LOADED));
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->OnFormsSeen(forms, TimeTicks());
|
| + histogram_tester.ExpectUniqueSample("Autofill.UserHappiness",
|
| + AutofillMetrics::FORMS_LOADED, 1);
|
| }
|
|
|
| // Simulate typing.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(AutofillMetrics::USER_DID_TYPE));
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->OnTextFieldDidChange(form, form.fields.front(),
|
| TimeTicks());
|
| + histogram_tester.ExpectUniqueSample("Autofill.UserHappiness",
|
| + AutofillMetrics::USER_DID_TYPE, 1);
|
| }
|
|
|
| // Simulate suggestions shown twice for a single edit (i.e. multiple
|
| // keystrokes in a single field).
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::SUGGESTIONS_SHOWN)).Times(1);
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::SUGGESTIONS_SHOWN_ONCE)).Times(1);
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->DidShowSuggestions(true);
|
| autofill_manager_->DidShowSuggestions(false);
|
| + histogram_tester.ExpectBucketCount("Autofill.UserHappiness",
|
| + AutofillMetrics::SUGGESTIONS_SHOWN, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.UserHappiness", AutofillMetrics::SUGGESTIONS_SHOWN_ONCE, 1);
|
| }
|
|
|
| // Simulate suggestions shown for a different field.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(AutofillMetrics::SUGGESTIONS_SHOWN));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::SUGGESTIONS_SHOWN_ONCE)).Times(0);
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->DidShowSuggestions(true);
|
| + histogram_tester.ExpectUniqueSample("Autofill.UserHappiness",
|
| + AutofillMetrics::SUGGESTIONS_SHOWN, 1);
|
| }
|
|
|
| // Simulate invoking autofill.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(AutofillMetrics::USER_DID_AUTOFILL));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::USER_DID_AUTOFILL_ONCE));
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->OnDidFillAutofillFormData(TimeTicks());
|
| + histogram_tester.ExpectBucketCount("Autofill.UserHappiness",
|
| + AutofillMetrics::USER_DID_AUTOFILL, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.UserHappiness", AutofillMetrics::USER_DID_AUTOFILL_ONCE, 1);
|
| }
|
|
|
| // Simulate editing an autofilled field.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::USER_DID_EDIT_AUTOFILLED_FIELD));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::USER_DID_EDIT_AUTOFILLED_FIELD_ONCE));
|
| + base::HistogramTester histogram_tester;
|
| PersonalDataManager::GUIDPair guid(
|
| "00000000-0000-0000-0000-000000000001", 0);
|
| PersonalDataManager::GUIDPair empty(std::string(), 0);
|
| @@ -902,22 +905,29 @@ TEST_F(AutofillMetricsTest, UserHappinessFormInteraction) {
|
| // Simulate a second keystroke; make sure we don't log the metric twice.
|
| autofill_manager_->OnTextFieldDidChange(form, form.fields.front(),
|
| TimeTicks());
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.UserHappiness",
|
| + AutofillMetrics::USER_DID_EDIT_AUTOFILLED_FIELD, 1);
|
| + histogram_tester.ExpectBucketCount(
|
| + "Autofill.UserHappiness",
|
| + AutofillMetrics::USER_DID_EDIT_AUTOFILLED_FIELD_ONCE, 1);
|
| }
|
|
|
| // Simulate invoking autofill again.
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(AutofillMetrics::USER_DID_AUTOFILL));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::USER_DID_AUTOFILL_ONCE)).Times(0);
|
| - autofill_manager_->OnDidFillAutofillFormData(TimeTicks());
|
| + {
|
| + base::HistogramTester histogram_tester;
|
| + autofill_manager_->OnDidFillAutofillFormData(TimeTicks());
|
| + histogram_tester.ExpectUniqueSample("Autofill.UserHappiness",
|
| + AutofillMetrics::USER_DID_AUTOFILL, 1);
|
| + }
|
|
|
| // Simulate editing another autofilled field.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogUserHappinessMetric(
|
| - AutofillMetrics::USER_DID_EDIT_AUTOFILLED_FIELD));
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->OnTextFieldDidChange(form, form.fields[1], TimeTicks());
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.UserHappiness",
|
| + AutofillMetrics::USER_DID_EDIT_AUTOFILLED_FIELD, 1);
|
| }
|
| }
|
|
|
| @@ -961,99 +971,92 @@ TEST_F(AutofillMetricsTest, FormFillDuration) {
|
| // Expect only form load metrics to be logged if the form is submitted without
|
| // user interaction.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromLoadWithAutofill(_)).Times(0);
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromLoadWithoutAutofill(
|
| - TimeDelta::FromInternalValue(16)));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromInteractionWithAutofill(_)).Times(0);
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromInteractionWithoutAutofill(_)).Times(0);
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1));
|
| autofill_manager_->FormSubmitted(form, TimeTicks::FromInternalValue(17));
|
| +
|
| + histogram_tester.ExpectTotalCount(
|
| + "Autofill.FillDuration.FromLoad.WithAutofill", 0);
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.FillDuration.FromLoad.WithoutAutofill", 16, 1);
|
| + histogram_tester.ExpectTotalCount(
|
| + "Autofill.FillDuration.FromInteraction.WithAutofill", 0);
|
| + histogram_tester.ExpectTotalCount(
|
| + "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0);
|
| +
|
| autofill_manager_->Reset();
|
| - Mock::VerifyAndClearExpectations(autofill_manager_->metric_logger());
|
| }
|
|
|
| // Expect metric to be logged if the user manually edited a form field.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromLoadWithAutofill(_)).Times(0);
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromLoadWithoutAutofill(
|
| - TimeDelta::FromInternalValue(16)));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromInteractionWithAutofill(_)).Times(0);
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromInteractionWithoutAutofill(
|
| - TimeDelta::FromInternalValue(14)));
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1));
|
| autofill_manager_->OnTextFieldDidChange(form, form.fields.front(),
|
| TimeTicks::FromInternalValue(3));
|
| autofill_manager_->FormSubmitted(form, TimeTicks::FromInternalValue(17));
|
| +
|
| + histogram_tester.ExpectTotalCount(
|
| + "Autofill.FillDuration.FromLoad.WithAutofill", 0);
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.FillDuration.FromLoad.WithoutAutofill", 16, 1);
|
| + histogram_tester.ExpectTotalCount(
|
| + "Autofill.FillDuration.FromInteraction.WithAutofill", 0);
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.FillDuration.FromInteraction.WithoutAutofill", 14, 1);
|
| +
|
| autofill_manager_->Reset();
|
| - Mock::VerifyAndClearExpectations(autofill_manager_->metric_logger());
|
| }
|
|
|
| // Expect metric to be logged if the user autofilled the form.
|
| form.fields[0].is_autofilled = true;
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromLoadWithAutofill(
|
| - TimeDelta::FromInternalValue(16)));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromLoadWithoutAutofill(_)).Times(0);
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromInteractionWithAutofill(
|
| - TimeDelta::FromInternalValue(12)));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromInteractionWithoutAutofill(_)).Times(0);
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1));
|
| autofill_manager_->OnDidFillAutofillFormData(
|
| TimeTicks::FromInternalValue(5));
|
| autofill_manager_->FormSubmitted(form, TimeTicks::FromInternalValue(17));
|
| +
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.FillDuration.FromLoad.WithAutofill", 16, 1);
|
| + histogram_tester.ExpectTotalCount(
|
| + "Autofill.FillDuration.FromLoad.WithoutAutofill", 0);
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.FillDuration.FromInteraction.WithAutofill", 12, 1);
|
| + histogram_tester.ExpectTotalCount(
|
| + "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0);
|
| +
|
| autofill_manager_->Reset();
|
| - Mock::VerifyAndClearExpectations(autofill_manager_->metric_logger());
|
| }
|
|
|
| // Expect metric to be logged if the user both manually filled some fields
|
| // and autofilled others. Messages can arrive out of order, so make sure they
|
| // take precedence appropriately.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromLoadWithAutofill(
|
| - TimeDelta::FromInternalValue(16)));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromLoadWithoutAutofill(_)).Times(0);
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromInteractionWithAutofill(
|
| - TimeDelta::FromInternalValue(14)));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromInteractionWithoutAutofill(_)).Times(0);
|
| + base::HistogramTester histogram_tester;
|
| +
|
| autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1));
|
| autofill_manager_->OnDidFillAutofillFormData(
|
| TimeTicks::FromInternalValue(5));
|
| autofill_manager_->OnTextFieldDidChange(form, form.fields.front(),
|
| TimeTicks::FromInternalValue(3));
|
| autofill_manager_->FormSubmitted(form, TimeTicks::FromInternalValue(17));
|
| +
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.FillDuration.FromLoad.WithAutofill", 16, 1);
|
| + histogram_tester.ExpectTotalCount(
|
| + "Autofill.FillDuration.FromLoad.WithoutAutofill", 0);
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.FillDuration.FromInteraction.WithAutofill", 14, 1);
|
| + histogram_tester.ExpectTotalCount(
|
| + "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0);
|
| +
|
| autofill_manager_->Reset();
|
| - Mock::VerifyAndClearExpectations(autofill_manager_->metric_logger());
|
| }
|
|
|
| // Make sure that loading another form doesn't affect metrics from the first
|
| // form.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromLoadWithAutofill(
|
| - TimeDelta::FromInternalValue(16)));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromLoadWithoutAutofill(_)).Times(0);
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromInteractionWithAutofill(
|
| - TimeDelta::FromInternalValue(14)));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromInteractionWithoutAutofill(_)).Times(0);
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1));
|
| autofill_manager_->OnFormsSeen(second_forms,
|
| TimeTicks::FromInternalValue(3));
|
| @@ -1062,29 +1065,39 @@ TEST_F(AutofillMetricsTest, FormFillDuration) {
|
| autofill_manager_->OnTextFieldDidChange(form, form.fields.front(),
|
| TimeTicks::FromInternalValue(3));
|
| autofill_manager_->FormSubmitted(form, TimeTicks::FromInternalValue(17));
|
| +
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.FillDuration.FromLoad.WithAutofill", 16, 1);
|
| + histogram_tester.ExpectTotalCount(
|
| + "Autofill.FillDuration.FromLoad.WithoutAutofill", 0);
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.FillDuration.FromInteraction.WithAutofill", 14, 1);
|
| + histogram_tester.ExpectTotalCount(
|
| + "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0);
|
| +
|
| autofill_manager_->Reset();
|
| - Mock::VerifyAndClearExpectations(autofill_manager_->metric_logger());
|
| }
|
|
|
| // Make sure that submitting a form that was loaded later will report the
|
| // later loading time.
|
| {
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromLoadWithoutAutofill(
|
| - TimeDelta::FromInternalValue(12)));
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromLoadWithAutofill(_)).Times(0);
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromInteractionWithAutofill(_)).Times(0);
|
| - EXPECT_CALL(*autofill_manager_->metric_logger(),
|
| - LogFormFillDurationFromInteractionWithoutAutofill(_)).Times(0);
|
| + base::HistogramTester histogram_tester;
|
| autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1));
|
| autofill_manager_->OnFormsSeen(second_forms,
|
| TimeTicks::FromInternalValue(5));
|
| autofill_manager_->FormSubmitted(second_form,
|
| TimeTicks::FromInternalValue(17));
|
| +
|
| + histogram_tester.ExpectTotalCount(
|
| + "Autofill.FillDuration.FromLoad.WithAutofill", 0);
|
| + histogram_tester.ExpectUniqueSample(
|
| + "Autofill.FillDuration.FromLoad.WithoutAutofill", 12, 1);
|
| + histogram_tester.ExpectTotalCount(
|
| + "Autofill.FillDuration.FromInteraction.WithAutofill", 0);
|
| + histogram_tester.ExpectTotalCount(
|
| + "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0);
|
| +
|
| autofill_manager_->Reset();
|
| - Mock::VerifyAndClearExpectations(autofill_manager_->metric_logger());
|
| }
|
| }
|
|
|
|
|