Chromium Code Reviews| Index: chrome/browser/ui/autofill/autofill_dialog_controller_browsertest.cc |
| diff --git a/chrome/browser/ui/autofill/autofill_dialog_controller_browsertest.cc b/chrome/browser/ui/autofill/autofill_dialog_controller_browsertest.cc |
| index 80128388ff403cc8646a573a79c84a24cba62dca..123cb8e4ba1f6b361b80e3399ca1c3298177a50b 100644 |
| --- a/chrome/browser/ui/autofill/autofill_dialog_controller_browsertest.cc |
| +++ b/chrome/browser/ui/autofill/autofill_dialog_controller_browsertest.cc |
| @@ -3,6 +3,7 @@ |
| // found in the LICENSE file. |
| #include "base/bind.h" |
| +#include "base/memory/ref_counted.h" |
| #include "base/message_loop.h" |
| #include "base/time.h" |
| #include "base/utf_string_conversions.h" |
| @@ -74,21 +75,23 @@ class TestAutofillDialogController : public AutofillDialogControllerImpl { |
| TestAutofillDialogController(content::WebContents* contents, |
| const FormData& form_data, |
| const AutofillMetrics& metric_logger, |
| + scoped_refptr<content::MessageLoopRunner> runner, |
| const DialogType dialog_type) |
| : AutofillDialogControllerImpl(contents, |
| form_data, |
| GURL(), |
| dialog_type, |
| base::Bind(&MockCallback)), |
| - metric_logger_(metric_logger) { |
| + metric_logger_(metric_logger), |
| + message_loop_runner_(runner) { |
| DisableWallet(); |
| } |
| virtual ~TestAutofillDialogController() {} |
| virtual void ViewClosed() OVERRIDE { |
| + message_loop_runner_->Quit(); |
| AutofillDialogControllerImpl::ViewClosed(); |
| - MessageLoop::current()->Quit(); |
| } |
| virtual bool InputIsValid(AutofillFieldType type, |
| @@ -111,6 +114,7 @@ class TestAutofillDialogController : public AutofillDialogControllerImpl { |
| } |
| const AutofillMetrics& metric_logger_; |
| + scoped_refptr<content::MessageLoopRunner> message_loop_runner_; |
| DISALLOW_COPY_AND_ASSIGN(TestAutofillDialogController); |
| }; |
| @@ -126,7 +130,21 @@ class AutofillDialogControllerTest : public InProcessBrowserTest { |
| return browser()->tab_strip_model()->GetActiveWebContents(); |
| } |
| + TestAutofillDialogController* CreateController( |
| + const FormData& form, |
| + const AutofillMetrics& metric_logger, |
| + const DialogType dialog_type) { |
| + message_loop_runner_ = new content::MessageLoopRunner; |
| + return new TestAutofillDialogController( |
| + GetActiveWebContents(), form, metric_logger, message_loop_runner_, |
| + dialog_type); |
| + } |
| + |
| + void RunMessageLoop() { |
| + message_loop_runner_->Run(); |
| + } |
|
Ilya Sherman
2013/04/20 01:19:07
nit: Please leave a blank line after this one.
groby-ooo-7-16
2013/04/20 02:28:37
Done.
|
| private: |
| + scoped_refptr<content::MessageLoopRunner> message_loop_runner_; |
| DISALLOW_COPY_AND_ASSIGN(AutofillDialogControllerTest); |
| }; |
| @@ -155,14 +173,12 @@ IN_PROC_BROWSER_TEST_F(AutofillDialogControllerTest, |
| // Submit the form data. |
| { |
| MockAutofillMetrics metric_logger; |
| - TestAutofillDialogController* dialog_controller = |
| - new TestAutofillDialogController( |
| - GetActiveWebContents(), form, metric_logger, |
| - DIALOG_TYPE_REQUEST_AUTOCOMPLETE); |
| + TestAutofillDialogController* dialog_controller = CreateController( |
| + form, metric_logger, DIALOG_TYPE_REQUEST_AUTOCOMPLETE); |
| dialog_controller->Show(); |
| dialog_controller->view()->SubmitForTesting(); |
| - content::RunMessageLoop(); |
| + RunMessageLoop(); |
| EXPECT_EQ(AutofillMetrics::DIALOG_ACCEPTED, |
| metric_logger.dialog_dismissal_action()); |
| @@ -172,14 +188,12 @@ IN_PROC_BROWSER_TEST_F(AutofillDialogControllerTest, |
| // Cancel out of the dialog. |
| { |
| MockAutofillMetrics metric_logger; |
| - TestAutofillDialogController* dialog_controller = |
| - new TestAutofillDialogController( |
| - GetActiveWebContents(), form, metric_logger, |
| - DIALOG_TYPE_AUTOCHECKOUT); |
| + TestAutofillDialogController* dialog_controller = CreateController( |
| + form, metric_logger, DIALOG_TYPE_AUTOCHECKOUT); |
| dialog_controller->Show(); |
| dialog_controller->view()->CancelForTesting(); |
| - content::RunMessageLoop(); |
| + RunMessageLoop(); |
| EXPECT_EQ(AutofillMetrics::DIALOG_CANCELED, |
| metric_logger.dialog_dismissal_action()); |
| @@ -189,14 +203,12 @@ IN_PROC_BROWSER_TEST_F(AutofillDialogControllerTest, |
| // Take some other action that dismisses the dialog. |
| { |
| MockAutofillMetrics metric_logger; |
| - TestAutofillDialogController* dialog_controller = |
| - new TestAutofillDialogController( |
| - GetActiveWebContents(), form, metric_logger, |
| - DIALOG_TYPE_AUTOCHECKOUT); |
| + TestAutofillDialogController* dialog_controller = CreateController( |
| + form, metric_logger, DIALOG_TYPE_AUTOCHECKOUT); |
| dialog_controller->Show(); |
| dialog_controller->Hide(); |
| - content::RunMessageLoop(); |
| + RunMessageLoop(); |
| EXPECT_EQ(AutofillMetrics::DIALOG_CANCELED, |
| metric_logger.dialog_dismissal_action()); |
| @@ -206,10 +218,8 @@ IN_PROC_BROWSER_TEST_F(AutofillDialogControllerTest, |
| // Test Autocheckout success metrics. |
| { |
| MockAutofillMetrics metric_logger; |
| - TestAutofillDialogController* dialog_controller = |
| - new TestAutofillDialogController( |
| - GetActiveWebContents(), form, metric_logger, |
| - DIALOG_TYPE_AUTOCHECKOUT); |
| + TestAutofillDialogController* dialog_controller = CreateController( |
| + form, metric_logger, DIALOG_TYPE_AUTOCHECKOUT); |
| dialog_controller->Show(); |
| dialog_controller->view()->SubmitForTesting(); |
| @@ -219,7 +229,7 @@ IN_PROC_BROWSER_TEST_F(AutofillDialogControllerTest, |
| dialog_controller->Hide(); |
| - content::RunMessageLoop(); |
| + RunMessageLoop(); |
| EXPECT_EQ(AutofillMetrics::AUTOCHECKOUT_SUCCEEDED, |
| metric_logger.autocheckout_status()); |
| @@ -228,10 +238,8 @@ IN_PROC_BROWSER_TEST_F(AutofillDialogControllerTest, |
| // Test Autocheckout failure metric. |
| { |
| MockAutofillMetrics metric_logger; |
| - TestAutofillDialogController* dialog_controller = |
| - new TestAutofillDialogController( |
| - GetActiveWebContents(), form, metric_logger, |
| - DIALOG_TYPE_AUTOCHECKOUT); |
| + TestAutofillDialogController* dialog_controller = CreateController( |
| + form, metric_logger, DIALOG_TYPE_AUTOCHECKOUT); |
| dialog_controller->Show(); |
| dialog_controller->view()->SubmitForTesting(); |
| @@ -242,7 +250,7 @@ IN_PROC_BROWSER_TEST_F(AutofillDialogControllerTest, |
| dialog_controller->OnAutocheckoutError(); |
| dialog_controller->view()->CancelForTesting(); |
| - content::RunMessageLoop(); |
| + RunMessageLoop(); |
| EXPECT_EQ(AutofillMetrics::AUTOCHECKOUT_FAILED, |
| metric_logger.autocheckout_status()); |