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

Side by Side Diff: components/autofill/core/browser/autofill_metrics_unittest.cc

Issue 1010263002: [Autofill] Add FormEvent logging for "will submit form". (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: git cl format Created 5 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/autofill/core/browser/autofill_metrics.h" 5 #include "components/autofill/core/browser/autofill_metrics.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 for (size_t i = 0; i < empty_form.fields.size(); ++i) { 222 for (size_t i = 0; i < empty_form.fields.size(); ++i) {
223 empty_form.fields[i].value = base::string16(); 223 empty_form.fields[i].value = base::string16();
224 } 224 }
225 225
226 // |form_structure| will be owned by |form_structures()|. 226 // |form_structure| will be owned by |form_structures()|.
227 TestFormStructure* form_structure = new TestFormStructure(empty_form); 227 TestFormStructure* form_structure = new TestFormStructure(empty_form);
228 form_structure->SetFieldTypes(heuristic_types, server_types); 228 form_structure->SetFieldTypes(heuristic_types, server_types);
229 form_structures()->push_back(form_structure); 229 form_structures()->push_back(form_structure);
230 } 230 }
231 231
232 void WillSubmitForm(const FormData& form, const TimeTicks& timestamp) { 232 // Calls both OnWillSubmitForm and OnFormSubmitted.
Ilya Sherman 2015/03/18 22:42:10 Please add test coverage for OnWillSubmitForm bein
Mathieu 2015/03/23 15:24:02 Done.
233 void SubmitForm(const FormData& form, const TimeTicks& timestamp) {
233 run_loop_.reset(new base::RunLoop()); 234 run_loop_.reset(new base::RunLoop());
234 if (!OnWillSubmitForm(form, timestamp)) 235 if (!OnWillSubmitForm(form, timestamp))
235 return; 236 return;
236 237
237 // Wait for the asynchronous OnWillSubmitForm() call to complete. 238 // Wait for the asynchronous OnWillSubmitForm() call to complete.
238 run_loop_->Run(); 239 run_loop_->Run();
240
241 OnFormSubmitted(form);
239 } 242 }
240 243
241 void UploadFormDataAsyncCallback( 244 void UploadFormDataAsyncCallback(
242 const FormStructure* submitted_form, 245 const FormStructure* submitted_form,
243 const base::TimeTicks& load_time, 246 const base::TimeTicks& load_time,
244 const base::TimeTicks& interaction_time, 247 const base::TimeTicks& interaction_time,
245 const base::TimeTicks& submission_time) override { 248 const base::TimeTicks& submission_time) override {
246 run_loop_->Quit(); 249 run_loop_->Quit();
247 250
248 AutofillManager::UploadFormDataAsyncCallback(submitted_form, 251 AutofillManager::UploadFormDataAsyncCallback(submitted_form,
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 field.is_autofilled = true; 373 field.is_autofilled = true;
371 form.fields.push_back(field); 374 form.fields.push_back(field);
372 heuristic_types.push_back(PHONE_HOME_CITY_AND_NUMBER); 375 heuristic_types.push_back(PHONE_HOME_CITY_AND_NUMBER);
373 server_types.push_back(PHONE_HOME_WHOLE_NUMBER); 376 server_types.push_back(PHONE_HOME_WHOLE_NUMBER);
374 377
375 // Simulate having seen this form on page load. 378 // Simulate having seen this form on page load.
376 autofill_manager_->AddSeenForm(form, heuristic_types, server_types); 379 autofill_manager_->AddSeenForm(form, heuristic_types, server_types);
377 380
378 // Simulate form submission. 381 // Simulate form submission.
379 base::HistogramTester histogram_tester; 382 base::HistogramTester histogram_tester;
380 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 383 autofill_manager_->SubmitForm(form, TimeTicks::Now());
381 384
382 // Heuristic predictions. 385 // Heuristic predictions.
383 // Unknown: 386 // Unknown:
384 histogram_tester.ExpectBucketCount("Autofill.Quality.HeuristicType", 387 histogram_tester.ExpectBucketCount("Autofill.Quality.HeuristicType",
385 AutofillMetrics::TYPE_UNKNOWN, 1); 388 AutofillMetrics::TYPE_UNKNOWN, 1);
386 histogram_tester.ExpectBucketCount( 389 histogram_tester.ExpectBucketCount(
387 "Autofill.Quality.HeuristicType.ByFieldType", 390 "Autofill.Quality.HeuristicType.ByFieldType",
388 GetFieldTypeGroupMetric(ADDRESS_HOME_COUNTRY, 391 GetFieldTypeGroupMetric(ADDRESS_HOME_COUNTRY,
389 AutofillMetrics::TYPE_UNKNOWN), 392 AutofillMetrics::TYPE_UNKNOWN),
390 1); 393 1);
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 test::CreateTestFormField("Phone", "phone", "2345678901", "tel", &field); 495 test::CreateTestFormField("Phone", "phone", "2345678901", "tel", &field);
493 field.is_autofilled = true; 496 field.is_autofilled = true;
494 form.fields.push_back(field); 497 form.fields.push_back(field);
495 heuristic_types.push_back(PHONE_HOME_CITY_AND_NUMBER); 498 heuristic_types.push_back(PHONE_HOME_CITY_AND_NUMBER);
496 server_types.push_back(EMAIL_ADDRESS); 499 server_types.push_back(EMAIL_ADDRESS);
497 500
498 // Simulate having seen this form on page load. 501 // Simulate having seen this form on page load.
499 autofill_manager_->AddSeenForm(form, heuristic_types, server_types); 502 autofill_manager_->AddSeenForm(form, heuristic_types, server_types);
500 503
501 // Simulate form submission. 504 // Simulate form submission.
502 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 505 autofill_manager_->SubmitForm(form, TimeTicks::Now());
503 506
504 // The number of mismatches did not trigger the RAPPOR metric logging. 507 // The number of mismatches did not trigger the RAPPOR metric logging.
505 EXPECT_EQ(0, autofill_client_.test_rappor_service()->GetReportsCount()); 508 EXPECT_EQ(0, autofill_client_.test_rappor_service()->GetReportsCount());
506 } 509 }
507 510
508 // Test that we don't log RAPPOR metrics in the case heuristics and/or server 511 // Test that we don't log RAPPOR metrics in the case heuristics and/or server
509 // have no data. 512 // have no data.
510 TEST_F(AutofillMetricsTest, Rappor_NoDataServerAndHeuristic_NoMetricsReported) { 513 TEST_F(AutofillMetricsTest, Rappor_NoDataServerAndHeuristic_NoMetricsReported) {
511 // Set up our form data. 514 // Set up our form data.
512 FormData form; 515 FormData form;
(...skipping 22 matching lines...) Expand all
535 test::CreateTestFormField("Phone", "phone", "2345678901", "tel", &field); 538 test::CreateTestFormField("Phone", "phone", "2345678901", "tel", &field);
536 field.is_autofilled = true; 539 field.is_autofilled = true;
537 form.fields.push_back(field); 540 form.fields.push_back(field);
538 heuristic_types.push_back(UNKNOWN_TYPE); 541 heuristic_types.push_back(UNKNOWN_TYPE);
539 server_types.push_back(NO_SERVER_DATA); 542 server_types.push_back(NO_SERVER_DATA);
540 543
541 // Simulate having seen this form on page load. 544 // Simulate having seen this form on page load.
542 autofill_manager_->AddSeenForm(form, heuristic_types, server_types); 545 autofill_manager_->AddSeenForm(form, heuristic_types, server_types);
543 546
544 // Simulate form submission. 547 // Simulate form submission.
545 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 548 autofill_manager_->SubmitForm(form, TimeTicks::Now());
546 549
547 // No RAPPOR metrics are logged in the case of multiple UNKNOWN_TYPE and 550 // No RAPPOR metrics are logged in the case of multiple UNKNOWN_TYPE and
548 // NO_SERVER_DATA for heuristics and server predictions, respectively. 551 // NO_SERVER_DATA for heuristics and server predictions, respectively.
549 EXPECT_EQ(0, autofill_client_.test_rappor_service()->GetReportsCount()); 552 EXPECT_EQ(0, autofill_client_.test_rappor_service()->GetReportsCount());
550 } 553 }
551 554
552 // Test that we log high number of mismatches for the server prediction. 555 // Test that we log high number of mismatches for the server prediction.
553 TEST_F(AutofillMetricsTest, Rappor_HighServerMismatchRate_MetricsReported) { 556 TEST_F(AutofillMetricsTest, Rappor_HighServerMismatchRate_MetricsReported) {
554 // Set up our form data. 557 // Set up our form data.
555 FormData form; 558 FormData form;
(...skipping 22 matching lines...) Expand all
578 test::CreateTestFormField("Phone", "phone", "2345678901", "tel", &field); 581 test::CreateTestFormField("Phone", "phone", "2345678901", "tel", &field);
579 field.is_autofilled = true; 582 field.is_autofilled = true;
580 form.fields.push_back(field); 583 form.fields.push_back(field);
581 heuristic_types.push_back(PHONE_HOME_CITY_AND_NUMBER); 584 heuristic_types.push_back(PHONE_HOME_CITY_AND_NUMBER);
582 server_types.push_back(EMAIL_ADDRESS); 585 server_types.push_back(EMAIL_ADDRESS);
583 586
584 // Simulate having seen this form on page load. 587 // Simulate having seen this form on page load.
585 autofill_manager_->AddSeenForm(form, heuristic_types, server_types); 588 autofill_manager_->AddSeenForm(form, heuristic_types, server_types);
586 589
587 // Simulate form submission. 590 // Simulate form submission.
588 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 591 autofill_manager_->SubmitForm(form, TimeTicks::Now());
589 592
590 // The number of mismatches did trigger the RAPPOR metric logging for server 593 // The number of mismatches did trigger the RAPPOR metric logging for server
591 // predictions. 594 // predictions.
592 EXPECT_EQ(1, autofill_client_.test_rappor_service()->GetReportsCount()); 595 EXPECT_EQ(1, autofill_client_.test_rappor_service()->GetReportsCount());
593 std::string sample; 596 std::string sample;
594 rappor::RapporType type; 597 rappor::RapporType type;
595 EXPECT_FALSE( 598 EXPECT_FALSE(
596 autofill_client_.test_rappor_service()->GetRecordedSampleForMetric( 599 autofill_client_.test_rappor_service()->GetRecordedSampleForMetric(
597 "Autofill.HighNumberOfHeuristicMismatches", &sample, &type)); 600 "Autofill.HighNumberOfHeuristicMismatches", &sample, &type));
598 EXPECT_TRUE( 601 EXPECT_TRUE(
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 test::CreateTestFormField("Phone", "phone", "2345678901", "tel", &field); 634 test::CreateTestFormField("Phone", "phone", "2345678901", "tel", &field);
632 field.is_autofilled = true; 635 field.is_autofilled = true;
633 form.fields.push_back(field); 636 form.fields.push_back(field);
634 heuristic_types.push_back(EMAIL_ADDRESS); 637 heuristic_types.push_back(EMAIL_ADDRESS);
635 server_types.push_back(PHONE_HOME_WHOLE_NUMBER); 638 server_types.push_back(PHONE_HOME_WHOLE_NUMBER);
636 639
637 // Simulate having seen this form on page load. 640 // Simulate having seen this form on page load.
638 autofill_manager_->AddSeenForm(form, heuristic_types, server_types); 641 autofill_manager_->AddSeenForm(form, heuristic_types, server_types);
639 642
640 // Simulate form submission. 643 // Simulate form submission.
641 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 644 autofill_manager_->SubmitForm(form, TimeTicks::Now());
642 645
643 // The number of mismatches did trigger the RAPPOR metric logging for 646 // The number of mismatches did trigger the RAPPOR metric logging for
644 // heuristic predictions. 647 // heuristic predictions.
645 EXPECT_EQ(1, autofill_client_.test_rappor_service()->GetReportsCount()); 648 EXPECT_EQ(1, autofill_client_.test_rappor_service()->GetReportsCount());
646 std::string sample; 649 std::string sample;
647 rappor::RapporType type; 650 rappor::RapporType type;
648 EXPECT_FALSE( 651 EXPECT_FALSE(
649 autofill_client_.test_rappor_service()->GetRecordedSampleForMetric( 652 autofill_client_.test_rappor_service()->GetRecordedSampleForMetric(
650 "Autofill.HighNumberOfServerMismatches", &sample, &type)); 653 "Autofill.HighNumberOfServerMismatches", &sample, &type));
651 EXPECT_TRUE( 654 EXPECT_TRUE(
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
684 std::vector<FormData> forms(1, form); 687 std::vector<FormData> forms(1, form);
685 688
686 { 689 {
687 base::HistogramTester histogram_tester; 690 base::HistogramTester histogram_tester;
688 autofill_manager_->OnFormsSeen(forms, TimeTicks()); 691 autofill_manager_->OnFormsSeen(forms, TimeTicks());
689 // We change the value of the text fields to change the default/seen values 692 // We change the value of the text fields to change the default/seen values
690 // (hence the values are not cleared in UpdateFromCache). The new values 693 // (hence the values are not cleared in UpdateFromCache). The new values
691 // match what is in the test profile. 694 // match what is in the test profile.
692 form.fields[1].value = base::ASCIIToUTF16("79401"); 695 form.fields[1].value = base::ASCIIToUTF16("79401");
693 form.fields[2].value = base::ASCIIToUTF16("2345678901"); 696 form.fields[2].value = base::ASCIIToUTF16("2345678901");
694 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 697 autofill_manager_->SubmitForm(form, TimeTicks::Now());
695 698
696 // First verify that country was not predicted by client or server. 699 // First verify that country was not predicted by client or server.
697 histogram_tester.ExpectBucketCount( 700 histogram_tester.ExpectBucketCount(
698 "Autofill.Quality.ServerType.ByFieldType", 701 "Autofill.Quality.ServerType.ByFieldType",
699 GetFieldTypeGroupMetric(ADDRESS_HOME_COUNTRY, 702 GetFieldTypeGroupMetric(ADDRESS_HOME_COUNTRY,
700 AutofillMetrics::TYPE_UNKNOWN), 703 AutofillMetrics::TYPE_UNKNOWN),
701 1); 704 1);
702 histogram_tester.ExpectBucketCount( 705 histogram_tester.ExpectBucketCount(
703 "Autofill.Quality.HeuristicType.ByFieldType", 706 "Autofill.Quality.HeuristicType.ByFieldType",
704 GetFieldTypeGroupMetric(ADDRESS_HOME_COUNTRY, 707 GetFieldTypeGroupMetric(ADDRESS_HOME_COUNTRY,
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
797 test::CreateTestFormField( 800 test::CreateTestFormField(
798 "New field", "new field", "Tennessee", "text", &field); 801 "New field", "new field", "Tennessee", "text", &field);
799 form.fields.push_back(field); 802 form.fields.push_back(field);
800 form.fields.push_back(cached_fields[2]); 803 form.fields.push_back(cached_fields[2]);
801 form.fields.push_back(cached_fields[1]); 804 form.fields.push_back(cached_fields[1]);
802 form.fields.push_back(cached_fields[3]); 805 form.fields.push_back(cached_fields[3]);
803 form.fields.push_back(cached_fields[0]); 806 form.fields.push_back(cached_fields[0]);
804 807
805 // Simulate form submission. 808 // Simulate form submission.
806 base::HistogramTester histogram_tester; 809 base::HistogramTester histogram_tester;
807 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 810 autofill_manager_->SubmitForm(form, TimeTicks::Now());
808 811
809 // Heuristic predictions. 812 // Heuristic predictions.
810 // Unknown: 813 // Unknown:
811 histogram_tester.ExpectBucketCount("Autofill.Quality.HeuristicType", 814 histogram_tester.ExpectBucketCount("Autofill.Quality.HeuristicType",
812 AutofillMetrics::TYPE_UNKNOWN, 1); 815 AutofillMetrics::TYPE_UNKNOWN, 1);
813 histogram_tester.ExpectBucketCount( 816 histogram_tester.ExpectBucketCount(
814 "Autofill.Quality.HeuristicType.ByFieldType", 817 "Autofill.Quality.HeuristicType.ByFieldType",
815 GetFieldTypeGroupMetric(ADDRESS_HOME_STATE, 818 GetFieldTypeGroupMetric(ADDRESS_HOME_STATE,
816 AutofillMetrics::TYPE_UNKNOWN), 819 AutofillMetrics::TYPE_UNKNOWN),
817 1); 820 1);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
907 test::CreateTestFormField("Email", "email", "", "text", &field); 910 test::CreateTestFormField("Email", "email", "", "text", &field);
908 form.fields.push_back(field); 911 form.fields.push_back(field);
909 test::CreateTestFormField("Phone", "phone", "", "text", &field); 912 test::CreateTestFormField("Phone", "phone", "", "text", &field);
910 form.fields.push_back(field); 913 form.fields.push_back(field);
911 914
912 std::vector<FormData> forms(1, form); 915 std::vector<FormData> forms(1, form);
913 916
914 // Simulate form submission. 917 // Simulate form submission.
915 base::HistogramTester histogram_tester; 918 base::HistogramTester histogram_tester;
916 autofill_manager_->OnFormsSeen(forms, TimeTicks()); 919 autofill_manager_->OnFormsSeen(forms, TimeTicks());
917 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 920 autofill_manager_->SubmitForm(form, TimeTicks::Now());
918 921
919 // An autofillable form was submitted, and the number of stored profiles is 922 // An autofillable form was submitted, and the number of stored profiles is
920 // logged. 923 // logged.
921 histogram_tester.ExpectUniqueSample( 924 histogram_tester.ExpectUniqueSample(
922 "Autofill.StoredProfileCountAtAutofillableFormSubmission", 2, 1); 925 "Autofill.StoredProfileCountAtAutofillableFormSubmission", 2, 1);
923 } 926 }
924 927
925 // Verify that when submitting a non-autofillable form, the stored profile 928 // Verify that when submitting a non-autofillable form, the stored profile
926 // metric is not logged. 929 // metric is not logged.
927 TEST_F(AutofillMetricsTest, StoredProfileCountNonAutofillableFormSubmission) { 930 TEST_F(AutofillMetricsTest, StoredProfileCountNonAutofillableFormSubmission) {
928 // Construct a non-fillable form. 931 // Construct a non-fillable form.
929 FormData form; 932 FormData form;
930 form.name = ASCIIToUTF16("TestForm"); 933 form.name = ASCIIToUTF16("TestForm");
931 form.origin = GURL("http://example.com/form.html"); 934 form.origin = GURL("http://example.com/form.html");
932 form.action = GURL("http://example.com/submit.html"); 935 form.action = GURL("http://example.com/submit.html");
933 form.user_submitted = true; 936 form.user_submitted = true;
934 937
935 // Two fields is not enough to make it an autofillable form. 938 // Two fields is not enough to make it an autofillable form.
936 FormFieldData field; 939 FormFieldData field;
937 test::CreateTestFormField("Name", "name", "", "text", &field); 940 test::CreateTestFormField("Name", "name", "", "text", &field);
938 form.fields.push_back(field); 941 form.fields.push_back(field);
939 test::CreateTestFormField("Email", "email", "", "text", &field); 942 test::CreateTestFormField("Email", "email", "", "text", &field);
940 form.fields.push_back(field); 943 form.fields.push_back(field);
941 944
942 std::vector<FormData> forms(1, form); 945 std::vector<FormData> forms(1, form);
943 946
944 // Simulate form submission. 947 // Simulate form submission.
945 base::HistogramTester histogram_tester; 948 base::HistogramTester histogram_tester;
946 autofill_manager_->OnFormsSeen(forms, TimeTicks()); 949 autofill_manager_->OnFormsSeen(forms, TimeTicks());
947 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 950 autofill_manager_->SubmitForm(form, TimeTicks::Now());
948 951
949 // A non-autofillable form was submitted, and number of stored profiles is NOT 952 // A non-autofillable form was submitted, and number of stored profiles is NOT
950 // logged. 953 // logged.
951 histogram_tester.ExpectTotalCount( 954 histogram_tester.ExpectTotalCount(
952 "Autofill.StoredProfileCountAtAutofillableFormSubmission", 0); 955 "Autofill.StoredProfileCountAtAutofillableFormSubmission", 0);
953 } 956 }
954 957
955 // Verify that we correctly log metrics regarding developer engagement. 958 // Verify that we correctly log metrics regarding developer engagement.
956 TEST_F(AutofillMetricsTest, DeveloperEngagement) { 959 TEST_F(AutofillMetricsTest, DeveloperEngagement) {
957 // Start with a non-fillable form. 960 // Start with a non-fillable form.
(...skipping 525 matching lines...) Expand 10 before | Expand all | Expand 10 after
1483 1486
1484 // Simulate having seen this form on page load. 1487 // Simulate having seen this form on page load.
1485 // |form_structure| will be owned by |autofill_manager_|. 1488 // |form_structure| will be owned by |autofill_manager_|.
1486 autofill_manager_->AddSeenForm(form, field_types, field_types); 1489 autofill_manager_->AddSeenForm(form, field_types, field_types);
1487 1490
1488 { 1491 {
1489 // Simulating submission with no filled data. 1492 // Simulating submission with no filled data.
1490 base::HistogramTester histogram_tester; 1493 base::HistogramTester histogram_tester;
1491 autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(), 1494 autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(),
1492 false); 1495 false);
1493 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 1496 autofill_manager_->SubmitForm(form, TimeTicks::Now());
1497 histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
1498 AutofillMetrics::FORM_EVENT_WILL_SUBMIT,
1499 1);
1494 histogram_tester.ExpectBucketCount( 1500 histogram_tester.ExpectBucketCount(
1495 "Autofill.FormEvents.CreditCard", 1501 "Autofill.FormEvents.CreditCard",
1496 AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1); 1502 AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
1497 } 1503 }
1498 1504
1499 // Reset the autofill manager state. 1505 // Reset the autofill manager state.
1500 autofill_manager_->Reset(); 1506 autofill_manager_->Reset();
1501 autofill_manager_->AddSeenForm(form, field_types, field_types); 1507 autofill_manager_->AddSeenForm(form, field_types, field_types);
1502 1508
1503 { 1509 {
1504 // Simulating submission with filled local data. 1510 // Simulating submission with filled local data.
1505 base::HistogramTester histogram_tester; 1511 base::HistogramTester histogram_tester;
1506 autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(), 1512 autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(),
1507 false); 1513 false);
1508 SuggestionBackendID guid( 1514 SuggestionBackendID guid(
1509 "10000000-0000-0000-0000-000000000001", 0); // local card 1515 "10000000-0000-0000-0000-000000000001", 0); // local card
1510 autofill_manager_->FillOrPreviewForm( 1516 autofill_manager_->FillOrPreviewForm(
1511 AutofillDriver::FORM_DATA_ACTION_FILL, 1517 AutofillDriver::FORM_DATA_ACTION_FILL,
1512 0, form, form.fields.front(), 1518 0, form, form.fields.front(),
1513 autofill_manager_->MakeFrontendID(guid, SuggestionBackendID())); 1519 autofill_manager_->MakeFrontendID(guid, SuggestionBackendID()));
1514 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 1520 autofill_manager_->SubmitForm(form, TimeTicks::Now());
1521 histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
1522 AutofillMetrics::FORM_EVENT_WILL_SUBMIT,
1523 1);
1515 histogram_tester.ExpectBucketCount( 1524 histogram_tester.ExpectBucketCount(
1516 "Autofill.FormEvents.CreditCard", 1525 "Autofill.FormEvents.CreditCard",
1517 AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 1); 1526 AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 1);
1518 } 1527 }
1519 1528
1520 // Reset the autofill manager state. 1529 // Reset the autofill manager state.
1521 autofill_manager_->Reset(); 1530 autofill_manager_->Reset();
1522 autofill_manager_->AddSeenForm(form, field_types, field_types); 1531 autofill_manager_->AddSeenForm(form, field_types, field_types);
1523 1532
1524 { 1533 {
1525 // Simulating submission with filled server data. 1534 // Simulating submission with filled server data.
1526 base::HistogramTester histogram_tester; 1535 base::HistogramTester histogram_tester;
1527 autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(), 1536 autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(),
1528 false); 1537 false);
1529 SuggestionBackendID guid( 1538 SuggestionBackendID guid(
1530 "10000000-0000-0000-0000-000000000003", 0); // full server card 1539 "10000000-0000-0000-0000-000000000003", 0); // full server card
1531 autofill_manager_->FillOrPreviewForm( 1540 autofill_manager_->FillOrPreviewForm(
1532 AutofillDriver::FORM_DATA_ACTION_FILL, 1541 AutofillDriver::FORM_DATA_ACTION_FILL,
1533 0, form, form.fields.front(), 1542 0, form, form.fields.front(),
1534 autofill_manager_->MakeFrontendID(guid, SuggestionBackendID())); 1543 autofill_manager_->MakeFrontendID(guid, SuggestionBackendID()));
1535 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 1544 autofill_manager_->SubmitForm(form, TimeTicks::Now());
1545 histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
1546 AutofillMetrics::FORM_EVENT_WILL_SUBMIT,
1547 1);
1536 histogram_tester.ExpectBucketCount( 1548 histogram_tester.ExpectBucketCount(
1537 "Autofill.FormEvents.CreditCard", 1549 "Autofill.FormEvents.CreditCard",
1538 AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 1); 1550 AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 1);
1539 } 1551 }
1540 1552
1541 // Reset the autofill manager state. 1553 // Reset the autofill manager state.
1542 autofill_manager_->Reset(); 1554 autofill_manager_->Reset();
1543 autofill_manager_->AddSeenForm(form, field_types, field_types); 1555 autofill_manager_->AddSeenForm(form, field_types, field_types);
1544 1556
1545 { 1557 {
(...skipping 25 matching lines...) Expand all
1571 1583
1572 // Reset the autofill manager state. 1584 // Reset the autofill manager state.
1573 autofill_manager_->Reset(); 1585 autofill_manager_->Reset();
1574 autofill_manager_->AddSeenForm(form, field_types, field_types); 1586 autofill_manager_->AddSeenForm(form, field_types, field_types);
1575 1587
1576 { 1588 {
1577 // Simulating multiple submissions. 1589 // Simulating multiple submissions.
1578 base::HistogramTester histogram_tester; 1590 base::HistogramTester histogram_tester;
1579 autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(), 1591 autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(),
1580 false); 1592 false);
1581 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 1593 autofill_manager_->SubmitForm(form, TimeTicks::Now());
1582 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 1594 autofill_manager_->SubmitForm(form, TimeTicks::Now());
1595 histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
1596 AutofillMetrics::FORM_EVENT_WILL_SUBMIT,
1597 2);
1583 histogram_tester.ExpectBucketCount( 1598 histogram_tester.ExpectBucketCount(
1584 "Autofill.FormEvents.CreditCard", 1599 "Autofill.FormEvents.CreditCard",
1585 AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1); 1600 AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
1586 histogram_tester.ExpectBucketCount( 1601 histogram_tester.ExpectBucketCount(
1587 "Autofill.FormEvents.CreditCard", 1602 "Autofill.FormEvents.CreditCard",
1588 AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0); 1603 AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
1589 histogram_tester.ExpectBucketCount( 1604 histogram_tester.ExpectBucketCount(
1590 "Autofill.FormEvents.CreditCard", 1605 "Autofill.FormEvents.CreditCard",
1591 AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0); 1606 AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
1592 histogram_tester.ExpectBucketCount( 1607 histogram_tester.ExpectBucketCount(
1593 "Autofill.FormEvents.CreditCard", 1608 "Autofill.FormEvents.CreditCard",
1594 AutofillMetrics 1609 AutofillMetrics
1595 ::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE, 1610 ::FORM_EVENT_MASKED_SERVER_CARD_SUGGESTION_SUBMITTED_ONCE,
1596 0); 1611 0);
1597 } 1612 }
1598 1613
1599 // Reset the autofill manager state. 1614 // Reset the autofill manager state.
1600 autofill_manager_->Reset(); 1615 autofill_manager_->Reset();
1601 autofill_manager_->AddSeenForm(form, field_types, field_types); 1616 autofill_manager_->AddSeenForm(form, field_types, field_types);
1602 1617
1603 { 1618 {
1604 // Simulating submission without previous interaction. 1619 // Simulating submission without previous interaction.
1605 base::HistogramTester histogram_tester; 1620 base::HistogramTester histogram_tester;
1606 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 1621 autofill_manager_->SubmitForm(form, TimeTicks::Now());
1622 histogram_tester.ExpectBucketCount("Autofill.FormEvents.CreditCard",
1623 AutofillMetrics::FORM_EVENT_WILL_SUBMIT,
1624 0);
1607 histogram_tester.ExpectBucketCount( 1625 histogram_tester.ExpectBucketCount(
1608 "Autofill.FormEvents.CreditCard", 1626 "Autofill.FormEvents.CreditCard",
1609 AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 0); 1627 AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 0);
1610 histogram_tester.ExpectBucketCount( 1628 histogram_tester.ExpectBucketCount(
1611 "Autofill.FormEvents.CreditCard", 1629 "Autofill.FormEvents.CreditCard",
1612 AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0); 1630 AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
1613 histogram_tester.ExpectBucketCount( 1631 histogram_tester.ExpectBucketCount(
1614 "Autofill.FormEvents.CreditCard", 1632 "Autofill.FormEvents.CreditCard",
1615 AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0); 1633 AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
1616 } 1634 }
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
1864 1882
1865 // Simulate having seen this form on page load. 1883 // Simulate having seen this form on page load.
1866 // |form_structure| will be owned by |autofill_manager_|. 1884 // |form_structure| will be owned by |autofill_manager_|.
1867 autofill_manager_->AddSeenForm(form, field_types, field_types); 1885 autofill_manager_->AddSeenForm(form, field_types, field_types);
1868 1886
1869 { 1887 {
1870 // Simulating submission with no filled data. 1888 // Simulating submission with no filled data.
1871 base::HistogramTester histogram_tester; 1889 base::HistogramTester histogram_tester;
1872 autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(), 1890 autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(),
1873 false); 1891 false);
1874 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 1892 autofill_manager_->SubmitForm(form, TimeTicks::Now());
1893 histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
1894 AutofillMetrics::FORM_EVENT_WILL_SUBMIT,
1895 1);
1875 histogram_tester.ExpectBucketCount( 1896 histogram_tester.ExpectBucketCount(
1876 "Autofill.FormEvents.Address", 1897 "Autofill.FormEvents.Address",
1877 AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1); 1898 AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
1878 } 1899 }
1879 1900
1880 // Reset the autofill manager state. 1901 // Reset the autofill manager state.
1881 autofill_manager_->Reset(); 1902 autofill_manager_->Reset();
1882 autofill_manager_->AddSeenForm(form, field_types, field_types); 1903 autofill_manager_->AddSeenForm(form, field_types, field_types);
1883 1904
1884 { 1905 {
1885 // Simulating submission with filled local data. 1906 // Simulating submission with filled local data.
1886 base::HistogramTester histogram_tester; 1907 base::HistogramTester histogram_tester;
1887 autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(), 1908 autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(),
1888 false); 1909 false);
1889 SuggestionBackendID guid( 1910 SuggestionBackendID guid(
1890 "00000000-0000-0000-0000-000000000001", 0); // local profile 1911 "00000000-0000-0000-0000-000000000001", 0); // local profile
1891 autofill_manager_->FillOrPreviewForm( 1912 autofill_manager_->FillOrPreviewForm(
1892 AutofillDriver::FORM_DATA_ACTION_FILL, 1913 AutofillDriver::FORM_DATA_ACTION_FILL,
1893 0, form, form.fields.front(), 1914 0, form, form.fields.front(),
1894 autofill_manager_->MakeFrontendID(SuggestionBackendID(), guid)); 1915 autofill_manager_->MakeFrontendID(SuggestionBackendID(), guid));
1895 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 1916 autofill_manager_->SubmitForm(form, TimeTicks::Now());
1917 histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
1918 AutofillMetrics::FORM_EVENT_WILL_SUBMIT,
1919 1);
1896 histogram_tester.ExpectBucketCount( 1920 histogram_tester.ExpectBucketCount(
1897 "Autofill.FormEvents.Address", 1921 "Autofill.FormEvents.Address",
1898 AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 1); 1922 AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 1);
1899 } 1923 }
1900 1924
1901 // Reset the autofill manager state. 1925 // Reset the autofill manager state.
1902 autofill_manager_->Reset(); 1926 autofill_manager_->Reset();
1903 autofill_manager_->AddSeenForm(form, field_types, field_types); 1927 autofill_manager_->AddSeenForm(form, field_types, field_types);
1904 1928
1905 { 1929 {
1906 // Simulating submission with filled server data. 1930 // Simulating submission with filled server data.
1907 base::HistogramTester histogram_tester; 1931 base::HistogramTester histogram_tester;
1908 autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(), 1932 autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(),
1909 false); 1933 false);
1910 SuggestionBackendID guid( 1934 SuggestionBackendID guid(
1911 "00000000-0000-0000-0000-000000000002", 0); // server profile 1935 "00000000-0000-0000-0000-000000000002", 0); // server profile
1912 autofill_manager_->FillOrPreviewForm( 1936 autofill_manager_->FillOrPreviewForm(
1913 AutofillDriver::FORM_DATA_ACTION_FILL, 1937 AutofillDriver::FORM_DATA_ACTION_FILL,
1914 0, form, form.fields.front(), 1938 0, form, form.fields.front(),
1915 autofill_manager_->MakeFrontendID(SuggestionBackendID(), guid)); 1939 autofill_manager_->MakeFrontendID(SuggestionBackendID(), guid));
1916 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 1940 autofill_manager_->SubmitForm(form, TimeTicks::Now());
1941 histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
1942 AutofillMetrics::FORM_EVENT_WILL_SUBMIT,
1943 1);
1917 histogram_tester.ExpectBucketCount( 1944 histogram_tester.ExpectBucketCount(
1918 "Autofill.FormEvents.Address", 1945 "Autofill.FormEvents.Address",
1919 AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 1); 1946 AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 1);
1920 } 1947 }
1921 1948
1922 // Reset the autofill manager state. 1949 // Reset the autofill manager state.
1923 autofill_manager_->Reset(); 1950 autofill_manager_->Reset();
1924 autofill_manager_->AddSeenForm(form, field_types, field_types); 1951 autofill_manager_->AddSeenForm(form, field_types, field_types);
1925 1952
1926 { 1953 {
1927 // Simulating multiple submissions. 1954 // Simulating multiple submissions.
1928 base::HistogramTester histogram_tester; 1955 base::HistogramTester histogram_tester;
1929 autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(), 1956 autofill_manager_->OnQueryFormFieldAutofill(0, form, field, gfx::Rect(),
1930 false); 1957 false);
1931 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 1958 autofill_manager_->SubmitForm(form, TimeTicks::Now());
1959 autofill_manager_->SubmitForm(form, TimeTicks::Now());
1960 histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
1961 AutofillMetrics::FORM_EVENT_WILL_SUBMIT,
1962 2);
1932 histogram_tester.ExpectBucketCount( 1963 histogram_tester.ExpectBucketCount(
1933 "Autofill.FormEvents.Address", 1964 "Autofill.FormEvents.Address",
1934 AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1); 1965 AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 1);
1935 histogram_tester.ExpectBucketCount( 1966 histogram_tester.ExpectBucketCount(
1936 "Autofill.FormEvents.Address", 1967 "Autofill.FormEvents.Address",
1937 AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0); 1968 AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
1938 histogram_tester.ExpectBucketCount( 1969 histogram_tester.ExpectBucketCount(
1939 "Autofill.FormEvents.Address", 1970 "Autofill.FormEvents.Address",
1940 AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0); 1971 AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
1941 } 1972 }
1942 1973
1943 // Reset the autofill manager state. 1974 // Reset the autofill manager state.
1944 autofill_manager_->Reset(); 1975 autofill_manager_->Reset();
1945 autofill_manager_->AddSeenForm(form, field_types, field_types); 1976 autofill_manager_->AddSeenForm(form, field_types, field_types);
1946 1977
1947 { 1978 {
1948 // Simulating submission without previous interaction. 1979 // Simulating submission without previous interaction.
1949 base::HistogramTester histogram_tester; 1980 base::HistogramTester histogram_tester;
1950 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 1981 autofill_manager_->SubmitForm(form, TimeTicks::Now());
1982 histogram_tester.ExpectBucketCount("Autofill.FormEvents.Address",
1983 AutofillMetrics::FORM_EVENT_WILL_SUBMIT,
1984 0);
1951 histogram_tester.ExpectBucketCount( 1985 histogram_tester.ExpectBucketCount(
1952 "Autofill.FormEvents.Address", 1986 "Autofill.FormEvents.Address",
1953 AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 0); 1987 AutofillMetrics::FORM_EVENT_NO_SUGGESTION_SUBMITTED_ONCE, 0);
1954 histogram_tester.ExpectBucketCount( 1988 histogram_tester.ExpectBucketCount(
1955 "Autofill.FormEvents.Address", 1989 "Autofill.FormEvents.Address",
1956 AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0); 1990 AutofillMetrics::FORM_EVENT_LOCAL_SUGGESTION_SUBMITTED_ONCE, 0);
1957 histogram_tester.ExpectBucketCount( 1991 histogram_tester.ExpectBucketCount(
1958 "Autofill.FormEvents.Address", 1992 "Autofill.FormEvents.Address",
1959 AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0); 1993 AutofillMetrics::FORM_EVENT_SERVER_SUGGESTION_SUBMITTED_ONCE, 0);
1960 } 1994 }
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
2201 { 2235 {
2202 base::HistogramTester histogram_tester; 2236 base::HistogramTester histogram_tester;
2203 autofill_manager_->OnFormsSeen(forms, TimeTicks()); 2237 autofill_manager_->OnFormsSeen(forms, TimeTicks());
2204 histogram_tester.ExpectTotalCount("Autofill.UserHappiness", 0); 2238 histogram_tester.ExpectTotalCount("Autofill.UserHappiness", 0);
2205 } 2239 }
2206 2240
2207 2241
2208 // Expect no notifications when the form is submitted. 2242 // Expect no notifications when the form is submitted.
2209 { 2243 {
2210 base::HistogramTester histogram_tester; 2244 base::HistogramTester histogram_tester;
2211 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 2245 autofill_manager_->SubmitForm(form, TimeTicks::Now());
2212 histogram_tester.ExpectTotalCount("Autofill.UserHappiness", 0); 2246 histogram_tester.ExpectTotalCount("Autofill.UserHappiness", 0);
2213 } 2247 }
2214 2248
2215 // Add more fields to the form. 2249 // Add more fields to the form.
2216 test::CreateTestFormField("Phone", "phone", "", "text", &field); 2250 test::CreateTestFormField("Phone", "phone", "", "text", &field);
2217 form.fields.push_back(field); 2251 form.fields.push_back(field);
2218 test::CreateTestFormField("Unknown", "unknown", "", "text", &field); 2252 test::CreateTestFormField("Unknown", "unknown", "", "text", &field);
2219 form.fields.push_back(field); 2253 form.fields.push_back(field);
2220 forms.front() = form; 2254 forms.front() = form;
2221 2255
2222 // Expect a notification when the form is first seen. 2256 // Expect a notification when the form is first seen.
2223 { 2257 {
2224 base::HistogramTester histogram_tester; 2258 base::HistogramTester histogram_tester;
2225 autofill_manager_->OnFormsSeen(forms, TimeTicks()); 2259 autofill_manager_->OnFormsSeen(forms, TimeTicks());
2226 histogram_tester.ExpectUniqueSample("Autofill.UserHappiness", 2260 histogram_tester.ExpectUniqueSample("Autofill.UserHappiness",
2227 AutofillMetrics::FORMS_LOADED, 1); 2261 AutofillMetrics::FORMS_LOADED, 1);
2228 } 2262 }
2229 2263
2230 // Expect a notification when the form is submitted. 2264 // Expect a notification when the form is submitted.
2231 { 2265 {
2232 base::HistogramTester histogram_tester; 2266 base::HistogramTester histogram_tester;
2233 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 2267 autofill_manager_->SubmitForm(form, TimeTicks::Now());
2234 histogram_tester.ExpectUniqueSample( 2268 histogram_tester.ExpectUniqueSample(
2235 "Autofill.UserHappiness", AutofillMetrics::SUBMITTED_NON_FILLABLE_FORM, 2269 "Autofill.UserHappiness", AutofillMetrics::SUBMITTED_NON_FILLABLE_FORM,
2236 1); 2270 1);
2237 } 2271 }
2238 2272
2239 // Fill in two of the fields. 2273 // Fill in two of the fields.
2240 form.fields[0].value = ASCIIToUTF16("Elvis Aaron Presley"); 2274 form.fields[0].value = ASCIIToUTF16("Elvis Aaron Presley");
2241 form.fields[1].value = ASCIIToUTF16("theking@gmail.com"); 2275 form.fields[1].value = ASCIIToUTF16("theking@gmail.com");
2242 forms.front() = form; 2276 forms.front() = form;
2243 2277
2244 // Expect a notification when the form is submitted. 2278 // Expect a notification when the form is submitted.
2245 { 2279 {
2246 base::HistogramTester histogram_tester; 2280 base::HistogramTester histogram_tester;
2247 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 2281 autofill_manager_->SubmitForm(form, TimeTicks::Now());
2248 histogram_tester.ExpectUniqueSample( 2282 histogram_tester.ExpectUniqueSample(
2249 "Autofill.UserHappiness", AutofillMetrics::SUBMITTED_NON_FILLABLE_FORM, 2283 "Autofill.UserHappiness", AutofillMetrics::SUBMITTED_NON_FILLABLE_FORM,
2250 1); 2284 1);
2251 } 2285 }
2252 2286
2253 // Fill in the third field. 2287 // Fill in the third field.
2254 form.fields[2].value = ASCIIToUTF16("12345678901"); 2288 form.fields[2].value = ASCIIToUTF16("12345678901");
2255 forms.front() = form; 2289 forms.front() = form;
2256 2290
2257 // Expect notifications when the form is submitted. 2291 // Expect notifications when the form is submitted.
2258 { 2292 {
2259 base::HistogramTester histogram_tester; 2293 base::HistogramTester histogram_tester;
2260 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 2294 autofill_manager_->SubmitForm(form, TimeTicks::Now());
2261 histogram_tester.ExpectUniqueSample( 2295 histogram_tester.ExpectUniqueSample(
2262 "Autofill.UserHappiness", 2296 "Autofill.UserHappiness",
2263 AutofillMetrics::SUBMITTED_FILLABLE_FORM_AUTOFILLED_NONE, 1); 2297 AutofillMetrics::SUBMITTED_FILLABLE_FORM_AUTOFILLED_NONE, 1);
2264 } 2298 }
2265 2299
2266 2300
2267 // Mark one of the fields as autofilled. 2301 // Mark one of the fields as autofilled.
2268 form.fields[1].is_autofilled = true; 2302 form.fields[1].is_autofilled = true;
2269 forms.front() = form; 2303 forms.front() = form;
2270 2304
2271 // Expect notifications when the form is submitted. 2305 // Expect notifications when the form is submitted.
2272 { 2306 {
2273 base::HistogramTester histogram_tester; 2307 base::HistogramTester histogram_tester;
2274 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 2308 autofill_manager_->SubmitForm(form, TimeTicks::Now());
2275 histogram_tester.ExpectUniqueSample( 2309 histogram_tester.ExpectUniqueSample(
2276 "Autofill.UserHappiness", 2310 "Autofill.UserHappiness",
2277 AutofillMetrics::SUBMITTED_FILLABLE_FORM_AUTOFILLED_SOME, 1); 2311 AutofillMetrics::SUBMITTED_FILLABLE_FORM_AUTOFILLED_SOME, 1);
2278 } 2312 }
2279 2313
2280 // Mark all of the fillable fields as autofilled. 2314 // Mark all of the fillable fields as autofilled.
2281 form.fields[0].is_autofilled = true; 2315 form.fields[0].is_autofilled = true;
2282 form.fields[2].is_autofilled = true; 2316 form.fields[2].is_autofilled = true;
2283 forms.front() = form; 2317 forms.front() = form;
2284 2318
2285 // Expect notifications when the form is submitted. 2319 // Expect notifications when the form is submitted.
2286 { 2320 {
2287 base::HistogramTester histogram_tester; 2321 base::HistogramTester histogram_tester;
2288 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 2322 autofill_manager_->SubmitForm(form, TimeTicks::Now());
2289 histogram_tester.ExpectUniqueSample( 2323 histogram_tester.ExpectUniqueSample(
2290 "Autofill.UserHappiness", 2324 "Autofill.UserHappiness",
2291 AutofillMetrics::SUBMITTED_FILLABLE_FORM_AUTOFILLED_ALL, 1); 2325 AutofillMetrics::SUBMITTED_FILLABLE_FORM_AUTOFILLED_ALL, 1);
2292 } 2326 }
2293 2327
2294 // Clear out the third field's value. 2328 // Clear out the third field's value.
2295 form.fields[2].value = base::string16(); 2329 form.fields[2].value = base::string16();
2296 forms.front() = form; 2330 forms.front() = form;
2297 2331
2298 // Expect notifications when the form is submitted. 2332 // Expect notifications when the form is submitted.
2299 { 2333 {
2300 base::HistogramTester histogram_tester; 2334 base::HistogramTester histogram_tester;
2301 autofill_manager_->WillSubmitForm(form, TimeTicks::Now()); 2335 autofill_manager_->SubmitForm(form, TimeTicks::Now());
2302 histogram_tester.ExpectUniqueSample( 2336 histogram_tester.ExpectUniqueSample(
2303 "Autofill.UserHappiness", AutofillMetrics::SUBMITTED_NON_FILLABLE_FORM, 2337 "Autofill.UserHappiness", AutofillMetrics::SUBMITTED_NON_FILLABLE_FORM,
2304 1); 2338 1);
2305 } 2339 }
2306 } 2340 }
2307 2341
2308 // Verify that we correctly log user happiness metrics dealing with form 2342 // Verify that we correctly log user happiness metrics dealing with form
2309 // interaction. 2343 // interaction.
2310 TEST_F(AutofillMetricsTest, UserHappinessFormInteraction) { 2344 TEST_F(AutofillMetricsTest, UserHappinessFormInteraction) {
2311 // Load a fillable form. 2345 // Load a fillable form.
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
2447 second_form.fields[0].value = ASCIIToUTF16("Elvis Aaron Presley"); 2481 second_form.fields[0].value = ASCIIToUTF16("Elvis Aaron Presley");
2448 second_form.fields[1].value = ASCIIToUTF16("theking@gmail.com"); 2482 second_form.fields[1].value = ASCIIToUTF16("theking@gmail.com");
2449 second_form.fields[2].value = ASCIIToUTF16("12345678901"); 2483 second_form.fields[2].value = ASCIIToUTF16("12345678901");
2450 second_form.fields[3].value = ASCIIToUTF16("51512345678"); 2484 second_form.fields[3].value = ASCIIToUTF16("51512345678");
2451 2485
2452 // Expect only form load metrics to be logged if the form is submitted without 2486 // Expect only form load metrics to be logged if the form is submitted without
2453 // user interaction. 2487 // user interaction.
2454 { 2488 {
2455 base::HistogramTester histogram_tester; 2489 base::HistogramTester histogram_tester;
2456 autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1)); 2490 autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1));
2457 autofill_manager_->WillSubmitForm(form, TimeTicks::FromInternalValue(17)); 2491 autofill_manager_->SubmitForm(form, TimeTicks::FromInternalValue(17));
2458 2492
2459 histogram_tester.ExpectTotalCount( 2493 histogram_tester.ExpectTotalCount(
2460 "Autofill.FillDuration.FromLoad.WithAutofill", 0); 2494 "Autofill.FillDuration.FromLoad.WithAutofill", 0);
2461 histogram_tester.ExpectUniqueSample( 2495 histogram_tester.ExpectUniqueSample(
2462 "Autofill.FillDuration.FromLoad.WithoutAutofill", 16, 1); 2496 "Autofill.FillDuration.FromLoad.WithoutAutofill", 16, 1);
2463 histogram_tester.ExpectTotalCount( 2497 histogram_tester.ExpectTotalCount(
2464 "Autofill.FillDuration.FromInteraction.WithAutofill", 0); 2498 "Autofill.FillDuration.FromInteraction.WithAutofill", 0);
2465 histogram_tester.ExpectTotalCount( 2499 histogram_tester.ExpectTotalCount(
2466 "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0); 2500 "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0);
2467 2501
2468 autofill_manager_->Reset(); 2502 autofill_manager_->Reset();
2469 } 2503 }
2470 2504
2471 // Expect metric to be logged if the user manually edited a form field. 2505 // Expect metric to be logged if the user manually edited a form field.
2472 { 2506 {
2473 base::HistogramTester histogram_tester; 2507 base::HistogramTester histogram_tester;
2474 autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1)); 2508 autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1));
2475 autofill_manager_->OnTextFieldDidChange(form, form.fields.front(), 2509 autofill_manager_->OnTextFieldDidChange(form, form.fields.front(),
2476 TimeTicks::FromInternalValue(3)); 2510 TimeTicks::FromInternalValue(3));
2477 autofill_manager_->WillSubmitForm(form, TimeTicks::FromInternalValue(17)); 2511 autofill_manager_->SubmitForm(form, TimeTicks::FromInternalValue(17));
2478 2512
2479 histogram_tester.ExpectTotalCount( 2513 histogram_tester.ExpectTotalCount(
2480 "Autofill.FillDuration.FromLoad.WithAutofill", 0); 2514 "Autofill.FillDuration.FromLoad.WithAutofill", 0);
2481 histogram_tester.ExpectUniqueSample( 2515 histogram_tester.ExpectUniqueSample(
2482 "Autofill.FillDuration.FromLoad.WithoutAutofill", 16, 1); 2516 "Autofill.FillDuration.FromLoad.WithoutAutofill", 16, 1);
2483 histogram_tester.ExpectTotalCount( 2517 histogram_tester.ExpectTotalCount(
2484 "Autofill.FillDuration.FromInteraction.WithAutofill", 0); 2518 "Autofill.FillDuration.FromInteraction.WithAutofill", 0);
2485 histogram_tester.ExpectUniqueSample( 2519 histogram_tester.ExpectUniqueSample(
2486 "Autofill.FillDuration.FromInteraction.WithoutAutofill", 14, 1); 2520 "Autofill.FillDuration.FromInteraction.WithoutAutofill", 14, 1);
2487 2521
2488 autofill_manager_->Reset(); 2522 autofill_manager_->Reset();
2489 } 2523 }
2490 2524
2491 // Expect metric to be logged if the user autofilled the form. 2525 // Expect metric to be logged if the user autofilled the form.
2492 form.fields[0].is_autofilled = true; 2526 form.fields[0].is_autofilled = true;
2493 { 2527 {
2494 base::HistogramTester histogram_tester; 2528 base::HistogramTester histogram_tester;
2495 autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1)); 2529 autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1));
2496 autofill_manager_->OnDidFillAutofillFormData( 2530 autofill_manager_->OnDidFillAutofillFormData(
2497 TimeTicks::FromInternalValue(5)); 2531 TimeTicks::FromInternalValue(5));
2498 autofill_manager_->WillSubmitForm(form, TimeTicks::FromInternalValue(17)); 2532 autofill_manager_->SubmitForm(form, TimeTicks::FromInternalValue(17));
2499 2533
2500 histogram_tester.ExpectUniqueSample( 2534 histogram_tester.ExpectUniqueSample(
2501 "Autofill.FillDuration.FromLoad.WithAutofill", 16, 1); 2535 "Autofill.FillDuration.FromLoad.WithAutofill", 16, 1);
2502 histogram_tester.ExpectTotalCount( 2536 histogram_tester.ExpectTotalCount(
2503 "Autofill.FillDuration.FromLoad.WithoutAutofill", 0); 2537 "Autofill.FillDuration.FromLoad.WithoutAutofill", 0);
2504 histogram_tester.ExpectUniqueSample( 2538 histogram_tester.ExpectUniqueSample(
2505 "Autofill.FillDuration.FromInteraction.WithAutofill", 12, 1); 2539 "Autofill.FillDuration.FromInteraction.WithAutofill", 12, 1);
2506 histogram_tester.ExpectTotalCount( 2540 histogram_tester.ExpectTotalCount(
2507 "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0); 2541 "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0);
2508 2542
2509 autofill_manager_->Reset(); 2543 autofill_manager_->Reset();
2510 } 2544 }
2511 2545
2512 // Expect metric to be logged if the user both manually filled some fields 2546 // Expect metric to be logged if the user both manually filled some fields
2513 // and autofilled others. Messages can arrive out of order, so make sure they 2547 // and autofilled others. Messages can arrive out of order, so make sure they
2514 // take precedence appropriately. 2548 // take precedence appropriately.
2515 { 2549 {
2516 base::HistogramTester histogram_tester; 2550 base::HistogramTester histogram_tester;
2517 2551
2518 autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1)); 2552 autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1));
2519 autofill_manager_->OnDidFillAutofillFormData( 2553 autofill_manager_->OnDidFillAutofillFormData(
2520 TimeTicks::FromInternalValue(5)); 2554 TimeTicks::FromInternalValue(5));
2521 autofill_manager_->OnTextFieldDidChange(form, form.fields.front(), 2555 autofill_manager_->OnTextFieldDidChange(form, form.fields.front(),
2522 TimeTicks::FromInternalValue(3)); 2556 TimeTicks::FromInternalValue(3));
2523 autofill_manager_->WillSubmitForm(form, TimeTicks::FromInternalValue(17)); 2557 autofill_manager_->SubmitForm(form, TimeTicks::FromInternalValue(17));
2524 2558
2525 histogram_tester.ExpectUniqueSample( 2559 histogram_tester.ExpectUniqueSample(
2526 "Autofill.FillDuration.FromLoad.WithAutofill", 16, 1); 2560 "Autofill.FillDuration.FromLoad.WithAutofill", 16, 1);
2527 histogram_tester.ExpectTotalCount( 2561 histogram_tester.ExpectTotalCount(
2528 "Autofill.FillDuration.FromLoad.WithoutAutofill", 0); 2562 "Autofill.FillDuration.FromLoad.WithoutAutofill", 0);
2529 histogram_tester.ExpectUniqueSample( 2563 histogram_tester.ExpectUniqueSample(
2530 "Autofill.FillDuration.FromInteraction.WithAutofill", 14, 1); 2564 "Autofill.FillDuration.FromInteraction.WithAutofill", 14, 1);
2531 histogram_tester.ExpectTotalCount( 2565 histogram_tester.ExpectTotalCount(
2532 "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0); 2566 "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0);
2533 2567
2534 autofill_manager_->Reset(); 2568 autofill_manager_->Reset();
2535 } 2569 }
2536 2570
2537 // Make sure that loading another form doesn't affect metrics from the first 2571 // Make sure that loading another form doesn't affect metrics from the first
2538 // form. 2572 // form.
2539 { 2573 {
2540 base::HistogramTester histogram_tester; 2574 base::HistogramTester histogram_tester;
2541 autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1)); 2575 autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1));
2542 autofill_manager_->OnFormsSeen(second_forms, 2576 autofill_manager_->OnFormsSeen(second_forms,
2543 TimeTicks::FromInternalValue(3)); 2577 TimeTicks::FromInternalValue(3));
2544 autofill_manager_->OnDidFillAutofillFormData( 2578 autofill_manager_->OnDidFillAutofillFormData(
2545 TimeTicks::FromInternalValue(5)); 2579 TimeTicks::FromInternalValue(5));
2546 autofill_manager_->OnTextFieldDidChange(form, form.fields.front(), 2580 autofill_manager_->OnTextFieldDidChange(form, form.fields.front(),
2547 TimeTicks::FromInternalValue(3)); 2581 TimeTicks::FromInternalValue(3));
2548 autofill_manager_->WillSubmitForm(form, TimeTicks::FromInternalValue(17)); 2582 autofill_manager_->SubmitForm(form, TimeTicks::FromInternalValue(17));
2549 2583
2550 histogram_tester.ExpectUniqueSample( 2584 histogram_tester.ExpectUniqueSample(
2551 "Autofill.FillDuration.FromLoad.WithAutofill", 16, 1); 2585 "Autofill.FillDuration.FromLoad.WithAutofill", 16, 1);
2552 histogram_tester.ExpectTotalCount( 2586 histogram_tester.ExpectTotalCount(
2553 "Autofill.FillDuration.FromLoad.WithoutAutofill", 0); 2587 "Autofill.FillDuration.FromLoad.WithoutAutofill", 0);
2554 histogram_tester.ExpectUniqueSample( 2588 histogram_tester.ExpectUniqueSample(
2555 "Autofill.FillDuration.FromInteraction.WithAutofill", 14, 1); 2589 "Autofill.FillDuration.FromInteraction.WithAutofill", 14, 1);
2556 histogram_tester.ExpectTotalCount( 2590 histogram_tester.ExpectTotalCount(
2557 "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0); 2591 "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0);
2558 2592
2559 autofill_manager_->Reset(); 2593 autofill_manager_->Reset();
2560 } 2594 }
2561 2595
2562 // Make sure that submitting a form that was loaded later will report the 2596 // Make sure that submitting a form that was loaded later will report the
2563 // later loading time. 2597 // later loading time.
2564 { 2598 {
2565 base::HistogramTester histogram_tester; 2599 base::HistogramTester histogram_tester;
2566 autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1)); 2600 autofill_manager_->OnFormsSeen(forms, TimeTicks::FromInternalValue(1));
2567 autofill_manager_->OnFormsSeen(second_forms, 2601 autofill_manager_->OnFormsSeen(second_forms,
2568 TimeTicks::FromInternalValue(5)); 2602 TimeTicks::FromInternalValue(5));
2569 autofill_manager_->WillSubmitForm(second_form, 2603 autofill_manager_->SubmitForm(second_form,
2570 TimeTicks::FromInternalValue(17)); 2604 TimeTicks::FromInternalValue(17));
2571 2605
2572 histogram_tester.ExpectTotalCount( 2606 histogram_tester.ExpectTotalCount(
2573 "Autofill.FillDuration.FromLoad.WithAutofill", 0); 2607 "Autofill.FillDuration.FromLoad.WithAutofill", 0);
2574 histogram_tester.ExpectUniqueSample( 2608 histogram_tester.ExpectUniqueSample(
2575 "Autofill.FillDuration.FromLoad.WithoutAutofill", 12, 1); 2609 "Autofill.FillDuration.FromLoad.WithoutAutofill", 12, 1);
2576 histogram_tester.ExpectTotalCount( 2610 histogram_tester.ExpectTotalCount(
2577 "Autofill.FillDuration.FromInteraction.WithAutofill", 0); 2611 "Autofill.FillDuration.FromInteraction.WithAutofill", 0);
2578 histogram_tester.ExpectTotalCount( 2612 histogram_tester.ExpectTotalCount(
2579 "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0); 2613 "Autofill.FillDuration.FromInteraction.WithoutAutofill", 0);
2580 2614
2581 autofill_manager_->Reset(); 2615 autofill_manager_->Reset();
2582 } 2616 }
2583 } 2617 }
2584 2618
2585 } // namespace autofill 2619 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698