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

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

Issue 2730123002: [Web Payments] Add inline items to the Order Summary section. (Closed)
Patch Set: Rebase Created 3 years, 10 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 8fbc5f0260c697055a589cb3f066b9367c048258..089c51aca4756e3ccaf0fd1190062f9a59af08e6 100644
--- a/chrome/browser/ui/views/payments/payment_sheet_view_controller.cc
+++ b/chrome/browser/ui/views/payments/payment_sheet_view_controller.cc
@@ -12,6 +12,7 @@
#include "base/macros.h"
#include "base/memory/ptr_util.h"
+#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/browser_process.h"
@@ -164,6 +165,20 @@ std::unique_ptr<views::Button> CreatePaymentSheetRow(
return std::move(row);
}
+std::unique_ptr<views::GridLayout> CreateOrderSummarySectionContainerLayout(
Mathieu 2017/03/06 15:30:45 Let's document this a bit, including what |host| a
anthonyvd 2017/03/06 16:00:21 Oops, good call. Done.
+ views::View* host,
+ bool trailing) {
+ std::unique_ptr<views::GridLayout> layout =
+ base::MakeUnique<views::GridLayout>(host);
+
+ views::ColumnSet* columns = layout->AddColumnSet(0);
+ columns->AddColumn(
+ trailing ? views::GridLayout::TRAILING : views::GridLayout::LEADING,
+ views::GridLayout::LEADING, 1, views::GridLayout::USE_PREF, 0, 0);
+
+ return layout;
+}
+
} // namespace
PaymentSheetViewController::PaymentSheetViewController(
@@ -295,26 +310,80 @@ PaymentSheetViewController::CreateOrderSummarySectionContent() {
request()->details()->total->amount->currency_system,
g_browser_process->GetApplicationLocale());
base::string16 label_value = l10n_util::GetStringFUTF16(
- IDS_PAYMENT_REQUEST_ORDER_SUMMARY_SECTION_TOTAL_FORMAT,
- base::UTF8ToUTF16(request()->details()->total->label),
+ IDS_PAYMENT_REQUEST_ORDER_SUMMARY_SHEET_TOTAL_FORMAT,
base::UTF8ToUTF16(formatter->formatted_currency_code()),
formatter->Format(request()->details()->total->amount->value));
- return base::MakeUnique<views::Label>(label_value);
+ return CreateBoldLabel(label_value);
}
// Creates the Order Summary row, which contains an "Order Summary" label,
-// a Total Amount label, and a Chevron.
+// an inline list of display items, a Total Amount label, and a Chevron.
// +----------------------------------------------+
-// | Order Summary Total USD $12.34 > |
+// | Order Summary Item 1 $ 1.34 |
+// | Item 2 $ 2.00 > |
+// | 2 more items... |
+// | Total USD $12.34 |
// +----------------------------------------------+
std::unique_ptr<views::Button>
PaymentSheetViewController::CreatePaymentSheetSummaryRow() {
+ std::unique_ptr<views::View> item_summary = base::MakeUnique<views::View>();
Mathieu 2017/03/06 15:30:48 nit: item_summaries?
anthonyvd 2017/03/06 16:00:21 Done.
+ std::unique_ptr<views::GridLayout> item_summary_layout =
+ CreateOrderSummarySectionContainerLayout(item_summary.get(),
+ false /* trailing */);
Mathieu 2017/03/06 15:30:49 nit: would prefer /*trailing=*/false otherwise it
anthonyvd 2017/03/06 16:00:21 Hah, didn't think about that! Done. I'll prefer th
+
+ std::unique_ptr<views::View> item_amounts = base::MakeUnique<views::View>();
+ std::unique_ptr<views::GridLayout> item_amounts_layout =
+ CreateOrderSummarySectionContainerLayout(item_amounts.get(),
+ true /* trailing */);
+
+ const std::vector<mojom::PaymentItemPtr>& items =
+ request()->details()->display_items;
+ // The inline items section contains the first 2 display items of the
+ // request's details, followed by a label indicating "N more items..." if
+ // there are more than 2 items in the details. The total label and amount
+ // always follow.
+
Mathieu 2017/03/06 15:30:49 nit: remove extra line
anthonyvd 2017/03/06 16:00:20 Done.
+ for (size_t i = 0; i < items.size() && i < 2; ++i) {
Mathieu 2017/03/06 15:30:45 constexpr int kMaxNumberOfItemsShown = 2; and reus
anthonyvd 2017/03/06 16:00:21 Done.
+ item_summary_layout->StartRow(0, 0);
+ item_summary_layout->AddView(
+ new views::Label(base::ASCIIToUTF16(items[i]->label)));
+
+ item_amounts_layout->StartRow(0, 0);
+ item_amounts_layout->AddView(new views::Label(
+ request()->GetFormattedCurrencyAmount(items[i]->amount->value)));
Mathieu 2017/03/06 15:30:47 this is nice! Could we update it in order_summary_
anthonyvd 2017/03/06 16:00:21 Sure, done.
+ }
+
+ int hidden_item_count = items.size() - 2;
+ if (hidden_item_count > 0) {
+ item_summary_layout->StartRow(0, 0);
+ views::Label* label = new views::Label(
+ l10n_util::GetStringFUTF16(IDS_PAYMENT_REQUEST_ORDER_SUMMARY_MORE_ITEMS,
+ base::IntToString16(hidden_item_count)));
+ label->SetAutoColorReadabilityEnabled(false);
+ constexpr SkColor kMoreItemsLightGray = 0xFF757575;
Mathieu 2017/03/06 15:30:49 In editor view controller I was doing this: lab
anthonyvd 2017/03/06 16:00:20 (1) Done. (2) It looks like SetAutoColorReadabilit
+ label->SetEnabledColor(kMoreItemsLightGray);
+ item_summary_layout->AddView(label);
+
+ item_amounts_layout->StartRow(0, 0);
+ item_amounts_layout->AddView(new views::Label(base::ASCIIToUTF16("")));
+ }
+
+ item_summary_layout->StartRow(0, 0);
+ item_summary_layout->AddView(
+ CreateBoldLabel(base::ASCIIToUTF16(request()->details()->total->label))
Mathieu 2017/03/06 15:30:49 Where is the total amount being added?
anthonyvd 2017/03/06 16:00:21 The CreateOrderSummarySectionContent() call below
+ .release());
+
+ item_amounts_layout->StartRow(0, 0);
+ item_amounts_layout->AddView(CreateOrderSummarySectionContent().release());
+
+ item_summary->SetLayoutManager(item_summary_layout.release());
+ item_amounts->SetLayoutManager(item_amounts_layout.release());
+
std::unique_ptr<views::Button> section = CreatePaymentSheetRow(
this,
l10n_util::GetStringUTF16(IDS_PAYMENT_REQUEST_ORDER_SUMMARY_SECTION_NAME),
- std::unique_ptr<views::View>(nullptr),
- CreateOrderSummarySectionContent(),
+ std::move(item_summary), std::move(item_amounts),
widest_name_column_view_width_);
section->set_tag(static_cast<int>(
PaymentSheetViewControllerTags::SHOW_ORDER_SUMMARY_BUTTON));

Powered by Google App Engine
This is Rietveld 408576698