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

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

Issue 2768133002: [Web Payments] Refactor sheet display to allow updating view content (Closed)
Patch Set: Add comments. Created 3 years, 9 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 5b1eba8f80a517d577ffe3c92fe8f5fd24a98271..b6d15fd4d6bd360765f6d9672e25c347b2484271 100644
--- a/chrome/browser/ui/views/payments/payment_sheet_view_controller.cc
+++ b/chrome/browser/ui/views/payments/payment_sheet_view_controller.cc
@@ -194,10 +194,8 @@ PaymentSheetViewController::PaymentSheetViewController(
PaymentRequestState* state,
PaymentRequestDialogView* dialog)
: PaymentRequestSheetController(spec, state, dialog),
- container_view_(base::MakeUnique<views::View>()),
pay_button_(nullptr),
widest_name_column_view_width_(ComputeWidestNameColumnViewWidth()) {
- container_view_->set_owned_by_client();
state->AddObserver(this);
}
@@ -205,25 +203,9 @@ PaymentSheetViewController::~PaymentSheetViewController() {
state()->RemoveObserver(this);
}
-std::unique_ptr<views::View> PaymentSheetViewController::CreateView() {
- std::unique_ptr<views::View> content_view = base::MakeUnique<views::View>();
- content_view->SetLayoutManager(new views::FillLayout);
-
- UpdateContentView();
- content_view->AddChildView(container_view_.get());
-
- return CreatePaymentView(
- CreateSheetHeaderView(
- false,
- l10n_util::GetStringUTF16(IDS_PAYMENT_REQUEST_PAYMENT_SHEET_TITLE),
- this),
- std::move(content_view));
-}
-
void PaymentSheetViewController::OnSelectedInformationChanged() {
UpdatePayButtonState(state()->is_ready_to_pay());
UpdateContentView();
- container_view_->Layout();
}
std::unique_ptr<views::Button>
@@ -238,6 +220,40 @@ PaymentSheetViewController::CreatePrimaryButton() {
return button;
}
+bool PaymentSheetViewController::ShouldShowHeaderBackArrow() {
+ return false;
+}
+
+base::string16 PaymentSheetViewController::GetSheetTitle() {
+ return l10n_util::GetStringUTF16(IDS_PAYMENT_REQUEST_PAYMENT_SHEET_TITLE);
+}
+
+void PaymentSheetViewController::FillContentView(views::View* content_view) {
+ views::GridLayout* layout = new views::GridLayout(content_view);
+ content_view->SetLayoutManager(layout);
+ views::ColumnSet* columns = layout->AddColumnSet(0);
+ columns->AddColumn(views::GridLayout::FILL, views::GridLayout::CENTER, 1,
+ views::GridLayout::USE_PREF, 0, 0);
+
+ // The shipping address and contact info rows are optional.
+ layout->StartRow(0, 0);
+ layout->AddView(CreatePaymentSheetSummaryRow().release());
+
+ if (spec()->request_shipping()) {
+ layout->StartRow(0, 0);
+ layout->AddView(CreateShippingRow().release());
+ layout->StartRow(0, 0);
+ layout->AddView(CreateShippingOptionRow().release());
+ }
+ layout->StartRow(0, 0);
+ layout->AddView(CreatePaymentMethodRow().release());
+ if (spec()->request_payer_name() || spec()->request_payer_email() ||
+ spec()->request_payer_phone()) {
+ layout->StartRow(0, 0);
+ layout->AddView(CreateContactInfoRow().release());
+ }
+}
+
// Adds the product logo to the footer.
// +---------------------------------------------------------+
// | (•) chrome | PAY | CANCEL |
@@ -303,33 +319,6 @@ void PaymentSheetViewController::UpdatePayButtonState(bool enabled) {
pay_button_->SetEnabled(enabled);
}
-void PaymentSheetViewController::UpdateContentView() {
- container_view_->RemoveAllChildViews(/*delete_children=*/true);
- views::GridLayout* layout = new views::GridLayout(container_view_.get());
- container_view_->SetLayoutManager(layout);
- views::ColumnSet* columns = layout->AddColumnSet(0);
- columns->AddColumn(views::GridLayout::FILL, views::GridLayout::CENTER, 1,
- views::GridLayout::USE_PREF, 0, 0);
-
- // The shipping address and contact info rows are optional.
- layout->StartRow(0, 0);
- layout->AddView(CreatePaymentSheetSummaryRow().release());
-
- if (spec()->request_shipping()) {
- layout->StartRow(0, 0);
- layout->AddView(CreateShippingRow().release());
- layout->StartRow(0, 0);
- layout->AddView(CreateShippingOptionRow().release());
- }
- layout->StartRow(0, 0);
- layout->AddView(CreatePaymentMethodRow().release());
- if (spec()->request_payer_name() || spec()->request_payer_email() ||
- spec()->request_payer_phone()) {
- layout->StartRow(0, 0);
- layout->AddView(CreateContactInfoRow().release());
- }
-}
-
// Creates the Order Summary row, which contains an "Order Summary" label,
// an inline list of display items, a Total Amount label, and a Chevron.
// +----------------------------------------------+

Powered by Google App Engine
This is Rietveld 408576698