| 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());
|
|
|