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

Side by Side Diff: chrome/browser/autofill/autofill_cc_infobar_delegate_unittest.cc

Issue 177923004: Moved CCInfobarDelegate tests out of AutofillMetricsTest (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Response to review Created 6 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/chrome_tests_unit.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/autofill/autofill_cc_infobar_delegate.h"
6
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"
17
18 using testing::_;
19
20 namespace autofill {
21
22 namespace {
23
24 class MockAutofillMetrics : public AutofillMetrics {
25 public:
26 MockAutofillMetrics() {}
27 MOCK_CONST_METHOD1(LogCreditCardInfoBarMetric, void(InfoBarMetric metric));
28
29 private:
30 DISALLOW_COPY_AND_ASSIGN(MockAutofillMetrics);
31 };
32
33 class TestPersonalDataManager : public PersonalDataManager {
34 public:
35 TestPersonalDataManager() : PersonalDataManager("en-US") {}
36
37 using PersonalDataManager::set_database;
38 using PersonalDataManager::SetPrefService;
39
40 // Overridden to avoid a trip to the database.
41 virtual void LoadProfiles() OVERRIDE {}
42 virtual void LoadCreditCards() OVERRIDE {}
43
44 MOCK_METHOD1(SaveImportedCreditCard,
45 std::string(const CreditCard& imported_credit_card));
46
47 private:
48 DISALLOW_COPY_AND_ASSIGN(TestPersonalDataManager);
49 };
50
51 } // namespace
52
53 class AutofillCCInfobarDelegateTest : public ChromeRenderViewHostTestHarness {
54 public:
55 virtual ~AutofillCCInfobarDelegateTest();
56
57 virtual void SetUp() OVERRIDE;
58 virtual void TearDown() OVERRIDE;
59
60 protected:
61 scoped_ptr<ConfirmInfoBarDelegate> CreateDelegate(
62 MockAutofillMetrics* metric_logger);
63
64 scoped_ptr<TestPersonalDataManager> personal_data_;
65 };
66
67 AutofillCCInfobarDelegateTest::~AutofillCCInfobarDelegateTest() {}
68
69 void AutofillCCInfobarDelegateTest::SetUp() {
70 ChromeRenderViewHostTestHarness::SetUp();
71
72 // Ensure Mac OS X does not pop up a modal dialog for the Address Book.
73 autofill::test::DisableSystemServices(profile()->GetPrefs());
74
75 PersonalDataManagerFactory::GetInstance()->SetTestingFactory(profile(), NULL);
76
77 TabAutofillManagerDelegate::CreateForWebContents(web_contents());
78 autofill::TabAutofillManagerDelegate* manager_delegate =
79 autofill::TabAutofillManagerDelegate::FromWebContents(web_contents());
80
81 personal_data_.reset(new TestPersonalDataManager());
82 personal_data_->set_database(manager_delegate->GetDatabase());
83 personal_data_->SetPrefService(profile()->GetPrefs());
84 }
85
86 void AutofillCCInfobarDelegateTest::TearDown() {
87 personal_data_.reset();
88 ChromeRenderViewHostTestHarness::TearDown();
89 }
90
91 scoped_ptr<ConfirmInfoBarDelegate>
92 AutofillCCInfobarDelegateTest::CreateDelegate(
93 MockAutofillMetrics* metric_logger) {
94 EXPECT_CALL(*metric_logger,
95 LogCreditCardInfoBarMetric(AutofillMetrics::INFOBAR_SHOWN));
96
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));
104 }
105
106 // Test that credit card infobar metrics are logged correctly.
107 TEST_F(AutofillCCInfobarDelegateTest, Metrics) {
108 MockAutofillMetrics metric_logger;
109 ::testing::InSequence dummy;
110
111 // Accept the infobar.
112 {
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));
118
119 EXPECT_CALL(metric_logger,
120 LogCreditCardInfoBarMetric(AutofillMetrics::INFOBAR_IGNORED))
121 .Times(0);
122 EXPECT_TRUE(infobar->Accept());
123 }
124
125 // Cancel the infobar.
126 {
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());
136 }
137
138 // Dismiss the infobar.
139 {
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();
149 }
150
151 // Ignore the infobar.
152 {
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);
158 }
159 }
160
161 } // namespace autofill
OLDNEW
« no previous file with comments | « no previous file | chrome/chrome_tests_unit.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698