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

Unified Diff: chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc

Issue 13625002: Change the behavior of the [X] Save details to Wallet checkbox notification to: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . 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 side-by-side diff with in-line comments
Download patch
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 d47e9914d6638003bccc819885733829f779d88b..036816912e5ca06c2721f8aaeaf24de4054a1130 100644
--- a/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc
+++ b/chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc
@@ -52,7 +52,6 @@ class TestAutofillDialogView : public AutofillDialogView {
OVERRIDE {}
virtual string16 GetCvc() OVERRIDE { return string16(); }
virtual bool UseBillingForShipping() OVERRIDE { return false; }
- virtual bool SaveDetailsInWallet() OVERRIDE { return false; }
virtual bool SaveDetailsLocally() OVERRIDE { return false; }
virtual const content::NavigationController* ShowSignIn() OVERRIDE {
return NULL;
@@ -143,7 +142,8 @@ class TestAutofillDialogController : public AutofillDialogControllerImpl {
metric_logger_(metric_logger),
ALLOW_THIS_IN_INITIALIZER_LIST(test_wallet_client_(
Profile::FromBrowserContext(contents->GetBrowserContext())->
- GetRequestContext(), this)) {}
+ GetRequestContext(), this)),
+ is_first_run_(true) {}
virtual ~TestAutofillDialogController() {}
virtual AutofillDialogView* CreateView() OVERRIDE {
@@ -166,6 +166,8 @@ class TestAutofillDialogController : public AutofillDialogControllerImpl {
return &test_wallet_client_;
}
+ void set_is_first_run(bool is_first_run) { is_first_run_ = is_first_run; }
+
protected:
virtual PersonalDataManager* GetManager() OVERRIDE {
return &test_manager_;
@@ -175,6 +177,10 @@ class TestAutofillDialogController : public AutofillDialogControllerImpl {
return &test_wallet_client_;
}
+ virtual bool IsFirstRun() const OVERRIDE {
+ return is_first_run_;
+ }
+
private:
// To specify our own metric logger.
virtual const AutofillMetrics& GetMetricLogger() const OVERRIDE {
@@ -184,6 +190,7 @@ class TestAutofillDialogController : public AutofillDialogControllerImpl {
const AutofillMetrics& metric_logger_;
TestPersonalDataManager test_manager_;
testing::NiceMock<TestWalletClient> test_wallet_client_;
+ bool is_first_run_;
DISALLOW_COPY_AND_ASSIGN(TestAutofillDialogController);
};
@@ -255,7 +262,8 @@ class AutofillDialogControllerTest : public testing::Test {
}
void SetUpWallet() {
- controller()->MenuModelForAccountChooser()->ActivatedAt(0);
+ controller()->MenuModelForAccountChooser()->ActivatedAt(
+ AccountChooserModel::kWalletItemId);
controller()->OnUserNameFetchSuccess("user@example.com");
}
@@ -508,10 +516,6 @@ TEST_F(AutofillDialogControllerTest, VerifyCvv) {
EXPECT_FALSE(
NotificationsOfType(DialogNotification::REQUIRED_ACTION).empty());
- const std::vector<DialogNotification>& notifications =
- NotificationsOfType(DialogNotification::WALLET_USAGE_CONFIRMATION);
- EXPECT_FALSE(notifications.front().interactive());
-
EXPECT_FALSE(controller()->SectionIsActive(SECTION_EMAIL));
EXPECT_FALSE(controller()->SectionIsActive(SECTION_SHIPPING));
EXPECT_TRUE(controller()->SectionIsActive(SECTION_CC_BILLING));
@@ -568,8 +572,8 @@ TEST_F(AutofillDialogControllerTest, ChangeAccountDuringSubmit) {
ui::MenuModel* account_menu = controller()->MenuModelForAccountChooser();
ASSERT_TRUE(account_menu);
ASSERT_GE(2, account_menu->GetItemCount());
- account_menu->ActivatedAt(0);
- account_menu->ActivatedAt(1);
+ account_menu->ActivatedAt(AccountChooserModel::kWalletItemId);
+ account_menu->ActivatedAt(AccountChooserModel::kAutofillItemId);
EXPECT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK));
EXPECT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_CANCEL));
@@ -617,11 +621,103 @@ TEST_F(AutofillDialogControllerTest, ChangeAccountDuringVerifyCvv) {
ui::MenuModel* account_menu = controller()->MenuModelForAccountChooser();
ASSERT_TRUE(account_menu);
ASSERT_GE(2, account_menu->GetItemCount());
- account_menu->ActivatedAt(0);
- account_menu->ActivatedAt(1);
+ account_menu->ActivatedAt(AccountChooserModel::kWalletItemId);
+ account_menu->ActivatedAt(AccountChooserModel::kAutofillItemId);
EXPECT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_OK));
EXPECT_TRUE(controller()->IsDialogButtonEnabled(ui::DIALOG_BUTTON_CANCEL));
}
+TEST_F(AutofillDialogControllerTest, WalletErrorNotification) {
+ SetUpWallet();
+
+ controller()->OnWalletError(wallet::WalletClient::UNKNOWN_ERROR);
+
+ EXPECT_EQ(1U, NotificationsOfType(
+ DialogNotification::WALLET_ERROR).size());
+
+ // No promos or usage confirmations should show if there was a Wallet error.
+ EXPECT_TRUE(NotificationsOfType(
+ DialogNotification::WALLET_SIGNIN_PROMO).empty());
+ EXPECT_TRUE(NotificationsOfType(
+ DialogNotification::WALLET_USAGE_CONFIRMATION).empty());
+}
+
+TEST_F(AutofillDialogControllerTest, WalletDetailsExplanation) {
+ SetUpWallet();
+
+ scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems();
+ wallet_items->AddInstrument(wallet::GetTestMaskedInstrument());
+ wallet_items->AddAddress(wallet::GetTestShippingAddress());
+ controller()->OnDidGetWalletItems(wallet_items.Pass());
+
+ // Explanatory messages and usage confirmations are mutually exclusive.
+ EXPECT_EQ(1U, NotificationsOfType(
+ DialogNotification::EXPLANATORY_MESSAGE).size());
+ EXPECT_TRUE(NotificationsOfType(
+ DialogNotification::WALLET_USAGE_CONFIRMATION).empty());
+
+ // Switch to using Autofill, no explanatory message should show.
+ ui::MenuModel* account_menu = controller()->MenuModelForAccountChooser();
+ account_menu->ActivatedAt(AccountChooserModel::kAutofillItemId);
+ EXPECT_TRUE(NotificationsOfType(
+ DialogNotification::EXPLANATORY_MESSAGE).empty());
+
+ // Switch to Wallet, pretend this isn't first run. No message should show.
+ account_menu->ActivatedAt(AccountChooserModel::kWalletItemId);
+ controller()->set_is_first_run(false);
+ EXPECT_TRUE(NotificationsOfType(
+ DialogNotification::EXPLANATORY_MESSAGE).empty());
+}
+
+TEST_F(AutofillDialogControllerTest, SaveDetailsInWallet) {
+ SetUpWallet();
+
+ scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems();
+ wallet_items->AddInstrument(wallet::GetTestMaskedInstrument());
+ controller()->OnDidGetWalletItems(wallet_items.Pass());
+
+ std::vector<DialogNotification> notifications =
+ NotificationsOfType(DialogNotification::WALLET_USAGE_CONFIRMATION);
+ EXPECT_EQ(1U, notifications.size());
+ EXPECT_TRUE(notifications.front().checked());
+ EXPECT_TRUE(notifications.front().interactive());
+
+ // Explanatory messages and usage confirmations are mutually exclusive.
+ EXPECT_TRUE(NotificationsOfType(
+ DialogNotification::EXPLANATORY_MESSAGE).empty());
+
+ // Using Autofill on second run, show an interactive, unchecked checkbox.
+ ui::MenuModel* account_model = controller()->MenuModelForAccountChooser();
+ account_model->ActivatedAt(AccountChooserModel::kAutofillItemId);
+ controller()->set_is_first_run(false);
+
+ notifications =
+ NotificationsOfType(DialogNotification::WALLET_USAGE_CONFIRMATION);
+ EXPECT_EQ(1U, notifications.size());
+ EXPECT_FALSE(notifications.front().checked());
+ EXPECT_TRUE(notifications.front().interactive());
+
+ // Notifications shouldn't be interactive while submitting.
+ account_model->ActivatedAt(AccountChooserModel::kWalletItemId);
+ controller()->OnAccept();
+ EXPECT_FALSE(NotificationsOfType(
+ DialogNotification::WALLET_USAGE_CONFIRMATION).front().interactive());
+}
+
Evan Stade 2013/04/10 04:13:09 could you add brief descriptions of what each test
Dan Beam 2013/04/10 04:51:59 Done.
+TEST_F(AutofillDialogControllerTest, NoWalletNotifications) {
+ SetUpWallet();
+ controller()->set_is_first_run(false);
+
+ scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems();
+ wallet_items->AddInstrument(wallet::GetTestMaskedInstrument());
+ wallet_items->AddAddress(wallet::GetTestShippingAddress());
+ controller()->OnDidGetWalletItems(wallet_items.Pass());
+
+ EXPECT_TRUE(NotificationsOfType(
+ DialogNotification::EXPLANATORY_MESSAGE).empty());
+ EXPECT_TRUE(NotificationsOfType(
+ DialogNotification::WALLET_USAGE_CONFIRMATION).empty());
+}
+
} // namespace autofill
« no previous file with comments | « chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc ('k') | chrome/browser/ui/autofill/autofill_dialog_models.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698