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

Side by Side Diff: chrome/browser/ui/autofill/card_unmask_prompt_controller_impl_unittest.cc

Issue 949323002: Collecting UMA metrics for the UnmaskPrompt. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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
(Empty)
1 // Copyright (c) 2015 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/ui/autofill/card_unmask_prompt_controller_impl.h"
6
7 #include "base/message_loop/message_loop.h"
8 #include "base/prefs/pref_service.h"
9 #include "base/strings/utf_string_conversions.cc"
10 #include "base/test/histogram_tester.h"
11 #include "chrome/browser/ui/autofill/card_unmask_prompt_view.h"
12 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
13 #include "components/autofill/core/browser/autofill_client.h"
14 #include "components/autofill/core/browser/autofill_metrics.h"
15 #include "components/autofill/core/browser/autofill_test_utils.h"
16 #include "components/autofill/core/common/autofill_pref_names.h"
17 #include "components/user_prefs/user_prefs.h"
18 #include "content/public/browser/web_contents.h"
19 #include "content/public/test/test_utils.h"
20
21 namespace autofill {
22
23 CreditCard CreateCard() {
24 CreditCard credit_card(CreditCard::MASKED_SERVER_CARD, "a123");
25 test::SetCreditCardInfo(&credit_card, "Bonnie Parker",
26 "2109" /* Mastercard */, "12", "2012");
27 credit_card.SetTypeForMaskedCard(kMasterCard);
28 return credit_card;
29 }
30
31 class TestCardUnmaskDelegate : public CardUnmaskDelegate {
32 public:
33 TestCardUnmaskDelegate() : weak_factory_(this) {}
34
35 virtual ~TestCardUnmaskDelegate() {}
36
37 // CardUnmaskDelegate implementation.
38 void OnUnmaskResponse(const UnmaskResponse& response) override {}
39 void OnUnmaskPromptClosed() override {}
40
41 base::WeakPtr<TestCardUnmaskDelegate> GetWeakPtr() {
42 return weak_factory_.GetWeakPtr();
43 }
44
45 private:
46 base::WeakPtrFactory<TestCardUnmaskDelegate> weak_factory_;
47
48 DISALLOW_COPY_AND_ASSIGN(TestCardUnmaskDelegate);
49 };
50
51 class TestCardUnmaskPromptView : public CardUnmaskPromptView {
52 public:
53 void ControllerGone() override {}
54 void DisableAndWaitForVerification() override {}
55 void GotVerificationResult(const base::string16& error_message,
56 bool allow_retry) override {}
57 };
58
59 class TestCardUnmaskPromptController : public CardUnmaskPromptControllerImpl {
60 public:
61 TestCardUnmaskPromptController(
62 content::WebContents* contents,
63 TestCardUnmaskPromptView* test_unmask_prompt_view,
64 scoped_refptr<content::MessageLoopRunner> runner)
65 : CardUnmaskPromptControllerImpl(contents),
66 test_unmask_prompt_view_(test_unmask_prompt_view),
67 runner_(runner),
68 weak_factory_(this) {}
69
70 CardUnmaskPromptView* CreateAndShowView() override {
71 return test_unmask_prompt_view_;
72 }
73 void LoadRiskFingerprint() override {}
74
75 base::WeakPtr<TestCardUnmaskPromptController> GetWeakPtr() {
76 return weak_factory_.GetWeakPtr();
77 }
78
79 private:
80 TestCardUnmaskPromptView* test_unmask_prompt_view_;
81 scoped_refptr<content::MessageLoopRunner> runner_;
82 base::WeakPtrFactory<TestCardUnmaskPromptController> weak_factory_;
83
84 DISALLOW_COPY_AND_ASSIGN(TestCardUnmaskPromptController);
85 };
86
87 class CardUnmaskPromptControllerImplTest
88 : public ChromeRenderViewHostTestHarness {
89 public:
90 CardUnmaskPromptControllerImplTest() {}
91 ~CardUnmaskPromptControllerImplTest() override {}
92
93 void SetUp() override {
94 ChromeRenderViewHostTestHarness::SetUp();
95 test_unmask_prompt_view_.reset(new TestCardUnmaskPromptView());
96 controller_.reset(new TestCardUnmaskPromptController(
97 web_contents(), test_unmask_prompt_view_.get(), runner_));
98 delegate_.reset(new TestCardUnmaskDelegate());
99 SetImportCheckboxState(false);
100 }
101
102 void TearDown() override {
103 ChromeRenderViewHostTestHarness::TearDown();
104 }
105
106 TestCardUnmaskPromptController* controller() { return controller_.get(); }
107 TestCardUnmaskDelegate* delegate() { return delegate_.get(); }
108
109 protected:
110 void SetImportCheckboxState(bool value) {
111 user_prefs::UserPrefs::Get(web_contents()->GetBrowserContext())
112 ->SetBoolean(prefs::kAutofillWalletImportStorageCheckboxState, value);
113 }
114
115 private:
116 // This member must outlive the controller.
117 scoped_refptr<content::MessageLoopRunner> runner_;
118
119 scoped_ptr<TestCardUnmaskPromptView> test_unmask_prompt_view_;
120 scoped_ptr<TestCardUnmaskPromptController> controller_;
121 scoped_ptr<TestCardUnmaskDelegate> delegate_;
122 };
123
124 TEST_F(CardUnmaskPromptControllerImplTest, LogShown) {
125 base::HistogramTester histogram_tester;
126
127 controller()->ShowPrompt(CreateCard(), delegate()->GetWeakPtr());
128
129 histogram_tester.ExpectUniqueSample(
130 "Autofill.UnmaskPrompt.Events",
131 AutofillMetrics::UNMASK_PROMPT_SHOWN, 1);
132 }
133
134 TEST_F(CardUnmaskPromptControllerImplTest, LogClosedNoAttempts) {
135 controller()->ShowPrompt(CreateCard(), delegate()->GetWeakPtr());
136 base::HistogramTester histogram_tester;
137
138 controller()->OnUnmaskDialogClosed();
139
140 histogram_tester.ExpectBucketCount(
141 "Autofill.UnmaskPrompt.Events",
142 AutofillMetrics::UNMASK_PROMPT_CLOSED_NO_ATTEMPTS, 1);
143 }
144
145 TEST_F(CardUnmaskPromptControllerImplTest, LogClosedFailedToUnmask) {
146 controller()->ShowPrompt(CreateCard(), delegate()->GetWeakPtr());
147 controller()->OnUnmaskResponse(base::UTF8ToUTF16("123"),
Evan Stade 2015/03/18 01:47:59 nit: ASCIIToUTF16
Walter Cacau 2015/03/18 17:04:54 Done.
148 base::UTF8ToUTF16("01"),
149 base::UTF8ToUTF16("2015"),
150 false /* should_store_pan */);
151 base::HistogramTester histogram_tester;
152
153 controller()->OnUnmaskDialogClosed();
154
155 histogram_tester.ExpectBucketCount(
156 "Autofill.UnmaskPrompt.Events",
157 AutofillMetrics::UNMASK_PROMPT_CLOSED_FAILED_TO_UNMASK, 1);
158 }
159
160 TEST_F(CardUnmaskPromptControllerImplTest, LogUnmaskedCard) {
161 controller()->ShowPrompt(CreateCard(), delegate()->GetWeakPtr());
162 controller()->OnUnmaskResponse(base::UTF8ToUTF16("123"),
163 base::UTF8ToUTF16("01"),
164 base::UTF8ToUTF16("2015"),
165 false /* should_store_pan */);
166 base::HistogramTester histogram_tester;
167
168 controller()->OnVerificationResult(AutofillClient::SUCCESS);
169 controller()->OnUnmaskDialogClosed();
170
171 histogram_tester.ExpectBucketCount(
172 "Autofill.UnmaskPrompt.Events",
173 AutofillMetrics::UNMASK_PROMPT_UNMASKED_CARD, 1);
174 }
175
176 TEST_F(CardUnmaskPromptControllerImplTest, LogSavedCardLocally) {
177 controller()->ShowPrompt(CreateCard(), delegate()->GetWeakPtr());
178 controller()->OnUnmaskResponse(base::UTF8ToUTF16("123"),
179 base::UTF8ToUTF16("01"),
180 base::UTF8ToUTF16("2015"),
181 true /* should_store_pan */);
182 base::HistogramTester histogram_tester;
183
184 controller()->OnVerificationResult(AutofillClient::SUCCESS);
185 controller()->OnUnmaskDialogClosed();
186
187 histogram_tester.ExpectBucketCount(
188 "Autofill.UnmaskPrompt.Events",
189 AutofillMetrics::UNMASK_PROMPT_SAVED_CARD_LOCALLY, 1);
190 }
191
192 TEST_F(CardUnmaskPromptControllerImplTest, LogDidOptIn) {
193 SetImportCheckboxState(false);
194 controller()->ShowPrompt(CreateCard(), delegate()->GetWeakPtr());
195 base::HistogramTester histogram_tester;
196
197 controller()->OnUnmaskResponse(base::UTF8ToUTF16("123"),
198 base::UTF8ToUTF16("01"),
199 base::UTF8ToUTF16("2015"),
200 true /* should_store_pan */);
201 controller()->OnUnmaskDialogClosed();
202
203 histogram_tester.ExpectBucketCount(
204 "Autofill.UnmaskPrompt.Events",
205 AutofillMetrics::UNMASK_PROMPT_LOCAL_SAVE_DID_OPT_IN, 1);
206 }
207
208 TEST_F(CardUnmaskPromptControllerImplTest, LogDidNotOptIn) {
209 SetImportCheckboxState(false);
210 controller()->ShowPrompt(CreateCard(), delegate()->GetWeakPtr());
211 base::HistogramTester histogram_tester;
212
213 controller()->OnUnmaskResponse(base::UTF8ToUTF16("123"),
214 base::UTF8ToUTF16("01"),
215 base::UTF8ToUTF16("2015"),
216 false /* should_store_pan */);
217 controller()->OnUnmaskDialogClosed();
218
219 histogram_tester.ExpectBucketCount(
220 "Autofill.UnmaskPrompt.Events",
221 AutofillMetrics::UNMASK_PROMPT_LOCAL_SAVE_DID_NOT_OPT_IN, 1);
222 }
223
224 TEST_F(CardUnmaskPromptControllerImplTest, LogDidOptOut) {
225 SetImportCheckboxState(true);
226 controller()->ShowPrompt(CreateCard(), delegate()->GetWeakPtr());
227 base::HistogramTester histogram_tester;
228
229 controller()->OnUnmaskResponse(base::UTF8ToUTF16("123"),
230 base::UTF8ToUTF16("01"),
231 base::UTF8ToUTF16("2015"),
232 false /* should_store_pan */);
233 controller()->OnUnmaskDialogClosed();
234
235 histogram_tester.ExpectBucketCount(
236 "Autofill.UnmaskPrompt.Events",
237 AutofillMetrics::UNMASK_PROMPT_LOCAL_SAVE_DID_OPT_OUT, 1);
238 }
239
240 TEST_F(CardUnmaskPromptControllerImplTest, LogDidNotOptOut) {
241 SetImportCheckboxState(true);
242 controller()->ShowPrompt(CreateCard(), delegate()->GetWeakPtr());
243 base::HistogramTester histogram_tester;
244
245 controller()->OnUnmaskResponse(base::UTF8ToUTF16("123"),
246 base::UTF8ToUTF16("01"),
247 base::UTF8ToUTF16("2015"),
248 true /* should_store_pan */);
249 controller()->OnUnmaskDialogClosed();
250
251 histogram_tester.ExpectBucketCount(
252 "Autofill.UnmaskPrompt.Events",
253 AutofillMetrics::UNMASK_PROMPT_LOCAL_SAVE_DID_NOT_OPT_OUT, 1);
254 }
255
256 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698