Chromium Code Reviews| 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..dfadcd485b81a83a657f26dc93fe5ac4e116af67 100644 |
| --- a/chrome/browser/ui/views/payments/payment_sheet_view_controller.cc |
| +++ b/chrome/browser/ui/views/payments/payment_sheet_view_controller.cc |
| @@ -59,8 +59,11 @@ enum class PaymentSheetViewControllerTags { |
| // The tag for the button that navigates to the Order Summary sheet. |
|
Mathieu
2017/05/02 19:05:36
fix comment plz
|
| SHOW_ORDER_SUMMARY_BUTTON = kFirstTagValue, |
| SHOW_SHIPPING_BUTTON, |
| + ADD_SHIPPING_BUTTON, |
| SHOW_PAYMENT_METHOD_BUTTON, |
| + ADD_PAYMENT_METHOD_BUTTON, |
| SHOW_CONTACT_INFO_BUTTON, |
| + ADD_CONTACT_INFO_BUTTON, |
| SHOW_SHIPPING_OPTION_BUTTON, |
| 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); |
| } |
| } |
| } |