| 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 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 | 37 |
| 38 namespace { | 38 namespace { |
| 39 | 39 |
| 40 constexpr int kFirstTagValue = static_cast<int>( | 40 constexpr int kFirstTagValue = static_cast<int>( |
| 41 payments::PaymentRequestCommonTags::PAYMENT_REQUEST_COMMON_TAG_MAX); | 41 payments::PaymentRequestCommonTags::PAYMENT_REQUEST_COMMON_TAG_MAX); |
| 42 | 42 |
| 43 enum class PaymentMethodViewControllerTags : int { | 43 enum class PaymentMethodViewControllerTags : int { |
| 44 // The tag for the button that triggers the "add card" flow. Starts at | 44 // The tag for the button that triggers the "add card" flow. Starts at |
| 45 // |kFirstTagValue| not to conflict with tags common to all views. | 45 // |kFirstTagValue| not to conflict with tags common to all views. |
| 46 ADD_CREDIT_CARD_BUTTON = kFirstTagValue, | 46 ADD_CREDIT_CARD_BUTTON = kFirstTagValue, |
| 47 // This value is passed to inner views so they can use it as a starting tag. |
| 48 MAX_TAG, |
| 47 }; | 49 }; |
| 48 | 50 |
| 49 class PaymentMethodListItem : public payments::PaymentRequestItemList::Item { | 51 class PaymentMethodListItem : public payments::PaymentRequestItemList::Item { |
| 50 public: | 52 public: |
| 51 // Does not take ownership of |instrument|, which should not be null and | 53 // Does not take ownership of |instrument|, which should not be null and |
| 52 // should outlive this object. |list| is the PaymentRequestItemList object | 54 // should outlive this object. |list| is the PaymentRequestItemList object |
| 53 // that will own this. | 55 // that will own this. |
| 54 PaymentMethodListItem(PaymentInstrument* instrument, | 56 PaymentMethodListItem(PaymentInstrument* instrument, |
| 55 PaymentRequestSpec* spec, | 57 PaymentRequestSpec* spec, |
| 56 PaymentRequestState* state, | 58 PaymentRequestState* state, |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 // If an instrument can't be selected, PerformSelectionFallback is called, | 116 // If an instrument can't be selected, PerformSelectionFallback is called, |
| 115 // where the instrument can be made complete. | 117 // where the instrument can be made complete. |
| 116 return instrument_->IsCompleteForPayment(); | 118 return instrument_->IsCompleteForPayment(); |
| 117 } | 119 } |
| 118 | 120 |
| 119 void PerformSelectionFallback() override { | 121 void PerformSelectionFallback() override { |
| 120 switch (instrument_->type()) { | 122 switch (instrument_->type()) { |
| 121 case PaymentInstrument::Type::AUTOFILL: | 123 case PaymentInstrument::Type::AUTOFILL: |
| 122 // Since we are a list item, we only care about the on_edited callback. | 124 // Since we are a list item, we only care about the on_edited callback. |
| 123 dialog_->ShowCreditCardEditor( | 125 dialog_->ShowCreditCardEditor( |
| 124 /*on_edited=*/base::BindOnce( | 126 BackNavigationType::kPaymentSheet, |
| 125 &PaymentRequestState::SetSelectedInstrument, | 127 static_cast<int>(PaymentMethodViewControllerTags::MAX_TAG), |
| 126 base::Unretained(state()), instrument_), | 128 /*on_edited=*/ |
| 129 base::BindOnce(&PaymentRequestState::SetSelectedInstrument, |
| 130 base::Unretained(state()), instrument_), |
| 127 /*on_added=*/ | 131 /*on_added=*/ |
| 128 base::OnceCallback<void(const autofill::CreditCard&)>(), | 132 base::OnceCallback<void(const autofill::CreditCard&)>(), |
| 129 static_cast<AutofillPaymentInstrument*>(instrument_) | 133 static_cast<AutofillPaymentInstrument*>(instrument_) |
| 130 ->credit_card()); | 134 ->credit_card()); |
| 131 return; | 135 return; |
| 132 } | 136 } |
| 133 NOTREACHED(); | 137 NOTREACHED(); |
| 134 } | 138 } |
| 135 | 139 |
| 136 PaymentInstrument* instrument_; | 140 PaymentInstrument* instrument_; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 return extra_view; | 196 return extra_view; |
| 193 } | 197 } |
| 194 | 198 |
| 195 void PaymentMethodViewController::ButtonPressed(views::Button* sender, | 199 void PaymentMethodViewController::ButtonPressed(views::Button* sender, |
| 196 const ui::Event& event) { | 200 const ui::Event& event) { |
| 197 switch (sender->tag()) { | 201 switch (sender->tag()) { |
| 198 case static_cast<int>( | 202 case static_cast<int>( |
| 199 PaymentMethodViewControllerTags::ADD_CREDIT_CARD_BUTTON): | 203 PaymentMethodViewControllerTags::ADD_CREDIT_CARD_BUTTON): |
| 200 // Only provide the |on_added| callback, in response to this button. | 204 // Only provide the |on_added| callback, in response to this button. |
| 201 dialog()->ShowCreditCardEditor( | 205 dialog()->ShowCreditCardEditor( |
| 206 BackNavigationType::kPaymentSheet, |
| 207 static_cast<int>(PaymentMethodViewControllerTags::MAX_TAG), |
| 202 /*on_edited=*/base::OnceClosure(), | 208 /*on_edited=*/base::OnceClosure(), |
| 203 /*on_added=*/ | 209 /*on_added=*/ |
| 204 base::BindOnce(&PaymentRequestState::AddAutofillPaymentInstrument, | 210 base::BindOnce(&PaymentRequestState::AddAutofillPaymentInstrument, |
| 205 base::Unretained(state()), /*selected=*/true), | 211 base::Unretained(state()), /*selected=*/true), |
| 206 /*credit_card=*/nullptr); | 212 /*credit_card=*/nullptr); |
| 207 break; | 213 break; |
| 208 default: | 214 default: |
| 209 PaymentRequestSheetController::ButtonPressed(sender, event); | 215 PaymentRequestSheetController::ButtonPressed(sender, event); |
| 210 break; | 216 break; |
| 211 } | 217 } |
| 212 } | 218 } |
| 213 | 219 |
| 214 } // namespace payments | 220 } // namespace payments |
| OLD | NEW |