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

Side by Side Diff: chrome/browser/ui/views/payments/payment_method_view_controller.cc

Issue 2748133004: [Payments] View controllers no longer have access to PaymentRequest (Closed)
Patch Set: Initial 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 unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698