Componentize AccountReconcilor.
[chromium-blink-merge.git] / chrome / browser / autofill / autofill_cc_infobar_delegate_unittest.cc
blob5dc05c36db516e8cb05d229edd065dc1c2b37950
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/autofill/autofill_cc_infobar_delegate.h"
7 #include "base/memory/scoped_ptr.h"
8 #include "chrome/browser/autofill/personal_data_manager_factory.h"
9 #include "chrome/browser/ui/autofill/tab_autofill_manager_delegate.h"
10 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
11 #include "chrome/test/base/testing_profile.h"
12 #include "components/autofill/core/browser/autofill_metrics.h"
13 #include "components/autofill/core/browser/autofill_test_utils.h"
14 #include "components/autofill/core/browser/personal_data_manager.h"
15 #include "testing/gmock/include/gmock/gmock.h"
16 #include "testing/gtest/include/gtest/gtest.h"
18 using testing::_;
20 namespace autofill {
22 namespace {
24 class MockAutofillMetrics : public AutofillMetrics {
25 public:
26 MockAutofillMetrics() {}
27 MOCK_CONST_METHOD1(LogCreditCardInfoBarMetric, void(InfoBarMetric metric));
29 private:
30 DISALLOW_COPY_AND_ASSIGN(MockAutofillMetrics);
33 class TestPersonalDataManager : public PersonalDataManager {
34 public:
35 TestPersonalDataManager() : PersonalDataManager("en-US") {}
37 using PersonalDataManager::set_database;
38 using PersonalDataManager::SetPrefService;
40 // Overridden to avoid a trip to the database.
41 virtual void LoadProfiles() OVERRIDE {}
42 virtual void LoadCreditCards() OVERRIDE {}
44 MOCK_METHOD1(SaveImportedCreditCard,
45 std::string(const CreditCard& imported_credit_card));
47 private:
48 DISALLOW_COPY_AND_ASSIGN(TestPersonalDataManager);
51 } // namespace
53 class AutofillCCInfobarDelegateTest : public ChromeRenderViewHostTestHarness {
54 public:
55 virtual ~AutofillCCInfobarDelegateTest();
57 virtual void SetUp() OVERRIDE;
58 virtual void TearDown() OVERRIDE;
60 protected:
61 scoped_ptr<ConfirmInfoBarDelegate> CreateDelegate(
62 MockAutofillMetrics* metric_logger);
64 scoped_ptr<TestPersonalDataManager> personal_data_;
67 AutofillCCInfobarDelegateTest::~AutofillCCInfobarDelegateTest() {}
69 void AutofillCCInfobarDelegateTest::SetUp() {
70 ChromeRenderViewHostTestHarness::SetUp();
72 // Ensure Mac OS X does not pop up a modal dialog for the Address Book.
73 autofill::test::DisableSystemServices(profile()->GetPrefs());
75 PersonalDataManagerFactory::GetInstance()->SetTestingFactory(profile(), NULL);
77 TabAutofillManagerDelegate::CreateForWebContents(web_contents());
78 autofill::TabAutofillManagerDelegate* manager_delegate =
79 autofill::TabAutofillManagerDelegate::FromWebContents(web_contents());
81 personal_data_.reset(new TestPersonalDataManager());
82 personal_data_->set_database(manager_delegate->GetDatabase());
83 personal_data_->SetPrefService(profile()->GetPrefs());
86 void AutofillCCInfobarDelegateTest::TearDown() {
87 personal_data_.reset();
88 ChromeRenderViewHostTestHarness::TearDown();
91 scoped_ptr<ConfirmInfoBarDelegate>
92 AutofillCCInfobarDelegateTest::CreateDelegate(
93 MockAutofillMetrics* metric_logger) {
94 EXPECT_CALL(*metric_logger,
95 LogCreditCardInfoBarMetric(AutofillMetrics::INFOBAR_SHOWN));
97 CreditCard credit_card;
98 return AutofillCCInfoBarDelegate::Create(
99 metric_logger,
100 base::Bind(
101 base::IgnoreResult(&TestPersonalDataManager::SaveImportedCreditCard),
102 base::Unretained(personal_data_.get()),
103 credit_card));
106 // Test that credit card infobar metrics are logged correctly.
107 TEST_F(AutofillCCInfobarDelegateTest, Metrics) {
108 MockAutofillMetrics metric_logger;
109 ::testing::InSequence dummy;
111 // Accept the infobar.
113 scoped_ptr<ConfirmInfoBarDelegate> infobar(CreateDelegate(&metric_logger));
114 ASSERT_TRUE(infobar);
115 EXPECT_CALL(*personal_data_, SaveImportedCreditCard(_));
116 EXPECT_CALL(metric_logger,
117 LogCreditCardInfoBarMetric(AutofillMetrics::INFOBAR_ACCEPTED));
119 EXPECT_CALL(metric_logger,
120 LogCreditCardInfoBarMetric(AutofillMetrics::INFOBAR_IGNORED))
121 .Times(0);
122 EXPECT_TRUE(infobar->Accept());
125 // Cancel the infobar.
127 scoped_ptr<ConfirmInfoBarDelegate> infobar(CreateDelegate(&metric_logger));
128 ASSERT_TRUE(infobar);
129 EXPECT_CALL(metric_logger,
130 LogCreditCardInfoBarMetric(AutofillMetrics::INFOBAR_DENIED))
131 .Times(1);
132 EXPECT_CALL(metric_logger,
133 LogCreditCardInfoBarMetric(AutofillMetrics::INFOBAR_IGNORED))
134 .Times(0);
135 EXPECT_TRUE(infobar->Cancel());
138 // Dismiss the infobar.
140 scoped_ptr<ConfirmInfoBarDelegate> infobar(CreateDelegate(&metric_logger));
141 ASSERT_TRUE(infobar);
142 EXPECT_CALL(metric_logger,
143 LogCreditCardInfoBarMetric(AutofillMetrics::INFOBAR_DENIED))
144 .Times(1);
145 EXPECT_CALL(metric_logger,
146 LogCreditCardInfoBarMetric(AutofillMetrics::INFOBAR_IGNORED))
147 .Times(0);
148 infobar->InfoBarDismissed();
151 // Ignore the infobar.
153 scoped_ptr<ConfirmInfoBarDelegate> infobar(CreateDelegate(&metric_logger));
154 ASSERT_TRUE(infobar);
155 EXPECT_CALL(metric_logger,
156 LogCreditCardInfoBarMetric(AutofillMetrics::INFOBAR_IGNORED))
157 .Times(1);
161 } // namespace autofill