| OLD | NEW |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/views/payments/payment_method_view_controller.h" | 5 #include "chrome/browser/ui/views/payments/payment_method_view_controller.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| 11 #include "chrome/browser/browser_process.h" | 11 #include "chrome/browser/browser_process.h" |
| 12 #include "chrome/browser/ui/views/payments/payment_request_dialog_view.h" | 12 #include "chrome/browser/ui/views/payments/payment_request_dialog_view.h" |
| 13 #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" | 13 #include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h" |
| 14 #include "chrome/browser/ui/views/payments/payment_request_row_view.h" | 14 #include "chrome/browser/ui/views/payments/payment_request_row_view.h" |
| 15 #include "chrome/browser/ui/views/payments/payment_request_views_util.h" | 15 #include "chrome/browser/ui/views/payments/payment_request_views_util.h" |
| 16 #include "chrome/grit/generated_resources.h" | 16 #include "chrome/grit/generated_resources.h" |
| 17 #include "components/autofill/core/browser/autofill_type.h" | 17 #include "components/autofill/core/browser/autofill_type.h" |
| 18 #include "components/autofill/core/browser/credit_card.h" | 18 #include "components/autofill/core/browser/credit_card.h" |
| 19 #include "components/payments/content/payment_request.h" | |
| 20 #include "components/payments/content/payment_request_state.h" | 19 #include "components/payments/content/payment_request_state.h" |
| 21 #include "components/strings/grit/components_strings.h" | 20 #include "components/strings/grit/components_strings.h" |
| 22 #include "third_party/skia/include/core/SkColor.h" | 21 #include "third_party/skia/include/core/SkColor.h" |
| 23 #include "ui/base/l10n/l10n_util.h" | 22 #include "ui/base/l10n/l10n_util.h" |
| 24 #include "ui/gfx/paint_vector_icon.h" | 23 #include "ui/gfx/paint_vector_icon.h" |
| 25 #include "ui/views/controls/button/label_button.h" | 24 #include "ui/views/controls/button/label_button.h" |
| 26 #include "ui/views/controls/button/md_text_button.h" | 25 #include "ui/views/controls/button/md_text_button.h" |
| 27 #include "ui/views/layout/box_layout.h" | 26 #include "ui/views/layout/box_layout.h" |
| 28 #include "ui/views/layout/grid_layout.h" | 27 #include "ui/views/layout/grid_layout.h" |
| 29 #include "ui/views/vector_icons.h" | 28 #include "ui/views/vector_icons.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 40 // |kFirstTagValue| not to conflict with tags common to all views. | 39 // |kFirstTagValue| not to conflict with tags common to all views. |
| 41 ADD_CREDIT_CARD_BUTTON = kFirstTagValue, | 40 ADD_CREDIT_CARD_BUTTON = kFirstTagValue, |
| 42 }; | 41 }; |
| 43 | 42 |
| 44 class PaymentMethodListItem : public payments::PaymentRequestItemList::Item { | 43 class PaymentMethodListItem : public payments::PaymentRequestItemList::Item { |
| 45 public: | 44 public: |
| 46 // Does not take ownership of |card|, which should not be null and should | 45 // Does not take ownership of |card|, which should not be null and should |
| 47 // outlive this object. |list| is the PaymentRequestItemList object that will | 46 // outlive this object. |list| is the PaymentRequestItemList object that will |
| 48 // own this. | 47 // own this. |
| 49 PaymentMethodListItem(autofill::CreditCard* card, | 48 PaymentMethodListItem(autofill::CreditCard* card, |
| 50 PaymentRequest* request, | 49 PaymentRequestSpec* spec, |
| 50 PaymentRequestState* state, |
| 51 PaymentRequestItemList* list, | 51 PaymentRequestItemList* list, |
| 52 bool selected) | 52 bool selected) |
| 53 : payments::PaymentRequestItemList::Item(request, list, selected), | 53 : payments::PaymentRequestItemList::Item(spec, state, list, selected), |
| 54 card_(card) {} | 54 card_(card) {} |
| 55 ~PaymentMethodListItem() override {} | 55 ~PaymentMethodListItem() override {} |
| 56 | 56 |
| 57 private: | 57 private: |
| 58 // payments::PaymentRequestItemList::Item: | 58 // payments::PaymentRequestItemList::Item: |
| 59 std::unique_ptr<views::View> CreateItemView() override { | 59 std::unique_ptr<views::View> CreateItemView() override { |
| 60 std::unique_ptr<PaymentRequestRowView> row = | 60 std::unique_ptr<PaymentRequestRowView> row = |
| 61 base::MakeUnique<PaymentRequestRowView>(this); | 61 base::MakeUnique<PaymentRequestRowView>(this); |
| 62 views::GridLayout* layout = new views::GridLayout(row.get()); | 62 views::GridLayout* layout = new views::GridLayout(row.get()); |
| 63 layout->SetInsets( | 63 layout->SetInsets( |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 | 119 |
| 120 return std::move(row); | 120 return std::move(row); |
| 121 } | 121 } |
| 122 | 122 |
| 123 void SelectedStateChanged() override { | 123 void SelectedStateChanged() override { |
| 124 // This could be called before CreateItemView, so before |checkmark_| is | 124 // This could be called before CreateItemView, so before |checkmark_| is |
| 125 // instantiated. | 125 // instantiated. |
| 126 if (checkmark_) | 126 if (checkmark_) |
| 127 checkmark_->SetVisible(selected()); | 127 checkmark_->SetVisible(selected()); |
| 128 | 128 |
| 129 request()->state()->SetSelectedCreditCard(card_); | 129 state()->SetSelectedCreditCard(card_); |
| 130 } | 130 } |
| 131 | 131 |
| 132 // views::ButtonListener: | 132 // views::ButtonListener: |
| 133 void ButtonPressed(views::Button* sender, const ui::Event& event) override { | 133 void ButtonPressed(views::Button* sender, const ui::Event& event) override { |
| 134 if (IsComplete()) { | 134 if (IsComplete()) { |
| 135 list()->SelectItem(this); | 135 list()->SelectItem(this); |
| 136 } else { | 136 } else { |
| 137 // TODO(anthonyvd): Display the editor, pre-populated with the data that | 137 // TODO(anthonyvd): Display the editor, pre-populated with the data that |
| 138 // already exists in |card|. | 138 // already exists in |card|. |
| 139 } | 139 } |
| 140 } | 140 } |
| 141 | 141 |
| 142 bool IsComplete() const { | 142 bool IsComplete() const { |
| 143 // TODO(anthonyvd): Hook this up to the card completedness logic when it's | 143 // TODO(anthonyvd): Hook this up to the card completedness logic when it's |
| 144 // implemented in PaymentRequest. | 144 // implemented in PaymentRequest. |
| 145 return true; | 145 return true; |
| 146 } | 146 } |
| 147 | 147 |
| 148 autofill::CreditCard* card_; | 148 autofill::CreditCard* card_; |
| 149 std::unique_ptr<views::ImageView> checkmark_; | 149 std::unique_ptr<views::ImageView> checkmark_; |
| 150 | 150 |
| 151 DISALLOW_COPY_AND_ASSIGN(PaymentMethodListItem); | 151 DISALLOW_COPY_AND_ASSIGN(PaymentMethodListItem); |
| 152 }; | 152 }; |
| 153 | 153 |
| 154 } // namespace | 154 } // namespace |
| 155 | 155 |
| 156 PaymentMethodViewController::PaymentMethodViewController( | 156 PaymentMethodViewController::PaymentMethodViewController( |
| 157 PaymentRequest* request, | 157 PaymentRequestSpec* spec, |
| 158 PaymentRequestState* state, |
| 158 PaymentRequestDialogView* dialog) | 159 PaymentRequestDialogView* dialog) |
| 159 : PaymentRequestSheetController(request, dialog) { | 160 : PaymentRequestSheetController(spec, state, dialog) { |
| 160 const std::vector<autofill::CreditCard*>& available_cards = | 161 const std::vector<autofill::CreditCard*>& available_cards = |
| 161 request->state()->credit_cards(); | 162 state->credit_cards(); |
| 162 | 163 |
| 163 for (autofill::CreditCard* card : available_cards) { | 164 for (autofill::CreditCard* card : available_cards) { |
| 164 std::unique_ptr<PaymentMethodListItem> item = | 165 std::unique_ptr<PaymentMethodListItem> item = |
| 165 base::MakeUnique<PaymentMethodListItem>( | 166 base::MakeUnique<PaymentMethodListItem>( |
| 166 card, request, &payment_method_list_, | 167 card, spec, state, &payment_method_list_, |
| 167 card == request->state()->selected_credit_card()); | 168 card == state->selected_credit_card()); |
| 168 payment_method_list_.AddItem(std::move(item)); | 169 payment_method_list_.AddItem(std::move(item)); |
| 169 } | 170 } |
| 170 } | 171 } |
| 171 | 172 |
| 172 PaymentMethodViewController::~PaymentMethodViewController() {} | 173 PaymentMethodViewController::~PaymentMethodViewController() {} |
| 173 | 174 |
| 174 std::unique_ptr<views::View> PaymentMethodViewController::CreateView() { | 175 std::unique_ptr<views::View> PaymentMethodViewController::CreateView() { |
| 175 std::unique_ptr<views::View> list_view = | 176 std::unique_ptr<views::View> list_view = |
| 176 payment_method_list_.CreateListView(); | 177 payment_method_list_.CreateListView(); |
| 177 list_view->set_id( | 178 list_view->set_id( |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 PaymentMethodViewControllerTags::ADD_CREDIT_CARD_BUTTON): | 211 PaymentMethodViewControllerTags::ADD_CREDIT_CARD_BUTTON): |
| 211 dialog()->ShowCreditCardEditor(); | 212 dialog()->ShowCreditCardEditor(); |
| 212 break; | 213 break; |
| 213 default: | 214 default: |
| 214 PaymentRequestSheetController::ButtonPressed(sender, event); | 215 PaymentRequestSheetController::ButtonPressed(sender, event); |
| 215 break; | 216 break; |
| 216 } | 217 } |
| 217 } | 218 } |
| 218 | 219 |
| 219 } // namespace payments | 220 } // namespace payments |
| OLD | NEW |