| Index: chrome/browser/autofill/autofill_metrics_unittest.cc
|
| diff --git a/chrome/browser/autofill/autofill_metrics_unittest.cc b/chrome/browser/autofill/autofill_metrics_unittest.cc
|
| index 40fb33fec085a66c81466c168d51460678c4a665..9946a5d3498e94fe0dfc1e874279832791eeaccf 100644
|
| --- a/chrome/browser/autofill/autofill_metrics_unittest.cc
|
| +++ b/chrome/browser/autofill/autofill_metrics_unittest.cc
|
| @@ -8,6 +8,7 @@
|
| #include "base/string16.h"
|
| #include "base/time.h"
|
| #include "base/utf_string_conversions.h"
|
| +#include "chrome/browser/autofill/autocheckout_infobar_delegate.h"
|
| #include "chrome/browser/autofill/autofill_cc_infobar_delegate.h"
|
| #include "chrome/browser/autofill/autofill_common_test.h"
|
| #include "chrome/browser/autofill/autofill_manager.h"
|
| @@ -22,6 +23,7 @@
|
| #include "chrome/test/base/chrome_render_view_host_test_harness.h"
|
| #include "chrome/test/base/testing_profile.h"
|
| #include "content/public/test/test_browser_thread.h"
|
| +#include "googleurl/src/gurl.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "ui/gfx/rect.h"
|
| @@ -39,6 +41,7 @@ class MockAutofillMetrics : public AutofillMetrics {
|
| public:
|
| MockAutofillMetrics() {}
|
| MOCK_CONST_METHOD1(LogCreditCardInfoBarMetric, void(InfoBarMetric metric));
|
| + MOCK_CONST_METHOD1(LogAutocheckoutInfoBarMetric, void(InfoBarMetric metric));
|
| MOCK_CONST_METHOD1(LogDeveloperEngagementMetric,
|
| void(DeveloperEngagementMetric metric));
|
| MOCK_CONST_METHOD3(LogHeuristicTypePrediction,
|
| @@ -257,6 +260,25 @@ class TestAutofillManager : public AutofillManager {
|
| DISALLOW_COPY_AND_ASSIGN(TestAutofillManager);
|
| };
|
|
|
| +class TestAutocheckoutManager : public AutocheckoutManager {
|
| + public:
|
| + explicit TestAutocheckoutManager(AutofillManager* autofill_manager)
|
| + : AutocheckoutManager(autofill_manager) {
|
| + }
|
| +
|
| + virtual void ShowAutocheckoutDialog(
|
| + const GURL& frame_url,
|
| + const content::SSLStatus& ssl_status) OVERRIDE {
|
| + // no-op. Just used as callback from autocheckout_infobar_delegate.
|
| + }
|
| +
|
| + virtual ~TestAutocheckoutManager() {
|
| + }
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(TestAutocheckoutManager);
|
| +};
|
| +
|
| } // namespace
|
|
|
| class AutofillMetricsTest : public ChromeRenderViewHostTestHarness {
|
| @@ -272,6 +294,9 @@ class AutofillMetricsTest : public ChromeRenderViewHostTestHarness {
|
| MockAutofillMetrics* metric_logger,
|
| CreditCard** created_card);
|
|
|
| + scoped_ptr<ConfirmInfoBarDelegate> CreateAutocheckoutDelegate(
|
| + MockAutofillMetrics* metric_logger);
|
| +
|
| content::TestBrowserThread ui_thread_;
|
| content::TestBrowserThread file_thread_;
|
|
|
| @@ -347,6 +372,20 @@ scoped_ptr<ConfirmInfoBarDelegate> AutofillMetricsTest::CreateDelegate(
|
| metric_logger);
|
| }
|
|
|
| +scoped_ptr<ConfirmInfoBarDelegate>
|
| +AutofillMetricsTest::CreateAutocheckoutDelegate(
|
| + MockAutofillMetrics* metric_logger) {
|
| + EXPECT_CALL(*metric_logger,
|
| + LogAutocheckoutInfoBarMetric(AutofillMetrics::INFOBAR_SHOWN));
|
| + GURL url("www.google.com");
|
| + content::SSLStatus ssl_status;
|
| + return AutocheckoutInfoBarDelegate::Create(
|
| + *metric_logger,
|
| + url,
|
| + ssl_status,
|
| + new TestAutocheckoutManager(NULL));
|
| +}
|
| +
|
| // Test that we log quality metrics appropriately.
|
| TEST_F(AutofillMetricsTest, QualityMetrics) {
|
| // Set up our form data.
|
| @@ -1186,6 +1225,65 @@ TEST_F(AutofillMetricsTest, CreditCardInfoBar) {
|
| }
|
| }
|
|
|
| +// Test that autofill flow infobar metrics are logged correctly.
|
| +TEST_F(AutofillMetricsTest, AutocheckoutInfoBar) {
|
| + MockAutofillMetrics metric_logger;
|
| + ::testing::InSequence dummy;
|
| +
|
| + // Accept the infobar.
|
| + {
|
| + scoped_ptr<ConfirmInfoBarDelegate> infobar(
|
| + CreateAutocheckoutDelegate(&metric_logger));
|
| + ASSERT_TRUE(infobar);
|
| + EXPECT_CALL(metric_logger,
|
| + LogAutocheckoutInfoBarMetric(
|
| + AutofillMetrics::INFOBAR_ACCEPTED)).Times(1);
|
| + EXPECT_CALL(metric_logger,
|
| + LogAutocheckoutInfoBarMetric(
|
| + AutofillMetrics::INFOBAR_IGNORED)).Times(0);
|
| + EXPECT_TRUE(infobar->Accept());
|
| + }
|
| +
|
| + // Cancel the infobar.
|
| + {
|
| + scoped_ptr<ConfirmInfoBarDelegate> infobar(
|
| + CreateAutocheckoutDelegate(&metric_logger));
|
| + ASSERT_TRUE(infobar);
|
| + EXPECT_CALL(metric_logger,
|
| + LogAutocheckoutInfoBarMetric(
|
| + AutofillMetrics::INFOBAR_DENIED)).Times(1);
|
| + EXPECT_CALL(metric_logger,
|
| + LogAutocheckoutInfoBarMetric(
|
| + AutofillMetrics::INFOBAR_IGNORED)).Times(0);
|
| + EXPECT_TRUE(infobar->Cancel());
|
| + }
|
| +
|
| + // Dismiss the infobar.
|
| + {
|
| + scoped_ptr<ConfirmInfoBarDelegate> infobar(
|
| + CreateAutocheckoutDelegate(&metric_logger));
|
| + ASSERT_TRUE(infobar);
|
| + EXPECT_CALL(metric_logger,
|
| + LogAutocheckoutInfoBarMetric(
|
| + AutofillMetrics::INFOBAR_DENIED)).Times(1);
|
| + EXPECT_CALL(metric_logger,
|
| + LogAutocheckoutInfoBarMetric(
|
| + AutofillMetrics::INFOBAR_IGNORED)).Times(0);
|
| + infobar->InfoBarDismissed();
|
| + }
|
| +
|
| + // Ignore the infobar.
|
| + {
|
| + scoped_ptr<ConfirmInfoBarDelegate> infobar(
|
| + CreateAutocheckoutDelegate(&metric_logger));
|
| + ASSERT_TRUE(infobar);
|
| + EXPECT_CALL(metric_logger,
|
| + LogAutocheckoutInfoBarMetric(
|
| + AutofillMetrics::INFOBAR_IGNORED)).Times(1);
|
| + }
|
| +}
|
| +
|
| +
|
| // Test that server query response experiment id metrics are logged correctly.
|
| TEST_F(AutofillMetricsTest, ServerQueryExperimentIdForQuery) {
|
| MockAutofillMetrics metric_logger;
|
|
|