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

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

Issue 14136005: [Autofill] Fix MessageLoop in test. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use MessageLoopRunner. Created 7 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/memory/ref_counted.h"
6 #include "base/message_loop.h" 7 #include "base/message_loop.h"
7 #include "base/time.h" 8 #include "base/time.h"
8 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
9 #include "chrome/browser/ui/autofill/autofill_dialog_controller_impl.h" 10 #include "chrome/browser/ui/autofill/autofill_dialog_controller_impl.h"
10 #include "chrome/browser/ui/autofill/autofill_dialog_view.h" 11 #include "chrome/browser/ui/autofill/autofill_dialog_view.h"
11 #include "chrome/browser/ui/browser.h" 12 #include "chrome/browser/ui/browser.h"
12 #include "chrome/browser/ui/tabs/tab_strip_model.h" 13 #include "chrome/browser/ui/tabs/tab_strip_model.h"
13 #include "chrome/test/base/in_process_browser_test.h" 14 #include "chrome/test/base/in_process_browser_test.h"
14 #include "components/autofill/browser/autofill_metrics.h" 15 #include "components/autofill/browser/autofill_metrics.h"
15 #include "components/autofill/common/form_data.h" 16 #include "components/autofill/common/form_data.h"
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 public: 74 public:
74 TestAutofillDialogController(content::WebContents* contents, 75 TestAutofillDialogController(content::WebContents* contents,
75 const FormData& form_data, 76 const FormData& form_data,
76 const AutofillMetrics& metric_logger, 77 const AutofillMetrics& metric_logger,
77 const DialogType dialog_type) 78 const DialogType dialog_type)
78 : AutofillDialogControllerImpl(contents, 79 : AutofillDialogControllerImpl(contents,
79 form_data, 80 form_data,
80 GURL(), 81 GURL(),
81 dialog_type, 82 dialog_type,
82 base::Bind(&MockCallback)), 83 base::Bind(&MockCallback)),
83 metric_logger_(metric_logger) { 84 metric_logger_(metric_logger),
85 message_loop_runner_(new content::MessageLoopRunner) {
84 DisableWallet(); 86 DisableWallet();
85 } 87 }
86 88
87 virtual ~TestAutofillDialogController() {} 89 virtual ~TestAutofillDialogController() {}
88 90
89 virtual void ViewClosed() OVERRIDE { 91 virtual void ViewClosed() OVERRIDE {
90 AutofillDialogControllerImpl::ViewClosed(); 92 AutofillDialogControllerImpl::ViewClosed();
91 MessageLoop::current()->Quit(); 93 message_loop_runner_->Quit();
92 } 94 }
93 95
94 virtual bool InputIsValid(AutofillFieldType type, 96 virtual bool InputIsValid(AutofillFieldType type,
95 const string16& value) OVERRIDE { 97 const string16& value) OVERRIDE {
96 return true; 98 return true;
97 } 99 }
98 100
99 virtual std::vector<AutofillFieldType> InputsAreValid( 101 virtual std::vector<AutofillFieldType> InputsAreValid(
100 const DetailOutputMap& inputs, ValidationType validation_type) OVERRIDE { 102 const DetailOutputMap& inputs, ValidationType validation_type) OVERRIDE {
101 return std::vector<AutofillFieldType>(); 103 return std::vector<AutofillFieldType>();
102 } 104 }
103 105
104 // Increase visibility for testing. 106 // Increase visibility for testing.
105 AutofillDialogView* view() { return AutofillDialogControllerImpl::view(); } 107 AutofillDialogView* view() { return AutofillDialogControllerImpl::view(); }
106 108
109 void RunMessageLoop(void) {
Ilya Sherman 2013/04/17 00:03:55 nit: Docs
Ilya Sherman 2013/04/17 00:03:55 nit: Omit the second "void"
110 message_loop_runner_->Run();
111 }
112
107 private: 113 private:
108 // To specify our own metric logger. 114 // To specify our own metric logger.
109 virtual const AutofillMetrics& GetMetricLogger() const OVERRIDE { 115 virtual const AutofillMetrics& GetMetricLogger() const OVERRIDE {
110 return metric_logger_; 116 return metric_logger_;
111 } 117 }
112 118
113 const AutofillMetrics& metric_logger_; 119 const AutofillMetrics& metric_logger_;
120 scoped_refptr<content::MessageLoopRunner> message_loop_runner_;
114 121
115 DISALLOW_COPY_AND_ASSIGN(TestAutofillDialogController); 122 DISALLOW_COPY_AND_ASSIGN(TestAutofillDialogController);
116 }; 123 };
117 124
118 } // namespace 125 } // namespace
119 126
120 class AutofillDialogControllerTest : public InProcessBrowserTest { 127 class AutofillDialogControllerTest : public InProcessBrowserTest {
121 public: 128 public:
122 AutofillDialogControllerTest() {} 129 AutofillDialogControllerTest() {}
123 virtual ~AutofillDialogControllerTest() {} 130 virtual ~AutofillDialogControllerTest() {}
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 // Submit the form data. 162 // Submit the form data.
156 { 163 {
157 MockAutofillMetrics metric_logger; 164 MockAutofillMetrics metric_logger;
158 TestAutofillDialogController* dialog_controller = 165 TestAutofillDialogController* dialog_controller =
159 new TestAutofillDialogController( 166 new TestAutofillDialogController(
160 GetActiveWebContents(), form, metric_logger, 167 GetActiveWebContents(), form, metric_logger,
161 DIALOG_TYPE_REQUEST_AUTOCOMPLETE); 168 DIALOG_TYPE_REQUEST_AUTOCOMPLETE);
162 dialog_controller->Show(); 169 dialog_controller->Show();
163 dialog_controller->view()->SubmitForTesting(); 170 dialog_controller->view()->SubmitForTesting();
164 171
165 content::RunMessageLoop(); 172 dialog_controller->RunMessageLoop();
166 173
167 EXPECT_EQ(AutofillMetrics::DIALOG_ACCEPTED, 174 EXPECT_EQ(AutofillMetrics::DIALOG_ACCEPTED,
168 metric_logger.dialog_dismissal_action()); 175 metric_logger.dialog_dismissal_action());
169 EXPECT_EQ(DIALOG_TYPE_REQUEST_AUTOCOMPLETE, metric_logger.dialog_type()); 176 EXPECT_EQ(DIALOG_TYPE_REQUEST_AUTOCOMPLETE, metric_logger.dialog_type());
170 } 177 }
171 178
172 // Cancel out of the dialog. 179 // Cancel out of the dialog.
173 { 180 {
174 MockAutofillMetrics metric_logger; 181 MockAutofillMetrics metric_logger;
175 TestAutofillDialogController* dialog_controller = 182 TestAutofillDialogController* dialog_controller =
176 new TestAutofillDialogController( 183 new TestAutofillDialogController(
177 GetActiveWebContents(), form, metric_logger, 184 GetActiveWebContents(), form, metric_logger,
178 DIALOG_TYPE_AUTOCHECKOUT); 185 DIALOG_TYPE_AUTOCHECKOUT);
179 dialog_controller->Show(); 186 dialog_controller->Show();
180 dialog_controller->view()->CancelForTesting(); 187 dialog_controller->view()->CancelForTesting();
181 188
182 content::RunMessageLoop(); 189 dialog_controller->RunMessageLoop();
183 190
184 EXPECT_EQ(AutofillMetrics::DIALOG_CANCELED, 191 EXPECT_EQ(AutofillMetrics::DIALOG_CANCELED,
185 metric_logger.dialog_dismissal_action()); 192 metric_logger.dialog_dismissal_action());
186 EXPECT_EQ(DIALOG_TYPE_AUTOCHECKOUT, metric_logger.dialog_type()); 193 EXPECT_EQ(DIALOG_TYPE_AUTOCHECKOUT, metric_logger.dialog_type());
187 } 194 }
188 195
189 // Take some other action that dismisses the dialog. 196 // Take some other action that dismisses the dialog.
190 { 197 {
191 MockAutofillMetrics metric_logger; 198 MockAutofillMetrics metric_logger;
192 TestAutofillDialogController* dialog_controller = 199 TestAutofillDialogController* dialog_controller =
193 new TestAutofillDialogController( 200 new TestAutofillDialogController(
194 GetActiveWebContents(), form, metric_logger, 201 GetActiveWebContents(), form, metric_logger,
195 DIALOG_TYPE_AUTOCHECKOUT); 202 DIALOG_TYPE_AUTOCHECKOUT);
196 dialog_controller->Show(); 203 dialog_controller->Show();
197 dialog_controller->Hide(); 204 dialog_controller->Hide();
198 205
199 content::RunMessageLoop(); 206 dialog_controller->RunMessageLoop();
200 207
201 EXPECT_EQ(AutofillMetrics::DIALOG_CANCELED, 208 EXPECT_EQ(AutofillMetrics::DIALOG_CANCELED,
202 metric_logger.dialog_dismissal_action()); 209 metric_logger.dialog_dismissal_action());
203 EXPECT_EQ(DIALOG_TYPE_AUTOCHECKOUT, metric_logger.dialog_type()); 210 EXPECT_EQ(DIALOG_TYPE_AUTOCHECKOUT, metric_logger.dialog_type());
204 } 211 }
205 212
206 // Test Autocheckout success metrics. 213 // Test Autocheckout success metrics.
207 { 214 {
208 MockAutofillMetrics metric_logger; 215 MockAutofillMetrics metric_logger;
209 TestAutofillDialogController* dialog_controller = 216 TestAutofillDialogController* dialog_controller =
210 new TestAutofillDialogController( 217 new TestAutofillDialogController(
211 GetActiveWebContents(), form, metric_logger, 218 GetActiveWebContents(), form, metric_logger,
212 DIALOG_TYPE_AUTOCHECKOUT); 219 DIALOG_TYPE_AUTOCHECKOUT);
213 dialog_controller->Show(); 220 dialog_controller->Show();
214 dialog_controller->view()->SubmitForTesting(); 221 dialog_controller->view()->SubmitForTesting();
215 222
216 EXPECT_EQ(AutofillMetrics::DIALOG_ACCEPTED, 223 EXPECT_EQ(AutofillMetrics::DIALOG_ACCEPTED,
217 metric_logger.dialog_dismissal_action()); 224 metric_logger.dialog_dismissal_action());
218 EXPECT_EQ(DIALOG_TYPE_AUTOCHECKOUT, metric_logger.dialog_type()); 225 EXPECT_EQ(DIALOG_TYPE_AUTOCHECKOUT, metric_logger.dialog_type());
219 226
220 dialog_controller->Hide(); 227 dialog_controller->Hide();
221 228
222 content::RunMessageLoop(); 229 dialog_controller->RunMessageLoop();
223 230
224 EXPECT_EQ(AutofillMetrics::AUTOCHECKOUT_SUCCEEDED, 231 EXPECT_EQ(AutofillMetrics::AUTOCHECKOUT_SUCCEEDED,
225 metric_logger.autocheckout_status()); 232 metric_logger.autocheckout_status());
226 } 233 }
227 234
228 // Test Autocheckout failure metric. 235 // Test Autocheckout failure metric.
229 { 236 {
230 MockAutofillMetrics metric_logger; 237 MockAutofillMetrics metric_logger;
231 TestAutofillDialogController* dialog_controller = 238 TestAutofillDialogController* dialog_controller =
232 new TestAutofillDialogController( 239 new TestAutofillDialogController(
233 GetActiveWebContents(), form, metric_logger, 240 GetActiveWebContents(), form, metric_logger,
234 DIALOG_TYPE_AUTOCHECKOUT); 241 DIALOG_TYPE_AUTOCHECKOUT);
235 dialog_controller->Show(); 242 dialog_controller->Show();
236 dialog_controller->view()->SubmitForTesting(); 243 dialog_controller->view()->SubmitForTesting();
237 244
238 EXPECT_EQ(AutofillMetrics::DIALOG_ACCEPTED, 245 EXPECT_EQ(AutofillMetrics::DIALOG_ACCEPTED,
239 metric_logger.dialog_dismissal_action()); 246 metric_logger.dialog_dismissal_action());
240 EXPECT_EQ(DIALOG_TYPE_AUTOCHECKOUT, metric_logger.dialog_type()); 247 EXPECT_EQ(DIALOG_TYPE_AUTOCHECKOUT, metric_logger.dialog_type());
241 248
242 dialog_controller->OnAutocheckoutError(); 249 dialog_controller->OnAutocheckoutError();
243 dialog_controller->view()->CancelForTesting(); 250 dialog_controller->view()->CancelForTesting();
244 251
245 content::RunMessageLoop(); 252 dialog_controller->RunMessageLoop();
246 253
247 EXPECT_EQ(AutofillMetrics::AUTOCHECKOUT_FAILED, 254 EXPECT_EQ(AutofillMetrics::AUTOCHECKOUT_FAILED,
248 metric_logger.autocheckout_status()); 255 metric_logger.autocheckout_status());
249 } 256 }
250 } 257 }
251 258
252 } // namespace autofill 259 } // namespace autofill
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698