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..aea85df0d4f6c6d795acd288393c93ac7c34c225 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,22 @@ 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(); |
+ } |
+ |
private: |
+ scoped_refptr<content::MessageLoopRunner> message_loop_runner_; |
DISALLOW_COPY_AND_ASSIGN(AutofillDialogControllerTest); |
}; |
@@ -155,14 +174,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 +189,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 +204,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 +219,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 +230,7 @@ IN_PROC_BROWSER_TEST_F(AutofillDialogControllerTest, |
dialog_controller->Hide(); |
- content::RunMessageLoop(); |
+ RunMessageLoop(); |
EXPECT_EQ(AutofillMetrics::AUTOCHECKOUT_SUCCEEDED, |
metric_logger.autocheckout_status()); |
@@ -228,10 +239,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 +251,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()); |