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