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

Unified Diff: chrome/browser/ui/views/payments/payment_sheet_view_controller.cc

Issue 2854973002: [Web Payments] Go to editors directly when "Add" buttons are pressed (Closed)
Patch Set: Fix comments. Created 3 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/views/payments/payment_sheet_view_controller.cc
diff --git a/chrome/browser/ui/views/payments/payment_sheet_view_controller.cc b/chrome/browser/ui/views/payments/payment_sheet_view_controller.cc
index e413ea99d97e6ed0a127fb2d019dc89afb57e809..1249aaa40b60ba57daeb47487300933d076f9ebf 100644
--- a/chrome/browser/ui/views/payments/payment_sheet_view_controller.cc
+++ b/chrome/browser/ui/views/payments/payment_sheet_view_controller.cc
@@ -55,13 +55,16 @@ namespace {
constexpr int kFirstTagValue = static_cast<int>(
payments::PaymentRequestCommonTags::PAYMENT_REQUEST_COMMON_TAG_MAX);
+// Tags for the buttons in the payment sheet
enum class PaymentSheetViewControllerTags {
- // The tag for the button that navigates to the Order Summary sheet.
- SHOW_ORDER_SUMMARY_BUTTON = kFirstTagValue,
- SHOW_SHIPPING_BUTTON,
- SHOW_PAYMENT_METHOD_BUTTON,
- SHOW_CONTACT_INFO_BUTTON,
- SHOW_SHIPPING_OPTION_BUTTON,
+ SHOW_ORDER_SUMMARY_BUTTON = kFirstTagValue, // Navigate to order summary
+ SHOW_SHIPPING_BUTTON, // Navigate to the shipping address screen
+ ADD_SHIPPING_BUTTON, // Navigate to the shipping address editor
+ SHOW_PAYMENT_METHOD_BUTTON, // Navigate to the payment method screen
+ ADD_PAYMENT_METHOD_BUTTON, // Navigate to the payment method editor
+ SHOW_CONTACT_INFO_BUTTON, // Navigate to the contact info screen
+ ADD_CONTACT_INFO_BUTTON, // Navigate to the contact info editor
+ SHOW_SHIPPING_OPTION_BUTTON, // Navigate to the shipping options screen
PAY_BUTTON
};
@@ -485,17 +488,42 @@ void PaymentSheetViewController::ButtonPressed(
dialog()->ShowShippingProfileSheet();
break;
+ case static_cast<int>(PaymentSheetViewControllerTags::ADD_SHIPPING_BUTTON):
+ dialog()->ShowShippingAddressEditor(
+ /*on_edited=*/base::OnceClosure(), // This is always an add.
+ /*on_added=*/
+ base::BindOnce(&PaymentRequestState::AddAutofillShippingProfile,
+ base::Unretained(state()), /*selected=*/true),
+ nullptr);
+ break;
+
case static_cast<int>(
PaymentSheetViewControllerTags::SHOW_PAYMENT_METHOD_BUTTON):
dialog()->ShowPaymentMethodSheet();
break;
case static_cast<int>(
+ PaymentSheetViewControllerTags::ADD_PAYMENT_METHOD_BUTTON):
+ dialog()->ShowCreditCardEditor(
+ /*on_edited=*/base::OnceClosure(), // This is always an add.
+ /*on_added=*/
+ base::BindOnce(&PaymentRequestState::AddAutofillPaymentInstrument,
+ base::Unretained(state()), /*selected=*/true),
+ /*credit_card=*/nullptr);
+
+ break;
+
+ case static_cast<int>(
PaymentSheetViewControllerTags::SHOW_CONTACT_INFO_BUTTON):
dialog()->ShowContactProfileSheet();
break;
case static_cast<int>(
+ PaymentSheetViewControllerTags::ADD_CONTACT_INFO_BUTTON):
+ dialog()->ShowContactInfoEditor();
+ break;
+
+ case static_cast<int>(
PaymentSheetViewControllerTags::SHOW_SHIPPING_OPTION_BUTTON):
dialog()->ShowShippingOptionSheet();
break;
@@ -626,11 +654,12 @@ std::unique_ptr<views::Button> PaymentSheetViewController::CreateShippingRow() {
return builder.CreateWithChevron(CreateShippingSectionContent(), nullptr);
} else {
builder.Id(DialogViewID::PAYMENT_SHEET_SHIPPING_ADDRESS_SECTION_BUTTON);
- base::string16 button_string = state()->shipping_profiles().size()
- ? l10n_util::GetStringUTF16(IDS_CHOOSE)
- : l10n_util::GetStringUTF16(IDS_ADD);
if (state()->shipping_profiles().empty()) {
- return builder.CreateWithButton(base::ASCIIToUTF16(""), button_string,
+ // If the button is "Add", clicking it should navigate to the editor
+ // instead of the list.
+ builder.Tag(PaymentSheetViewControllerTags::ADD_SHIPPING_BUTTON);
+ return builder.CreateWithButton(base::ASCIIToUTF16(""),
+ l10n_util::GetStringUTF16(IDS_ADD),
/*button_enabled=*/true);
} else if (state()->shipping_profiles().size() == 1) {
base::string16 truncated_content =
@@ -641,7 +670,8 @@ std::unique_ptr<views::Button> PaymentSheetViewController::CreateShippingRow() {
autofill::ADDRESS_HOME_COUNTRY,
},
6, state()->GetApplicationLocale());
- return builder.CreateWithButton(truncated_content, button_string,
+ return builder.CreateWithButton(truncated_content,
+ l10n_util::GetStringUTF16(IDS_CHOOSE),
/*button_enabled=*/true);
} else {
base::string16 format = l10n_util::GetPluralStringFUTF16(
@@ -655,9 +685,10 @@ std::unique_ptr<views::Button> PaymentSheetViewController::CreateShippingRow() {
autofill::ADDRESS_HOME_COUNTRY,
},
6, state()->GetApplicationLocale());
- return builder.CreateWithButton(
- label, format, state()->shipping_profiles().size() - 1, button_string,
- /*button_enabled=*/true);
+ return builder.CreateWithButton(label, format,
+ state()->shipping_profiles().size() - 1,
+ l10n_util::GetStringUTF16(IDS_CHOOSE),
+ /*button_enabled=*/true);
}
}
}
@@ -711,16 +742,16 @@ PaymentSheetViewController::CreatePaymentMethodRow() {
.CreateWithChevron(std::move(content_view), std::move(card_icon_view));
} else {
builder.Id(DialogViewID::PAYMENT_SHEET_PAYMENT_METHOD_SECTION_BUTTON);
- base::string16 button_string = state()->available_instruments().size()
- ? l10n_util::GetStringUTF16(IDS_CHOOSE)
- : l10n_util::GetStringUTF16(IDS_ADD);
-
if (state()->available_instruments().empty()) {
- return builder.CreateWithButton(base::ASCIIToUTF16(""), button_string,
+ // If the button is "Add", navigate to the editor directly.
+ builder.Tag(PaymentSheetViewControllerTags::ADD_PAYMENT_METHOD_BUTTON);
+ return builder.CreateWithButton(base::ASCIIToUTF16(""),
+ l10n_util::GetStringUTF16(IDS_ADD),
/*button_enabled=*/true);
} else if (state()->available_instruments().size() == 1) {
return builder.CreateWithButton(
- state()->available_instruments()[0]->label(), button_string,
+ state()->available_instruments()[0]->label(),
+ l10n_util::GetStringUTF16(IDS_CHOOSE),
/*button_enabled=*/true);
} else {
base::string16 format = l10n_util::GetPluralStringFUTF16(
@@ -728,7 +759,8 @@ PaymentSheetViewController::CreatePaymentMethodRow() {
state()->available_instruments().size() - 1);
return builder.CreateWithButton(
state()->available_instruments()[0]->label(), format,
- state()->available_instruments().size() - 1, button_string,
+ state()->available_instruments().size() - 1,
+ l10n_util::GetStringUTF16(IDS_CHOOSE),
/*button_enabled=*/true);
}
}
@@ -764,12 +796,11 @@ PaymentSheetViewController::CreateContactInfoRow() {
.CreateWithChevron(CreateContactInfoSectionContent(), nullptr);
} else {
builder.Id(DialogViewID::PAYMENT_SHEET_CONTACT_INFO_SECTION_BUTTON);
- base::string16 button_string = state()->contact_profiles().size()
- ? l10n_util::GetStringUTF16(IDS_CHOOSE)
- : l10n_util::GetStringUTF16(IDS_ADD);
-
if (state()->contact_profiles().empty()) {
- return builder.CreateWithButton(base::ASCIIToUTF16(""), button_string,
+ // If the button is "Add", navigate directly to the editor.
+ builder.Tag(PaymentSheetViewControllerTags::ADD_CONTACT_INFO_BUTTON);
+ return builder.CreateWithButton(base::ASCIIToUTF16(""),
+ l10n_util::GetStringUTF16(IDS_ADD),
/*button_enabled=*/true);
} else if (state()->contact_profiles().size() == 1) {
base::string16 truncated_content =
@@ -780,7 +811,8 @@ PaymentSheetViewController::CreateContactInfoRow() {
autofill::ADDRESS_HOME_COUNTRY,
},
6, state()->GetApplicationLocale());
- return builder.CreateWithButton(truncated_content, button_string,
+ return builder.CreateWithButton(truncated_content,
+ l10n_util::GetStringUTF16(IDS_CHOOSE),
/*button_enabled=*/true);
} else {
base::string16 preview =
@@ -794,9 +826,9 @@ PaymentSheetViewController::CreateContactInfoRow() {
base::string16 format = l10n_util::GetPluralStringFUTF16(
IDS_PAYMENT_REQUEST_CONTACTS_PREVIEW,
state()->contact_profiles().size() - 1);
- return builder.CreateWithButton(preview, format,
- state()->contact_profiles().size() - 1,
- button_string, /*button_enabled=*/true);
+ return builder.CreateWithButton(
+ preview, format, state()->contact_profiles().size() - 1,
+ l10n_util::GetStringUTF16(IDS_CHOOSE), /*button_enabled=*/true);
}
}
}

Powered by Google App Engine
This is Rietveld 408576698