| Index: chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc
|
| diff --git a/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc b/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc
|
| index ddb60c24ffcc8757fd6a83245bd67a20e3bc2bf1..c8d692c7279fd31cc7ced3f9a2127313fb7ff0b9 100644
|
| --- a/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc
|
| +++ b/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc
|
| @@ -241,7 +241,8 @@ class TestAutofillDialogController
|
| mock_wallet_client_(
|
| Profile::FromBrowserContext(contents->GetBrowserContext())->
|
| GetRequestContext(), this),
|
| - mock_new_card_bubble_controller_(mock_new_card_bubble_controller) {}
|
| + mock_new_card_bubble_controller_(mock_new_card_bubble_controller),
|
| + submit_button_delay_count_(0) {}
|
|
|
| virtual ~TestAutofillDialogController() {}
|
|
|
| @@ -278,6 +279,19 @@ class TestAutofillDialogController
|
| #endif
|
| }
|
|
|
| + void SimulateSubmitButtonDelayBegin() {
|
| + AutofillDialogControllerImpl::SubmitButtonDelayBegin();
|
| + }
|
| +
|
| + void SimulateSubmitButtonDelayEnd() {
|
| + AutofillDialogControllerImpl::SubmitButtonDelayEndForTesting();
|
| + }
|
| +
|
| + // Returns the number of times that the submit button was delayed.
|
| + int get_submit_button_delay_count() const {
|
| + return submit_button_delay_count_;
|
| + }
|
| +
|
| MOCK_METHOD0(LoadRiskFingerprintData, void());
|
| using AutofillDialogControllerImpl::OnDidLoadRiskFingerprintData;
|
| using AutofillDialogControllerImpl::IsEditingExistingData;
|
| @@ -308,6 +322,13 @@ class TestAutofillDialogController
|
| billing_profile.Pass());
|
| }
|
|
|
| + // AutofillDialogControllerImpl calls this method before showing the dialog
|
| + // window.
|
| + virtual void SubmitButtonDelayBegin() OVERRIDE {
|
| + // Do not delay enabling the submit button in testing.
|
| + submit_button_delay_count_++;
|
| + }
|
| +
|
| private:
|
| // To specify our own metric logger.
|
| virtual const AutofillMetrics& GetMetricLogger() const OVERRIDE {
|
| @@ -320,6 +341,9 @@ class TestAutofillDialogController
|
| GURL open_tab_url_;
|
| MockNewCreditCardBubbleController* mock_new_card_bubble_controller_;
|
|
|
| + // The number of times that the submit button was delayed.
|
| + int submit_button_delay_count_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(TestAutofillDialogController);
|
| };
|
|
|
| @@ -2379,4 +2403,72 @@ TEST_F(AutofillDialogControllerTest,
|
| EXPECT_FALSE(controller()->ShouldSaveInChrome());
|
| }
|
|
|
| +TEST_F(AutofillDialogControllerTest,
|
| + SubmitButtonIsDisabled_SpinnerFinishesBeforeDelay) {
|
| + EXPECT_EQ(1, controller()->get_submit_button_delay_count());
|
| +
|
| + // Begin the submit button delay.
|
| + controller()->SimulateSubmitButtonDelayBegin();
|
| +
|
| + EXPECT_TRUE(controller()->ShouldShowSpinner());
|
| + EXPECT_FALSE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK));
|
| +
|
| + // Stop the spinner.
|
| + controller()->OnDidGetWalletItems(CompleteAndValidWalletItems());
|
| +
|
| + EXPECT_FALSE(controller()->ShouldShowSpinner());
|
| + EXPECT_FALSE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK));
|
| +
|
| + // End the submit button delay.
|
| + controller()->SimulateSubmitButtonDelayEnd();
|
| +
|
| + EXPECT_FALSE(controller()->ShouldShowSpinner());
|
| + EXPECT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK));
|
| +}
|
| +
|
| +TEST_F(AutofillDialogControllerTest,
|
| + SubmitButtonIsDisabled_SpinnerFinishesAfterDelay) {
|
| + EXPECT_EQ(1, controller()->get_submit_button_delay_count());
|
| +
|
| + // Begin the submit button delay.
|
| + controller()->SimulateSubmitButtonDelayBegin();
|
| +
|
| + EXPECT_TRUE(controller()->ShouldShowSpinner());
|
| + EXPECT_FALSE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK));
|
| +
|
| + // End the submit button delay.
|
| + controller()->SimulateSubmitButtonDelayEnd();
|
| +
|
| + EXPECT_TRUE(controller()->ShouldShowSpinner());
|
| + EXPECT_FALSE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK));
|
| +
|
| + // Stop the spinner.
|
| + controller()->OnDidGetWalletItems(CompleteAndValidWalletItems());
|
| +
|
| + EXPECT_FALSE(controller()->ShouldShowSpinner());
|
| + EXPECT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK));
|
| +}
|
| +
|
| +TEST_F(AutofillDialogControllerTest, SubmitButtonIsDisabled_NoSpinner) {
|
| + EXPECT_EQ(1, controller()->get_submit_button_delay_count());
|
| +
|
| + // Begin the submit button delay.
|
| + controller()->SimulateSubmitButtonDelayBegin();
|
| +
|
| + EXPECT_TRUE(controller()->ShouldShowSpinner());
|
| + EXPECT_FALSE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK));
|
| +
|
| + // There's no spinner in Autofill mode.
|
| + SwitchToAutofill();
|
| +
|
| + EXPECT_FALSE(controller()->ShouldShowSpinner());
|
| + EXPECT_FALSE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK));
|
| +
|
| + // End the submit button delay.
|
| + controller()->SimulateSubmitButtonDelayEnd();
|
| +
|
| + EXPECT_FALSE(controller()->ShouldShowSpinner());
|
| + EXPECT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK));
|
| +}
|
| +
|
| } // namespace autofill
|
|
|