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

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

Issue 2809213002: [autofill] Expand Autofill.Quality.* to log false positives/true negatives. (Closed)
Patch Set: fix unsigned to bool type conversion warning Created 3 years, 8 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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <vector> 10 #include <vector>
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 heuristic_types.push_back(NAME_FULL); 422 heuristic_types.push_back(NAME_FULL);
423 server_types.push_back(NAME_FIRST); 423 server_types.push_back(NAME_FIRST);
424 424
425 test::CreateTestFormField( 425 test::CreateTestFormField(
426 "Autofill Failed", "autofillfailed", "buddy@gmail.com", "text", &field); 426 "Autofill Failed", "autofillfailed", "buddy@gmail.com", "text", &field);
427 field.is_autofilled = false; 427 field.is_autofilled = false;
428 form.fields.push_back(field); 428 form.fields.push_back(field);
429 heuristic_types.push_back(PHONE_HOME_NUMBER); 429 heuristic_types.push_back(PHONE_HOME_NUMBER);
430 server_types.push_back(EMAIL_ADDRESS); 430 server_types.push_back(EMAIL_ADDRESS);
431 431
432 // TYPE_MISMATCH_EMPTY
432 test::CreateTestFormField("Empty", "empty", "", "text", &field); 433 test::CreateTestFormField("Empty", "empty", "", "text", &field);
433 field.is_autofilled = false; 434 field.is_autofilled = false;
434 form.fields.push_back(field); 435 form.fields.push_back(field);
435 heuristic_types.push_back(NAME_FULL); 436 heuristic_types.push_back(NAME_FULL);
436 server_types.push_back(NAME_FIRST); 437 server_types.push_back(NAME_FIRST);
437 438
439 // TYPE_MATCH_EMPTY
440 test::CreateTestFormField("Empty2", "empty2", "", "text", &field);
441 field.is_autofilled = false;
442 form.fields.push_back(field);
443 heuristic_types.push_back(UNKNOWN_TYPE);
444 server_types.push_back(NO_SERVER_DATA);
445
446 // TYPE_MISMASTCH_UNKNOWN
438 test::CreateTestFormField("Unknown", "unknown", "garbage", "text", &field); 447 test::CreateTestFormField("Unknown", "unknown", "garbage", "text", &field);
439 field.is_autofilled = false; 448 field.is_autofilled = false;
440 form.fields.push_back(field); 449 form.fields.push_back(field);
441 heuristic_types.push_back(PHONE_HOME_NUMBER); 450 heuristic_types.push_back(PHONE_HOME_NUMBER);
442 server_types.push_back(EMAIL_ADDRESS); 451 server_types.push_back(EMAIL_ADDRESS);
443 452
453 // TYPE_MATCH_UNKNOWN
454 test::CreateTestFormField("Unknown2", "unknown2", "garbage", "text", &field);
455 field.is_autofilled = false;
456 form.fields.push_back(field);
457 heuristic_types.push_back(UNKNOWN_TYPE);
458 server_types.push_back(NO_SERVER_DATA);
459
444 test::CreateTestFormField("Select", "select", "USA", "select-one", &field); 460 test::CreateTestFormField("Select", "select", "USA", "select-one", &field);
445 field.is_autofilled = false; 461 field.is_autofilled = false;
446 form.fields.push_back(field); 462 form.fields.push_back(field);
447 heuristic_types.push_back(UNKNOWN_TYPE); 463 heuristic_types.push_back(UNKNOWN_TYPE);
448 server_types.push_back(NO_SERVER_DATA); 464 server_types.push_back(NO_SERVER_DATA);
449 465
450 test::CreateTestFormField("Phone", "phone", "2345678901", "tel", &field); 466 test::CreateTestFormField("Phone", "phone", "2345678901", "tel", &field);
451 field.is_autofilled = true; 467 field.is_autofilled = true;
452 form.fields.push_back(field); 468 form.fields.push_back(field);
453 heuristic_types.push_back(PHONE_HOME_CITY_AND_NUMBER); 469 heuristic_types.push_back(PHONE_HOME_CITY_AND_NUMBER);
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 "Autofill.Quality.PredictedType.ByFieldType", 550 "Autofill.Quality.PredictedType.ByFieldType",
535 GetFieldTypeGroupMetric(PHONE_HOME_WHOLE_NUMBER, 551 GetFieldTypeGroupMetric(PHONE_HOME_WHOLE_NUMBER,
536 AutofillMetrics::TYPE_MATCH), 552 AutofillMetrics::TYPE_MATCH),
537 1); 553 1);
538 // Mismatch: 554 // Mismatch:
539 histogram_tester.ExpectBucketCount("Autofill.Quality.PredictedType", 555 histogram_tester.ExpectBucketCount("Autofill.Quality.PredictedType",
540 AutofillMetrics::TYPE_MISMATCH, 1); 556 AutofillMetrics::TYPE_MISMATCH, 1);
541 histogram_tester.ExpectBucketCount( 557 histogram_tester.ExpectBucketCount(
542 "Autofill.Quality.PredictedType.ByFieldType", 558 "Autofill.Quality.PredictedType.ByFieldType",
543 GetFieldTypeGroupMetric(NAME_FULL, AutofillMetrics::TYPE_MISMATCH), 1); 559 GetFieldTypeGroupMetric(NAME_FULL, AutofillMetrics::TYPE_MISMATCH), 1);
560
561 // Mismatch between a prediction and an empty field.
562 histogram_tester.ExpectBucketCount("Autofill.Quality.HeuristicType",
563 AutofillMetrics::TYPE_MISMATCH_EMPTY, 1);
Mathieu 2017/04/11 20:18:40 it's a little bit unfortunate how this test is con
564 histogram_tester.ExpectBucketCount("Autofill.Quality.ServerType",
565 AutofillMetrics::TYPE_MISMATCH_EMPTY, 1);
566 histogram_tester.ExpectBucketCount("Autofill.Quality.PredictedType",
567 AutofillMetrics::TYPE_MISMATCH_EMPTY, 1);
568 histogram_tester.ExpectBucketCount(
569 "Autofill.Quality.HeuristicType.ByFieldType",
570 GetFieldTypeGroupMetric(EMPTY_TYPE, AutofillMetrics::TYPE_MISMATCH_EMPTY),
571 1);
572 histogram_tester.ExpectBucketCount(
573 "Autofill.Quality.ServerType.ByFieldType",
574 GetFieldTypeGroupMetric(EMPTY_TYPE, AutofillMetrics::TYPE_MISMATCH_EMPTY),
575 1);
576 histogram_tester.ExpectBucketCount(
577 "Autofill.Quality.PredictedType.ByFieldType",
578 GetFieldTypeGroupMetric(EMPTY_TYPE, AutofillMetrics::TYPE_MISMATCH_EMPTY),
579 1);
580
581 // Mismatch between a prediction and an unrecognized field.
582 histogram_tester.ExpectBucketCount("Autofill.Quality.HeuristicType",
583 AutofillMetrics::TYPE_MISMATCH_UNKNOWN, 1);
584 histogram_tester.ExpectBucketCount("Autofill.Quality.ServerType",
585 AutofillMetrics::TYPE_MISMATCH_UNKNOWN, 1);
586 histogram_tester.ExpectBucketCount("Autofill.Quality.PredictedType",
587 AutofillMetrics::TYPE_MISMATCH_UNKNOWN, 1);
588 histogram_tester.ExpectBucketCount(
589 "Autofill.Quality.HeuristicType.ByFieldType",
590 GetFieldTypeGroupMetric(UNKNOWN_TYPE,
591 AutofillMetrics::TYPE_MISMATCH_UNKNOWN),
592 1);
593 histogram_tester.ExpectBucketCount(
594 "Autofill.Quality.ServerType.ByFieldType",
595 GetFieldTypeGroupMetric(UNKNOWN_TYPE,
596 AutofillMetrics::TYPE_MISMATCH_UNKNOWN),
597 1);
598 histogram_tester.ExpectBucketCount(
599 "Autofill.Quality.PredictedType.ByFieldType",
600 GetFieldTypeGroupMetric(UNKNOWN_TYPE,
601 AutofillMetrics::TYPE_MISMATCH_UNKNOWN),
602 1);
603
604 // Match between an "unknown" prediction and an empty field.
605 histogram_tester.ExpectBucketCount("Autofill.Quality.HeuristicType",
606 AutofillMetrics::TYPE_MATCH_EMPTY, 1);
607 histogram_tester.ExpectBucketCount("Autofill.Quality.ServerType",
608 AutofillMetrics::TYPE_MATCH_EMPTY, 1);
609 histogram_tester.ExpectBucketCount("Autofill.Quality.PredictedType",
610 AutofillMetrics::TYPE_MATCH_EMPTY, 1);
611 histogram_tester.ExpectBucketCount(
612 "Autofill.Quality.HeuristicType.ByFieldType",
613 GetFieldTypeGroupMetric(EMPTY_TYPE, AutofillMetrics::TYPE_MATCH_EMPTY),
614 1);
615 histogram_tester.ExpectBucketCount(
616 "Autofill.Quality.ServerType.ByFieldType",
617 GetFieldTypeGroupMetric(EMPTY_TYPE, AutofillMetrics::TYPE_MATCH_EMPTY),
618 1);
619 histogram_tester.ExpectBucketCount(
620 "Autofill.Quality.PredictedType.ByFieldType",
621 GetFieldTypeGroupMetric(EMPTY_TYPE, AutofillMetrics::TYPE_MATCH_EMPTY),
622 1);
623
624 // Match between an "unknown" prediction and an unrecognized field.
625 histogram_tester.ExpectBucketCount("Autofill.Quality.HeuristicType",
626 AutofillMetrics::TYPE_MATCH_UNKNOWN, 1);
627 histogram_tester.ExpectBucketCount("Autofill.Quality.ServerType",
628 AutofillMetrics::TYPE_MATCH_UNKNOWN, 1);
629 histogram_tester.ExpectBucketCount("Autofill.Quality.PredictedType",
630 AutofillMetrics::TYPE_MATCH_UNKNOWN, 1);
631 histogram_tester.ExpectBucketCount(
632 "Autofill.Quality.HeuristicType.ByFieldType",
633 GetFieldTypeGroupMetric(UNKNOWN_TYPE,
634 AutofillMetrics::TYPE_MATCH_UNKNOWN),
635 1);
636 histogram_tester.ExpectBucketCount(
637 "Autofill.Quality.ServerType.ByFieldType",
638 GetFieldTypeGroupMetric(UNKNOWN_TYPE,
639 AutofillMetrics::TYPE_MATCH_UNKNOWN),
640 1);
641 histogram_tester.ExpectBucketCount(
642 "Autofill.Quality.PredictedType.ByFieldType",
643 GetFieldTypeGroupMetric(UNKNOWN_TYPE,
644 AutofillMetrics::TYPE_MATCH_UNKNOWN),
645 1);
544 } 646 }
545 647
546 // Ensures that metrics that measure timing some important Autofill functions 648 // Ensures that metrics that measure timing some important Autofill functions
547 // actually are recorded and retrieved. 649 // actually are recorded and retrieved.
548 TEST_F(AutofillMetricsTest, TimingMetrics) { 650 TEST_F(AutofillMetricsTest, TimingMetrics) {
549 base::HistogramTester histogram_tester; 651 base::HistogramTester histogram_tester;
550 652
551 FormData form; 653 FormData form;
552 form.name = ASCIIToUTF16("TestForm"); 654 form.name = ASCIIToUTF16("TestForm");
553 form.origin = GURL("http://example.com/form.html"); 655 form.origin = GURL("http://example.com/form.html");
(...skipping 4142 matching lines...) Expand 10 before | Expand all | Expand 10 after
4696 ukm::UkmServiceTestingHarness ukm_service_test_harness; 4798 ukm::UkmServiceTestingHarness ukm_service_test_harness;
4697 GURL url("https://www.google.com"); 4799 GURL url("https://www.google.com");
4698 std::map<std::string, int> metrics = {{"metric", 1}}; 4800 std::map<std::string, int> metrics = {{"metric", 1}};
4699 4801
4700 EXPECT_FALSE(AutofillMetrics::LogUkm( 4802 EXPECT_FALSE(AutofillMetrics::LogUkm(
4701 ukm_service_test_harness.test_ukm_service(), url, "test_ukm", metrics)); 4803 ukm_service_test_harness.test_ukm_service(), url, "test_ukm", metrics));
4702 EXPECT_EQ(0U, ukm_service_test_harness.test_ukm_service()->sources_count()); 4804 EXPECT_EQ(0U, ukm_service_test_harness.test_ukm_service()->sources_count());
4703 } 4805 }
4704 4806
4705 } // namespace autofill 4807 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698