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

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

Powered by Google App Engine
This is Rietveld 408576698